uboot主要命令:
nand命令集 nand flash设备的操作命令集合
nand info 显示flash设备信息。
nand device [num] 显示具体flash设备的信息。
nand erase offset size 擦除Nand Flash的 off 偏移地址处的size 字节的数据。举例:
nand erase 200000 300000
nand read loadaddr offset size 从Nand Flash的offset偏移地址处读取size 字节的数据到内存的 loadaddr地址。
nand write loadaddr offset size 把内存中loadaddr地址开始的size字节的数据写到Flash中,从偏移地址为offset的地方开始。举例:
nand write 80700000 200000 300000
bootm [addr] 引导执行内存中的内核映像。如果指定addr,则表示内核映像被加载在该内存地址,否则从默认内存地址处引导执行。举例:
bootm 80700000
nboot load_ram_addr flash_dev_num offset
从flash加载内核到物理内存,然后执行内核程序。load_ram_addr指内核文件加载到内存的地址,flash_dev_num指flash设备的编号,可以使用命令“nand device”查看开发板上的具体flash设备信息。offset指内核文件在flash中的起始偏移地址。它会自动读取到内核映像(使用mkp_w_picpath处理过的)的结束,所以不用给出读取大小。举例:
nboot 80700000 0 200000
tftpboot [loadaddr] [[host_ip:]filename] 使用tftp协议引导执行内核映像。host_ip的tftp服务器的主机IP地址,filename为内核映像文件名,loadaddr为内存地址。举例:
tftpboot 80200000 192.168.0.6:uImage
nfs [loadaddr] [[host_ip:]filename] 使用nfs协议引导执行内核映像。host_ip的nfs服务器的主机IP地址,filename为内核映像文件名,loadaddr为内存地址。举例:
nfs 0x30008000 192.168.0.100:/nfs/uImage
printenv 打印所有uboot的环境变量。
setenv env_name env_value 设置uboot的环境变量。主要环境变量举例:
setenv ipaddr 192.168.0.26
setenv serverip 192.168.0.6
setenv ethaddr 00:0C:29:94:D7:D6
setenv bootfile uImage
setenv autostart yes
setenv bootcmd nboot 80700000 0 200000
setenv bootargs mem=80M console=ttyS0,115200n8,noinitrd rw root=/dev/mtdblock3 rootfstype=yaffs
askenv env_name 当执行该命令后,在输入状态下直接回车,即可实现取消对环境变量env_name的设定。
saveenv 将环境变量的修改保存到flash中。
更多uboot的命令解释,推荐参考博文:
http://blog.chinaunix.net/uid-28325016-id-3402039.html
烧写自己编译的内核映像实践
假定在IP为192.168.0.6的开发主机上编译好了自己定制的uImage文件,并配置好了tftp服务和nfs服务。导出可以挂载的nfsroot为:/nfs/nfsboot。准备好了DM365的开发板,串口线和网线均连接好了。在连接串口线的开发主机端,串口调试软件也配置完毕,处于打开状态!
SEED_DVS365-SDK.tar.gz是DM365开发板提供的软件压缩包,其中的内核源码文件“linux-2.6.18_pro500/arch/arm/mach-davinci/board-dm365-evm.c”定义了开发板上的nand flash设备的分区信息,4个分区的大小定义源码如下(从204行开始):
#define BOOTLOADER_SIZE 0x1c0000
#define PARAMS_SIZE 0x40000
#define KERNEL_SIZE 0x400000
#define FS_SIZE 0x3A00000
其实大小依次是1M+768K, 256K, 4M, 58M,总计64M。
1. 对DM365开发板上电,根据提示,进入到uboot的命令行模式。
2. 配置环境变量,然后使用命令“saveenv”进行保存。具体设置的环境变量用printenv命令打印如下:
SEED_DVS365v1.0 :>printenv
baudrate=115200
bootfile="uImage"
ethaddr=00:0C:29:94:D7:D6
bootargs=mem=80M console=ttyS0,115200n8 noinitrd rw root=/dev/mtdblock3 rootfstype=yaffs
bootdelay=9
filesize=212F4C
fileaddr=80700000
ipaddr=192.168.0.26
serverip=192.168.0.6
autostart=yes
bootcmd=nboot 80100000 0 200000
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 1.3.4 (Dec 7 2009 - 11:07:06)
3. 断电重启后,再次进入到uboot命令行模式下。执行如下命令:
SEED_DVS365v1.0 :>setenv autostart no
SEED_DVS365v1.0 :>tftp 80700000
TFTP from server 192.168.0.6; our IP address is 192.168.0.26
Filename 'uImage'.
Load address: 0x80700000
Loading: #################################################################
##############T ###########################################T ######T ##
##T #################
done
Bytes transferred = 2174796 (212f4c hex)
SEED_DVS365v1.0 :>nand erase 200000 300000
NAND erase: device 0 offset 0x200000, size 0x300000
Erasing at 0x4fc000 -- 100% complete.
OK
SEED_DVS365v1.0 :>nand write 80700000 200000 300000
NAND write: device 0 offset 0x200000, size 0x300000
3145728 bytes written: OK
SEED_DVS365v1.0 :>setenv autostart yes
SEED_DVS365v1.0 :>
4. 断电重启,系统成功加载!
5. 以root身份进入系统,输入如下命令验证自己定制的内核烧写成功:
root@SEED_DVS365:~# uname -r
2.6.18_pro500-davinci_evm-arm_v5t_le-zjp2
root@SEED_DVS365:~#