##Freescale(NXP)のARM(QorIQ)でU-Boot起動したい
FreescaleだったのがNXPに変わりいろいろ検索できなくなって面倒のため、知識とリンク集として残す。
linux SDKもマニュアルも何か微妙に古いので混乱しやすい。
###SDK
配布されているのはYoctoを使っているので非常に遅い。VirtualBoxでは24時間かかることを覚悟すべきである。
とてもじゃないが使えないし、linuxを使わないなら要らない。
U-Bootを単体でダウンロードして、U-Bootから好きなOSのカーネルを直接起動しよう。
Linux SDK for QorIQ 無駄にでかくて、どれをダウンロードすればいいか分かりにくい。マニュアルだけ参考用に。
Das U-Boot これが重要
##U-Boot
SDKのマニュアルのメモリマップにいろいろ書かれているが、最新だと一致していない。
U-Bootは進化している。
###SPL(Second Program Loader)
メモリマップにRCW+PBIが先頭にあって、別の領域にU-Boot本体があるように書いてあるが、実際は、u-boot-spl-pbl.binだけで起動できる。
PBLがRCWを読んだ後、PBIでSPLをSRAMにロードし、そちらに実行を移す。
SPLがU-bootを起動する。
これ1個書き込むだけで、RCWもPBIもU-bootも書き込み完了である。
真面目にメモリマップを見て、分離したファイルでやる意味はない。
ただし、SPLに対応していない場合は、makeしてもこのファイルは作成されない。
同じチップでも、起動する媒体(SDカード、MMC、FLASH)によってSPLが無いものがある。
順番 | 名称 | 説明 |
---|---|---|
1 | RCW | 512ビットのコンフィグ |
2 | PBI | SPLをSRAMに書くPBI |
3 | U-Boot | U-Boot本体 |
###RCW(Reset Configuration Word)を得るために
U-Bootで作って、spl-pblが付かないファイルしか出来ない場合、RCWのバイナリが必要である。(.pblがあれば、それはおそらくRCW+PBIのバイナリなので使用できる)
例によって、SDKのマニュアルには、Yoctoを使った全体buildしか書かれていない。
U-Bootのマニュアルも不十分であり、mkimageコマンドのhelpもずっと更新されていないので、正しい作成方法が分からない。
数百バイトのファイルのビルドに何時間も待てるわけもない。
有料の開発環境もない人間にはRCWを作ることはできないのか?
そんなことはない。SDKのRCWのソースだけを入手すればよい。
しかし、どこにもリンクが載ってない。3GBのでかいだけのisoイメージなんかゴミ箱に捨て以下からcloneか圧縮ファイルをDLしよう。
sdk/rcw.git
fsl-sdk-v2.0-1701.zip、fsl-sdk-v2.0-1701.tar.gz、fsl-sdk-v2.0-1701.tar.bz2あたりを持ってきて、解凍して、欲しいボードのフォルダでmakeすればよい。
RCWやPBIを変更も容易である。
何時間も掛かるYoctoなんて要らない。
コンパイル済みカーネルをどこかから持ってきた方が早い。
あとはRCWを各媒体で指定された領域に書き、PBIで指定したジャンプ先アドレスにu-bootイメージを書けばいい。今ならu-boot-dtb.bin(ファイル名はU-Bootバージョンによる)だろう。どのファイルが必要か各メーカーごとのREADMEに詳しく書いてあるだろう。