早いものでBeagleboard-xM(以下BB-XM)が届いて3週ほど経過しました。
本来Bootプロセスを追いきってからブログにまとめようかと思っていましたが、途中で進まなくなってしまったので一旦ここでまでの経過として記録に残しておきます。
このブログにまとめた
内容 をざっとまとめると次の通りです。
・SDカードをフォーマットする
・Xloader(MLO)をビルドして入れ替える
・u-bootをビルドして入れ替える
の3つです。
逆に次のことは実際にしていますがブログには
書いていません ・BB-XMの付属SDによる初期動作確認
・VMWare Plaerのインストール
・ubuntu 8.04のインストールおよびバージョンアップ、使い方など
BB-XMとのシリアル接続の環境ですが、私の環境ではUSB-シリアルアダプタが母艦のWin7 x64で動作しないためXP Mode上のXP Proで動作させています。ubuntuでもシリアル通信できるかもしれませんが、不慣れなためUSBシリアルのポート設定のところで進まなくなったのでそうしています
ちなみにUSB-シリアルはELECOMのUC-SGTを使っています。
(Win7 x64対応化のブログなど参考にしましたが、ことごとく失敗でした
さて、前置きが長くなりましたがここからが本番です。
まず写真です。
PCとの接続はUSB-シリアルだけです。
電源はDC5VのACアダプタを使いました(fonルータのACアダプタがちょうどよかったです)
1.SDカードのフォーマット
HP Disk Formatting Toolというものを使います。バージョン(V2.0.6)は特定のものじゃないと私の環境では動作できませんでした。
※BB-XM付属SDカードをフォーマットする場合は、必ずファイルのバックアップを取ることを推奨します。
↑カードさしてない状態で起動したときの画面
File systemはFAT32を指定してください
ちなみにこのアプリケーションは管理者として起動しないと動作しませんので、右クリックメニューから「管理者として実行」で立ち上げてください。
※ディスクフォーマットはフォーマット対象のディスクのデータを全消去しますので、くれくれも注意してくださいね
※この作業は割と時間がかかりました。気長に待ちましょう。
参考にV2.0.6のインストーラーのリンクを載せておきます(リンクはいつまで有効かわかりませんけどね)
http://www.docjelly.com/Blog/content/binary/SP27213.exe
2.ビルド環境の構築(ubuntu上)
次のサイトさんを参考にしました。
http://www.zoids-fan.net/zoids/blogn/index.php?e=67&450abbab45d32ff311d075adf2da0623003c9bc0=q952bgcmfoqa1cnndlo0h8n64l2c1124
コンパイラは、codesourceryを使いますが、これまた特定のバージョンじゃないとビルドできませんので注意してください
私は次のリンクのファイルを使いました
http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
ターミナルで次のようにします
# sudo mkdir -p /opt/omap3evm/toolchain
# sudo cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /opt/omap3evm/toolchain
# cd /opt/omap3evm/toolchain
# sudo tar -jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
# sudo rm arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
~/.bashrcを編集(追加)します
PATH=/opt/omap3evm/toolchain/arm-2009q1/bin:$PATH
続いてコンパイラのバージョン確認
# arm-none-linux-gnueabi-gcc -v
gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)
↑と返ってくることを確認
3.Xload
話が脇道にそれますが、Beagleboardの起動プロセスは次のようになっているようです。
Bootrom→Xloader(MLO)→uboot→(Linux等)
BootromはCPUのROM(多分Flashではないと思う)に書きこまれていて書き換え不可になっています。またソースも公開されていません。
Xloader(MLO)は、SDカードに配置しているのでBootRomは起動後SDカードのXloader(MLO)を探して起動させます。
Xloaderは小粒のBootloaderのためLinuxを起動できるだけの力がありません。そこで一旦u-bootを起動することになります。
u-bootはパワフルなブートローダーのためLinuxを起動できます。付属SDではAngstromというOSを起動させています。
さて本題に戻ります。
X-loadは次のサイトさんを参考にしました
http://www16.big.or.jp/~t_sasaki/emblinux/beagledev.html
http://code.google.com/p/beagleboard/wiki/BeagleSourceCode
# git://gitorious.org/x-load-omap3/mainline.git
# sudo apt-get install git-core
# mkdir omap35x-beagle
# cd omap35x-beagle
# git clone git://gitorious.org/x-load-omap3/mainline.git xloader
# cd xloader
# make distclean
# make omap3530beagle_config
# make
ここまでの処理でx-load.binというファイルができました。BB-XMで実行できる形に加工するためにはMLOというファイルに加工しないといけません*1、これにはsinGPというアプリケーションを使用します
次の処理はsinGPの取得から実行までを書いています
# wget http://beagleboard.googlecode.com/files/signGP
# chmod +x signGP
# ./signGP x-load.bin
# #x-load.bin.iftができる
# mv x-load.bin.ift MLO
sinGPのソースも見れるので確認したところこのプログラムは単にx-load.binのサイズとBB-XMの配置先のアドレスをx-load.binのバイナリのヘッダとし追加しているようです。
ちなみに私が付くっだMLOに付加された情報は
サイズ:23672(0x5C78)
RAM:0x40200800
sinGPのソースは次のリンク
http://beagleboard.googlecode.com/files/signGP.c
ちなみにOMAP37xxのアドレスマップは次の通り
Boot ROM:0x4000 0000 - 0x400F FFFF
SRAM:0x4020 0000 - 0x4020 FFFF
SDRAM:0x8000 0000 - 0x9FFF FFFF (512MB)
上記メモリマップでわかるとおりx-loaderはSRAMに配置されることになるようです。
4.u-boot
本ブログの最終工程です
u-bootは複数のgitリポジトリがあるのでどのcloneを落とすかで悩みました。
実際に何パターンか試して最終的にangstromがソースを変更しなくても動作するものを使いました。
u-bootは次のリンクを参考にしました
http://www16.big.or.jp/~t_sasaki/emblinux/beagledev.html
次のように端末で入力します
# git clone git://gitorious.org/beagleboard-validation/u-boot.git u-boot-omap3
# cd u-boot-omap3
# git pull origin validation-20100818
# make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- mrproper
# make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap3_beagle_config
# make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
※私の環境ではgit cloneには時間がかかりました(20~30分くらい)
makeは10~15程度でした
5.SDカードへコピー
上記作業でできたMLO及びu-boot.binをSDカードに書き込み、その他ファイルを付属SDからのコピペするとangstromが起動します。起動途中のカウントダウンでキーを押すとBB-XMの動作チェックコマンドを打てるようになります。
上記2ファイル以外に付属SDに収録されている。user.scr、ramdisk.gz、ramfs.img、uImage、についても作り方を書きたかったのですが、今のところuser.scrで先に進めなくて少々困り気味、もうちょっと情報が整理できたらブログにアップしたいと思います。
起動時はこんな感じです↓