我所用到的开发板是dm6467,利用uboot烧写内核以及根文件系统。
根文件系统是根据TI公司提供的根文件系统裁剪得到的。将内核烧写到开发板中,并从flash上的内核启动
tftp 0x80700000 uImage
nand erase 500000 220000
nand write 0x80700000 500000 220000
setenv bootcmd 'nand read 0x80700000 0x500000 220000\;bootm 0x80700000'
saveenv
通过NFS挂载到服务器上自己所裁剪的根文件系统,是可以正常工作的,但是我自己将根文件系统制作成jffs2类型的文件系统,制作命令如下:
sudo mkfs.jffs2 -d rootfs -o rootfs.bin -e 0x20000 -p 0x1000000 -n
并烧写到开发板中后:
nand erase 800000 f00000
nand write.jffs2 0x60000000 800000 f00000
setenv bootcmd 'nand read 0x80700000 0x500000 0x220000\;bootm 0x80700000'
setenv bootargs 'noinitrd root=/dev/mtdblock3 init=/linuxrc rootfstype=jffs2 rw console=ttyS0,115200 mem=40'
saveenv
内核就无法启动了:
Uncompressing Linux…………………………………………………….
…………………………………………………………….. done, booting the kernel.
xm xm:
回复 Chris Meng:
首先谢谢你,能够那么快就给予我回答。
今天下午我根据你提供的参考文档,自己又重新做了一遍,发现自己有的地方设置有问题。通过nand info命令,查看到我的nand flash的擦写块大小为16K(0x4000),而我之前在网上查看到的是0x20000(128K)。不过我将这点改过之后,重新烧写根文件系统,还是有同样的问题。烧写完之后输入命令boot,还是卡在了booting the kernel.处。
Louis:
回复 xm xm:
直接TFTP内核到内存,从内存中引导Kernel呢?Bootargs的参数设置是否正确?
xm xm:
回复 Louis:
Louis,你好!
你说的直接tftp内核到内存,从内存中启动kernel,是这样设这uboot的参数吗?setenv bootcmd ‘bootm 0x80700000’tftp 0x80700000 uImage
boot
MTD分区信息:
Creating 4 MTD partitions on "davinci_nand.0":
0x000000000000-0x000000020000 : "params"
0x000000020000-0x000000160000 : "bootloader"
0x000000160000-0x000000560000 : "kernel"
0x000000560000-0x000004000000 : "filesystem"
我的bootargs设置:
setenv bootargs 'noinitrd root=/dev/mtdblock3 rw rootfstype=jffs2 init=/linuxrc console=ttyS0,115200 mem=40'
这个设置应该是没错的。
因为是刚接触,很多东西还不太懂。还请多指教。谢谢!
kooking:
回复 xm xm:
超级终端显示Hit any key to stop autoboot:3 时按下回车键,中断系统,此时显示提示符U-Boot# ;
配置TFTP服务器IP地址;
Target# setenv serverip xxx.xxx.xxx.xxx其中,xxx.xxx.xxx.xxx为 Linux服务器的IP地址。
配置开发板的IP地址;
Target# setenv ipaddr xxx.xxx.xxx.xxx 配置设置启动方式;
Target# setenv bootcmd tftp
Target# setenv autostart yes
Target# saveenv
Target# boot
xm xm:
回复 kooking:
这样是可以正常运行的。而且现在我将内核烧写到flash,并将flash中的内核拷贝到内存中进行运行:
setenv bootcmd 'nand read 0x80700000 0x500000 220000\;bootm 0x80700000'
此时根文件系统是通过NFS挂载到我的服务器上,也是可以正常运行的。但是当我把根文件系统烧写到flash中以后,再启动系统的时候,就卡在了下面这里了:
Starting kernel …Uncompressing Linux…………………………………………………………………………………………………………………… done, booting the kernel.
kooking:
回复 xm xm:
setenv bootcmd 'nand read 0x80700000 0x500000 220000\;bootm 0x80700000'
是不是拼写错误:
setenv bootcmd 'nand read 0x80700000 0x500000 220000;bootm 0x80700000'
xm xm:
回复 kooking:
额,不是这个原因啦!因为uboot命令中不能处理分号(;),所以必须用斜线(\)对其进行处理。有点转义字符的感觉。
kooking:
回复 xm xm:
以前版本的u-boot可以识别 (;) 现在的居然不能识别了啊,好奇怪