“bootm [addr [arg
...]]”命令启动存放在地址addr处的U-Boot格式的映像文件(使用U-Boot目录tools下的mkimage工具制作得到),[arg
...]表示参数。如果addr参数省略,映像文件所在地址为配置文件中定义的宏CFG_LOAD_ADDR。
“go addr [arg ...]”与bootm命令类似,启动存放在地址addr处的二进制文件, [arg ...]表示参数。
“nboot [[[loadAddr] dev] offset]”命令将NAND
Flash设备dev上偏移地址off处的映像文件复制到内存loadAddr处,然后,如果环境变量autostart的值为“yes”,就启动这个映
像。如果loadAddr参数省略,存放地址为配置文件中定义的宏CFG_LOAD_ADDR;如果dev参数省略,则它的取值为环境变量
bootdevice的值;如果offset参数省略,则默认为0。
2. U-Boot命令使用实例
下面通过一个例子来演示如何使用各种命令烧写内核映像文件、yaffs映像文件,并启动系统。
(1)制作内核映像文件。
对于本书使用的Linux 2.6.22.6版本,编译内核时可以直接生成U-Boot格式的映像文件uImage。
对于不能直接生成uImage的内核,法在U-Boot根目录下的README文件中
有说明,假设已经编译好的内核文件为vmlinux,它是ELF格式的。mkimage是U-Boot目录tools下的工具,它在编译U-Boot时自
动生成。执行以下3个命令将内核文件vmlinux制作为U-Boot格式的映像文件uImage,它们首先将vmlinux转换为二进制格式,然后压
缩,最后构造头部信息(里面包含有文件名称、大小、类型、CRC较验码等):
① arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
② gzip -9 linux.bin
③ mkimage -A arm -O linux -T kernel -C gzip -a 0x30008000 -e 0x30008000 -n "Linux Kernel Image" -d linux.bin.gz uImage
(2)烧写内核映像文件uImage。
首先将uImage放在主机上的tftp或nfs目录下,确保已经开启tftp或nfs服务。
然后运行如下命令下载文件,擦除、烧写NAND Flash:
① tftp 0x30000000 uImage 或 nfs 0x30000000 192.168.1.57:/work/nfs_root/uImage
② nand erase 0x0 0x00200000
③ nand write.jffs2 0x30000000 0x0 $(filesize)
第3条命令之所以使用“nand write.jffs2”而不是“nand
write”,是因为前者不要求文件的长度是页对齐的(512字节对齐)。也可以使用“nand
write”,但是需要将命令中的长度参数改为$(filesize)向上进行512取整后的值。比如uImage的大小为1540883,向上进行
512取整后为1541120(即0x178400),可以使用命令“nand write 0x30000000 0x0
0x178400”进行烧写。
(3)烧写yaffs文件系统映像。
假设yaffs文件系统映像的文件名为yaffs.img,首先将它放在主机上的tftp或nfs目录下,确保已经开启tftp或nfs服务;然后执行如下命令下载、擦除、烧写:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66092-37.html
为每日做事
老成持重并不优于年轻热血
我不犯人