mini2440内核停在booting the kernel问题以及无法运行linuxrc问题的解决方法

这几天在2440板子上面移植2.6.32.2的内核,用的现成的uboot,但是每次uImage自解压之后就卡住了,booting the kernel然后就没有下文了,高了半天才发现制作uImage出了问题,我直接make uImage生成的uImage,也不知道是不是uboot里面的mkimage工具生成uImage的时候抽风了,最后还是保险地自己用mkimage工具生成uImage:

mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage

然后内核启动就没有问题了,接下来挂载根文件系统又出问题,提示信息是无法运行/linuxrc,根文件系统的制作是确定没有问题的,uboot传给内核的启动参数有root=/dev/mtdblock3,我查看了内核代码,mtd分区3的起始地址是0x560000,烧写根文件系统也确实是烧到这个地址的,一切看来没问题,但是最后发现烧写的时候用的指令是nand write, 后来才发现,烧写yaffs2镜像必须用nand write.yaffs指令,并且最后指定的烧写长度必须是flash的一页长度加00b区长度(对于mini2440就是2048+64)的倍数,当然mkyaffs2image工具已经考虑了这个问题,其生成的yaffs2镜像大小就是2112的倍数,使用nand write.yaffs指令之后,系统启动一切正常了。

你可能感兴趣的:(mini2440)