02. U-Bootを更新

By | 02/09/2009

現時点までで出荷されているSheevaPlugのu-bootには、突如としてブートしなくなるという迷惑なバグが存在していますので、更新します。

下準備として、Windows環境に3CDaemonをインストールし、tftpサーバを有効にします。
例として、デスクトップ上にtftpdというフォルダを作成し、ここをrootdirとします。
更新用のファイルをダウンロード・解凍して、tftpdフォルダに中身を突っ込みます。

ここまで出来たら、SheevaPlugをリブートし、u-bootに入りましょう。
u-bootに入る為には、シリアルコンソール接続してTeraTerm(PoderosaやHyperTerminalでも可)でCOMポートを開いた状態で起動させ、エンターキーを叩いていればプロンプトが出ます。
それでは以下、本作業です。

まずバージョンの確認です。
以下のバージョンがバグのあるバージョンです。
バージョンというよりも、()内のbuildtimeで判別します。
Marvell>> version
U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16

ここでSheevaPlugのIPアドレスを設定しておきます。
Marvell>> set ipaddr 192.168.100.248
Marvell>> set serverip 192.168.100.254
Marvell>> set netmask 255.255.255.0
Marvell>> saveenv

次に、tftpサーバが稼動しているWindowsマシンのIPを指定します。
Marvell>> set serverip 192.168.100.251

ここで書き込みの実行。
Flashを書き換えは数秒で終了しますが、途中で停電など喰らってしまうと面倒な事になってしまいますので、UPSとかがあれば使用しておきましょう。
Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand.bin

Using egiga0 device
TFTP from server 192.168.168.100; our IP address is 192.168.168.110
Filename 'u-boot-rd88f6281Sheevaplug_400db_nand.bin'.
Load address: 0x2000000
Loading: #################################################################
         ###########################
done
Bytes transferred = 470808 (72f18 hex)

**Warning**
If U-Boot Endiannes is going to change (LE->BE or BE->LE), Then Env parameters should be overriden..
Override Env parameters? (y/n) n

作業は上記で終了しましたが、もし最後のところでyを選択してパラメータを初期化してしまった場合には自動で内臓FlashのDebian/Ubuntuがブートしてこなくなりますので、以下のように設定して内臓Flashからブート出来るようにします。
Marvell>> setenv bootcmd 'nand read.e 0x800000 0x100000 0x400000; bootm 0x800000'
Marvell>> setenv bootargs 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0x000000(u-boot),0x400000@0x100000(uImage),0x1f800000@0x500000(rootfs)rw root=/dev/mtdblock2'
Marvell>> saveenv

Saving Environment to NAND...
Erasing Nand...Writing to Nand... done

リブートして再度u-bootを出し、バージョンを確認してみましょう。
Marvell>> reset
Marvell>> version
U-Boot 1.1.4 (Apr  9 2009 - 12:23:12) Marvell version: 3.4.16

無事に更新されていることを上記で確認出来たら、作業は完了です。