看uboot移植也有段时间了,正巧今天想熟悉一下uboot的操作,练习一下uboot的指令。不过本人uboot尚未移植成功,于是使用的文件是网友 hugerat 的200810文件以及相应的内核和文件系统,在此表示感谢。
本人使用的是友善之臂的mini2440开发板,ubuntu 8.04开发环境,虚拟机VM6.5
以下是 hugerat发的文档,红色的是我根据我的具体情况做的修改。
**********************************************************
日前,我在网上公布了我为mini2440移植的u-boot2008.10及linux2.6.27.9。有很多朋友向我要镜像文件以方便使用。故在此放出下载地址。
u-boot+linux2.6.27.9 kernel的镜像
配套的根文件系统镜象
注:建议用纳米网盘提供的纳米机器人下载,http方式好象下载不了。(我是试用http下载的,不过很慢)
我对nand flash的空间划分如下。其中0x40000~0x50000的空间没有使用。作为保留空间。
uboot : 0x00000000 0x00030000 0
param : 0x00030000 0x000040000 0
kernel : 0x00050000 0x00200000 0
root : 0x00250000 0x03dac000 0
用mini2440的vivi将u-boot.bin烧入上述的uboot空间。方法在mini2440的说明书上有说明。我就不重复了。
烧入镜像后,记住将mini2440的启动开关拔到nand
flash上,这样,才能从我的u-boot上启动。第一次启动时,会报param
crc错误,这是因为参数区内还没有数据所致。当你保存过参数后,此错误不会再报。将bootcmd的参数改变成从nand
flash引导kernel。方法是在u-boot提示符下输入: set bootcmd 'nand read 0x31000000
0x50000 0x00200000;bootm 0x31000000'
再改变bootargs,使得从nand flash启动根文件系统。方法是在u-boot提示符下输入:set bootargs 'noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0'
为了能正常使用tftp下载,应设置serverip为tftp服务器的IP地址。例如,输入set serverip '192.168.1.80',最后输入saveenv保存参数。
打开TFTP服务器。在u-boot下输入tftp 0x30000000
uImage,稍等,即可成功下载uImage到内存中了。再输入nand erase 0x50000
0x200000删除掉kernel空间原有的数据。再输入nand write 0x30000000 0x50000
0x200000,将内存中的kernel烧入nand flash。接下来,输入tftp 30000000
rat_root,将根文件系统镜象下载到内存中,再输入nand erase 0x250000
0x3dac000将root空间内原有数据删除。再输入nand write.yaffs 0x30000000 0x250000
0x101f730,其中0x101f730是root镜象的size,一定不能写错,它可以tftp下载完毕后看到。如写错了,可能会形成假坏块。然
后,就是等待。等烧写完成后,重启开发板就可以正常引导到新版的内核中了。我移植的内核使用mdev来生成设备文件,而原配的文件系统不支持mdev,所
以我的内核只能配合我的root。
由于在宿舍路由器的接口不够用,所以暂时使用的是串口下载(哈哈,终于领悟到那个慢了,以后下东西坚决用网络下载),所幸的是之前我已经将uboot200810下载到了NAND Flash中,否则我的工作无法开展。开机进入uboot命令界面,使用loady 0x30000000 uImage下载内核镜像到0x30000000,默认是下载到0x31000000(如果没有选择参数默认下载需要对后面的参数进行相应的修改),稍
等,即可成功下载uImage到内存中了。再输入nand erase 0x50000
0x200000删除掉kernel空间原有的数据。再输入nand write 0x30000000 0x50000
0x200000,将内存中的kernel烧入nand flash。接下来,输入loady 30000000
rat_root,将根文件系统镜象下载到内存中,再输入nand erase 0x250000
0x3dac000将root空间内原有数据删除。再输入nand write.yaffs 0x30000000 0x250000
0x101f730,其中0x101f730是root镜象的size,一定不能写错,它可以串口下载完毕后看到。
**********************************************************
参考网页:http://blog.chinaunix.net/u2/75270/showart_1836713.html