This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

我所用到的开发板是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=/linuxrc rootfstype=jffs2 rw console=ttyS0,115200 mem=40'

saveenv

内核就无法启动了:

 Starting kernel ...

Uncompressing Linux.............................................................
....................................................................... done, booting the kernel. 
到这一步就卡住了。
我是刚刚接触这一块的学生,还请多指教!
  • 首先谢谢你,能够那么快就给予我回答。

    今天下午我根据你提供的参考文档,自己又重新做了一遍,发现自己有的地方设置有问题。通过nand  info命令,查看到我的nand flash的擦写块大小为16K(0x4000),而我之前在网上查看到的是0x20000(128K)。不过我将这点改过之后,重新烧写根文件系统,还是有同样的问题。烧写完之后输入命令boot,还是卡在了booting the kernel.处。

  • 直接TFTP内核到内存,从内存中引导Kernel呢?Bootargs的参数设置是否正确?

  • 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'

    这个设置应该是没错的。

    因为是刚接触,很多东西还不太懂。还请多指教。谢谢!

  • 超级终端显示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

  • 这样是可以正常运行的。而且现在我将内核烧写到flash,并将flash中的内核拷贝到内存中进行运行:

    setenv bootcmd 'nand read 0x80700000 0x500000 220000\;bootm 0x80700000'

    此时根文件系统是通过NFS挂载到我的服务器上,也是可以正常运行的。但是当我把根文件系统烧写到flash中以后,再启动系统的时候,就卡在了下面这里了:

     Starting kernel ...

    Uncompressing Linux.............................................................
    ....................................................................... done, booting the kernel. 


  • setenv bootcmd 'nand read 0x80700000 0x500000 220000\;bootm 0x80700000'

    是不是拼写错误:

    setenv bootcmd 'nand read 0x80700000 0x500000 220000;bootm 0x80700000'

  • 额,不是这个原因啦!因为uboot命令中不能处理分号(;),所以必须用斜线(\)对其进行处理。有点转义字符的感觉。

  • 以前版本的u-boot可以识别 (;)  现在的居然不能识别了啊,好奇怪

  •  这个估计是MTD分区问题,我将内核中的有关MTD的分区代码改过之后,就可以了。