Update U-Boot by SheevaPlug oneself
ページを編集するにはログインが必要です。
SheevaPlugのU-BootでU-Bootをアップデートしてみる
Linux で出来るのはあたりまえすぎる。
今回はWindowsXPをtftpサーバに仕立て上げてやってみよう。
TFTPDver1.01をインストールする
TFTPサーバプログラム TFTPD ver1.01 (さとさん)
ダウンロードして解凍して実行。tftpで公開するフォルダを設定するだけ。
U-Bootの最新版をダウンロード・解凍
デスクトップ上に「SheevaPlug1.2」フォルダを生成し、そこにダウンロード。 同じ場所に解凍。
TFTPDver1.01の設定ウインドゥを開き、アクセスパスに「C:\Documents and Settings\XXXX\デスクトップ\SheevaPlug1.2\SheevaPlug_U-Boot\U-Boot - Image」を設定。
SheevaPlug U-Boot に入って
ブート中に、Enterをキーインして、U-Bootプロンプトを出す。
ipアドレスをセットして、saveenv。
ipaddr は、SheevaPlug。serverip は、WindowsXp/tftpマシン。
Marvell>> set ipaddr 192.168.1.222
Marvell>> set serverip 192.168.1.2
Marvell>> set netmask 255.255.255.0
Marvell>> saveenv
念の為、Envを保存しておきましょう。(端末ログのファイル化か、コピペで)
Marvell>> printenv
baudrate=115200
loads_echo=0
rootpath=/mnt/ARM_FS/
netmask=255.255.255.0
CASset=min
MALLOC_len=1
ethprime=egiga0
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
ethaddr=00:50:43:fc:27:1a
ethmtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
usb0Mode=host
yuk_ethaddr=00:00:00:EE:51:81
nandEcc=1bit
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
ethact=egiga0
arcNumber=2097
serverip=192.168.1.2
ipaddr=192.168.1.222
bootargs_root=root=/dev/mtdblock2 ro
cesvcid=ULULULULULULPPULULULULULDA
bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000
bootargs=rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=192.168.1.222:192.168.1.2:192.168.1.2:255.255.255.0:DB88FXX81:eth0:none
stdin=serial
stdout=serial
stderr=serial
console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw
mainlineLinux=yes
enaMonExt=no
enaCpuStream=no
enaWrAllo=no
pexMode=RC
disL2Cache=no
setL2CacheWT=yes
disL2Prefetch=yes
enaICPref=yes
enaDCPref=yes
sata_dma_mode=yes
netbsd_en=no
vxworks_en=no
bootdelay=3
disaMvPnp=no
enaAutoRecovery=yes
Environment size: 1432/131068 bytes
Marvell>>
いよいよ、U-Bootの更新。途中、Envの書き換えの可否を尋ねてくる。「n」と答えておこう。当然、Envの初期化を行いたい場合は「y」である。
Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand.bin
Using egiga0 device
TFTP from server 192.168.1.2; our IP address is 192.168.1.222
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
Erase 0 - 655360 ...
Copy to Nand Flash...
done
Marvell>> reset
:
:
:
Marvell>> version
U-Boot 1.1.4 (Apr 9 2009 - 12:23:12) Marvell version: 3.4.16
ちなみに、初期Env
Marvell>> printenv
baudrate=115200
loads_echo=0
ipaddr=10.4.50.165
serverip=10.4.50.5
rootpath=/mnt/ARM_FS/
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw
mainlineLinux=no
CASset=min
enaMonExt=no
enaCpuStream=no
enaWrAllo=no
pexMode=RC
disL2Cache=no
setL2CacheWT=yes
disL2Prefetch=yes
enaICPref=yes
enaDCPref=yes
sata_dma_mode=yes
MALLOC_len=1
ethprime=egiga0
netbsd_en=no
vxworks_en=no
bootargs_root=root=/dev/nfs rw
bootargs_end=:::DB88FXX81:eth0:none
image_name=uImage
bootcmd=tftpboot 0x2000000 $(image_name);setenv bootargs $(console) $(bootargs_root) nfsroot=$(serverip):$(rootpath) ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvNetConfig) $(mvPhoneConfig); bootm 0x2000000;
standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000;
bootdelay=3
disaMvPnp=no
ethaddr=00:50:43:69:05:15
ethmtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500
usb0Mode=host
yuk_ethaddr=00:00:00:EE:51:81
nandEcc=1bit
netretry=no
rcvrip=169.254.100.100
loadaddr=0x02000000
autoload=no
enaAutoRecovery=yes
ethact=egiga0
Environment size: 1295/131068 bytes
Marvell>>
このように初期化してしまったら、スタンドアロンで立ち上げる為には、最低限、以下の設定をしなければならない。
注1:bootargs, mainlineLinux, arcNumber は、Kernel 2.6.30 用の設定。
注2:各IP/MACアドレスは、各自の環境に読み替える様に。
注3:bootcmd のシングルクォーテーションは忘れずに。
Marvell>> setenv ipaddr 192.168.1.222
Marvell>> setenv serverip 192.168.1.2
Marvell>> setenv ethaddr 00:50:43:01:CA:BB
Marvell>> setenv cesvcid ULULULULULULPPULULULULULDA
Marvell>> setenv bootcmd 'nand read.e 0x800000 0x100000 0x400000; bootm 0x800000'
Marvell>> setenv bootargs rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImae),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=192.168.1.222:192.168.1.2:192.168.1.1:255.255.255.0:DB88FXX81:eth0:none
Marvell>> setenv mainlineLinux yes
Marvell>> setenv arcNumber 2097
Marvell>> saveenv
Marvell>> reset
ブート中に、Enterをキーインして、U-Bootプロンプトを出す。
ipアドレスをセットして、saveenv。
ipaddr は、SheevaPlug。serverip は、WindowsXp/tftpマシン。
Marvell>> set ipaddr 192.168.1.222 Marvell>> set serverip 192.168.1.2 Marvell>> set netmask 255.255.255.0 Marvell>> saveenv
念の為、Envを保存しておきましょう。(端末ログのファイル化か、コピペで)
Marvell>> printenv baudrate=115200 loads_echo=0 rootpath=/mnt/ARM_FS/ netmask=255.255.255.0 CASset=min MALLOC_len=1 ethprime=egiga0 bootargs_end=:::DB88FXX81:eth0:none image_name=uImage standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000; ethaddr=00:50:43:fc:27:1a ethmtu=1500 mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 usb0Mode=host yuk_ethaddr=00:00:00:EE:51:81 nandEcc=1bit netretry=no rcvrip=169.254.100.100 loadaddr=0x02000000 autoload=no ethact=egiga0 arcNumber=2097 serverip=192.168.1.2 ipaddr=192.168.1.222 bootargs_root=root=/dev/mtdblock2 ro cesvcid=ULULULULULULPPULULULULULDA bootcmd=nand read.e 0x800000 0x100000 0x400000; bootm 0x800000 bootargs=rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=192.168.1.222:192.168.1.2:192.168.1.2:255.255.255.0:DB88FXX81:eth0:none stdin=serial stdout=serial stderr=serial console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw mainlineLinux=yes enaMonExt=no enaCpuStream=no enaWrAllo=no pexMode=RC disL2Cache=no setL2CacheWT=yes disL2Prefetch=yes enaICPref=yes enaDCPref=yes sata_dma_mode=yes netbsd_en=no vxworks_en=no bootdelay=3 disaMvPnp=no enaAutoRecovery=yes Environment size: 1432/131068 bytes Marvell>>
いよいよ、U-Bootの更新。途中、Envの書き換えの可否を尋ねてくる。「n」と答えておこう。当然、Envの初期化を行いたい場合は「y」である。
Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand.bin Using egiga0 device TFTP from server 192.168.1.2; our IP address is 192.168.1.222 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 Erase 0 - 655360 ... Copy to Nand Flash... done Marvell>> reset : : : Marvell>> version U-Boot 1.1.4 (Apr 9 2009 - 12:23:12) Marvell version: 3.4.16
ちなみに、初期Env
Marvell>> printenv baudrate=115200 loads_echo=0 ipaddr=10.4.50.165 serverip=10.4.50.5 rootpath=/mnt/ARM_FS/ netmask=255.255.255.0 stdin=serial stdout=serial stderr=serial console=console=ttyS0,115200 mtdparts=nand_mtd:0x100000@0(uboot)ro,0x0@0x100000(uImage),0x1ff00000@0x100000(rootfs)rw mainlineLinux=no CASset=min enaMonExt=no enaCpuStream=no enaWrAllo=no pexMode=RC disL2Cache=no setL2CacheWT=yes disL2Prefetch=yes enaICPref=yes enaDCPref=yes sata_dma_mode=yes MALLOC_len=1 ethprime=egiga0 netbsd_en=no vxworks_en=no bootargs_root=root=/dev/nfs rw bootargs_end=:::DB88FXX81:eth0:none image_name=uImage bootcmd=tftpboot 0x2000000 $(image_name);setenv bootargs $(console) $(bootargs_root) nfsroot=$(serverip):$(rootpath) ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvNetConfig) $(mvPhoneConfig); bootm 0x2000000; standalone=fsload 0x2000000 $(image_name);setenv bootargs $(console) root=/dev/mtdblock0 rw ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvPhoneConfig); bootm 0x2000000; bootdelay=3 disaMvPnp=no ethaddr=00:50:43:69:05:15 ethmtu=1500 mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs mvNetConfig=mv_net_config=(00:11:88:0f:62:81,0:1:2:3),mtu=1500 usb0Mode=host yuk_ethaddr=00:00:00:EE:51:81 nandEcc=1bit netretry=no rcvrip=169.254.100.100 loadaddr=0x02000000 autoload=no enaAutoRecovery=yes ethact=egiga0 Environment size: 1295/131068 bytes Marvell>>
このように初期化してしまったら、スタンドアロンで立ち上げる為には、最低限、以下の設定をしなければならない。
注1:bootargs, mainlineLinux, arcNumber は、Kernel 2.6.30 用の設定。
注2:各IP/MACアドレスは、各自の環境に読み替える様に。
注3:bootcmd のシングルクォーテーションは忘れずに。
Marvell>> setenv ipaddr 192.168.1.222 Marvell>> setenv serverip 192.168.1.2 Marvell>> setenv ethaddr 00:50:43:01:CA:BB Marvell>> setenv cesvcid ULULULULULULPPULULULULULDA Marvell>> setenv bootcmd 'nand read.e 0x800000 0x100000 0x400000; bootm 0x800000' Marvell>> setenv bootargs rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImae),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1 rw ip=192.168.1.222:192.168.1.2:192.168.1.1:255.255.255.0:DB88FXX81:eth0:none Marvell>> setenv mainlineLinux yes Marvell>> setenv arcNumber 2097 Marvell>> saveenv Marvell>> reset
Keyword(s):
References: