LoginSignup
2
1

More than 3 years have passed since last update.

OSD335Xをカスタム基板でU-Bootをカスタムする方法(メモ)

Last updated at Posted at 2020-07-25

前回までの話

OSD335Xをカスタム基板でU-bootを動かすまで(メモ)
https://qiita.com/nonNoise/items/ef6702fd666421bd5688

今回の話

U-Bootの仕組みが少し見えてきたので、その話を。

前回の話に出た重要なコマンド

U-Bootにパッチを充てる

wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0002-U-Boot-BeagleBone-Cape-Manager.patch
wget -c https://raw.githubusercontent.com/RobertCNelson/Bootloader-Builder/master/patches/v2018.03-rc1/0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch

patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch
patch -p1 < 0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch

U-Bootのパッチ

U-Bootのパッチについて調べた。
用はU-Bootをカスタムしてオリジナルボード用にしたいんだ。
まず、Pach がそもそも何をしているかを調べた。
何かのコンパイルした内容かなと思ってソースを探していたが見当たらない。
コンパイル前にパッチ当ててるし・・・もしかして・・・
image.png

patchファイルは普通にgitのdiff情報が載ってるファイルだった。
なるほど、パッチコマンドがあったから、何か仕組みがあると思ったら、こういう仕組みか。
そうなると、パッチの差分を把握して、U-Boot本体のソースを書き換えて、差分をパッチにすると自作パッチが出来上がるのかな。
なるほどね、知らなかった。

各パッチについて

gitのdiff情報を見ていくと、どのファイルを弄ったか一目でわかるの便利

◎ 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

image.png

◎ 0002-U-Boot-BeagleBone-Cape-Manager.patch

image.png

◎ 0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch

image.png

パッチの予想

Diffを見てると、同じファイルを別々のパッチで処理してるのがいるので、順番間違えたら衝突するんじゃないかって思った。

とりあえず、ひとつづつ

◎ 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

最初に当てるパッチだね。
am335x_pocketbeagle_defconfigが一番多く修正されてる。
ここは、U-Boot/configsのブロックで、どの機能をy/nするかを設定しているそうだ。

◎ 0002-U-Boot-BeagleBone-Cape-Manager.patch

次に当てるパッチ。
board/ti/am335x/board.c が最も変更されている。
ここはボードについてのパッチを充てているような気がしている。
特に、BeagleBone-Capeという、BeagleBoneの中では少し新しめのボード
https://github.com/u-boot/u-boot/tree/master/board/ti/am335x

◎ 0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch

最後に当ててるパッチ。
board/ti/common/board_detect.c が最も変更されている。
commonなので、ボード特有のインターフェース(外部拡張機能)に対して修正しているような気がする。
https://github.com/u-boot/u-boot/tree/master/board/ti/common

で、結局どこを弄ればいいの?

わからない。結局、基礎のU-bootのソースを見て、次にパッチ3種類の差分を把握して、自分がやりたい修正パッチを当てるという流れかな。
Diffなので、修正(削除)した個所はマイナスで表示されるので、とりあえず3種類のパッチを当てて、そのうえでソースを弄ってDiffを残しておくと、再現性高いU-Bootパッチが出来上がるんじゃないかな。

気持ち、最新のU-boot版でパッチを作り直したいが、そういうのも差分理解、ソース理解があっての技なのだろう。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1