OMAP4にはUSBからブートローダを読み込んで起動する機能があります。
前回 FT701W で fastboot mode に入れないか色々試していたときに、電源 OFF 時に USB に接続すると、わずかな時間だけHostPC から、USBデバイスが見えることに気づきました。
$ lsusb
(省略)
Bus 001 Device 066: ID 0451:d00f Texas Instruments, Inc.
(省略)
このVendorID, ProductID でググってみると、これが OMAP4 の USB ブートの際に使用するデバイスらしいです。
ってことは、自前のBootloaderをこれで流し込めるのでは?
一気に期待が高まりますね!
で、USB ブートさせるには HostPC 側で omap4boot と言うツールを使うらしいです。
いきなり動かすのはコワいので omap4boot の中身を調べてみました。
ざっくり書くと、以下のような流れになっているようです。
HOST-PC側
- 1st bootloader を USB で送り込んで、それをターゲットで起動。
- 1st bootloader からの応答 (0x11223344) を待つ。
- 応答が来たら 2nd bootloader を転送。
- 終了
1st Bootloader (Target)
- ペリフェラルの初期化
- USB で応答 0x11223344 を返す。
- 2nd Bootloader を USB から受信。
- ヘッダがあれば解析して Linux kernel として起動
1st Bootloader ではボードごとにペリフェラルの初期化コードが書かれています。
ATAG 作ったり ramdisk の配置とかもやっているので、u-boot だけじゃなく、Linux kernel も直接起動できそうです。
まずは 1st bootloader のペリフェラルの初期化処理を FT701W に合わせて作成する必要がありそうです。
pandaboard 用の処理はあるけど、SDRAM、GPIO や IOMUX の初期化を行うようなので pandaboard と同じじゃマズイよなぁ。
xloader も解析かなぁ。。