TI中文支持网
TI专业的中文技术问题搜集分享网站

烧写了根文件系统后系统无法启动

我所用到的开发板是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

并烧写到开发板中后:

 tftp 0x60000000 rootfs.bin   

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=/li nuxrc rootfstype=jffs2 rw console=ttyS0,115200 mem=40'

saveenv

内核就无法启动了:

 Starting kernel …

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可以识别 (;)  现在的居然不能识别了啊,好奇怪

赞(0)
未经允许不得转载:TI中文支持网 » 烧写了根文件系统后系统无法启动
分享到: 更多 (0)