2011年3月21日月曜日

BeagleBoard xMでブートスクリプトの作成

BeagleBoard xMでSDカードの第1パーティションにMLO、U-BOOT、カーネル
第2パーティションにユーザランドを書き込んで、SDカードからブートすればAndroidが起動します。

実際には、U-BOOTに対してパラメータを設定します。

シリアルポートでTeraTerm等で接続して電源を入れると以下のようなメッセージが表示されるはずです。

Texas Instruments X-Loader 1.4.4ss (Aug 19 2010 - 02:49:27)→X-Loader(MLO)が起動
Beagle xM Rev A
Reading boot sector
Loading u-boot.bin from mmc→MMC(SDカード)からu-boot.binをロード

U-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46)→U-Bootが起動

(省略)
Hit any key to stop autoboot: 0→自動起動する前にエンターキーを叩く
OMAP3 beagleboard.org #→プロンプトが表示されて、U-Boot上で操作が出来ます。

上記のように途中でブートを止めてU-BOOTでの作業を行います。
具体的には以下の設定を行います。

setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw rootdelay=1 init=/init

setenv mmcboot 'mmc init;fatload mmc 0 0x80300000 uImage;bootm 0x80300000'

setenv bootcmd run mmcboot

そして、コマンドプロンプトでbootを実行します。

これでAndroidが起動します。
ただ、これを毎回打つのは面倒です。以前ですと「saveenv」コマンドで保存できたのですが、xMはNANDが無くなったせいか、確かエラーになったはずです。

ということで、ブートスクリプトを作ってSDカードに置いておけば、毎回の入力から開放されます。



●ブートスクリプトの書き方

1、元ファイルの準備
以下の内容を適当なファイル(例:boot.txt)に保存します。
setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw rootdelay=1 init=/init

setenv mmcboot 'mmc init;fatload mmc 0 0x80300000 uImage;bootm 0x80300000'

setenv bootcmd run mmcboot

2、ファイルの変換
以下のコマンドで変換します。
ブートスクリプトの名前は「boot.scr」で固定です。

$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "beagle-xm" -d ./boot.txt ./boot.scr
Image Name: beagle-xm
Created: Tue Feb 1 13:50:45 2011
Image Type: ARM Linux Script (uncompressed)
Data Size: 223 Bytes = 0.22 kB = 0.00 MB
Load Address: 0x00000000
Entry Point: 0x00000000
Contents:
Image 0: 215 Bytes = 0 kB = 0 MB
出来たファイルをfileコマンドで確認すると
$ file ./boot.scr
./boot.scr: u-boot/PPCBoot image

3、ブートスクリプトのコピー
SDカードをマウントして、第1パーティションにCopyコマンドでコピーします。

4、ブート
BeagleBoard xMにSDカードを挿して電源を入れます。
途中でエンターキーを押下せずに放っておきます。
boot.scrが自動で読み込まれて、Androidが起動するはずです。

U-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46)

OMAP3630/3730-GP ES1.0, CPU-OPP2, L3-165MHz,
OMAP3 Beagle board + LPDDR/NAND
省略
Beagle xM Rev A
Die ID #353600001bf00000015739ea0701a021
Hit any key to stop autoboot: 0
mmc1 is available
The user button is currently NOT pressed.
reading boot.scr

手動で試して問題ないことを確認してから、上記手順でブートスクリプトを作成しておけば以降は入力が不要になります。

0 件のコメント:

コメントを投稿