在做jffs2根文件系统烧录之后,运行时串口打印错误信息。
在做这个根文件系统的过程中,要弄懂三点,
第一,jffs2文件系统需要有参数进行填充。
第二,在烧录文件系统的过程中nand erase, nand write为什么要在16M的位置开始烧录。
第三,bootargs传参是怎么知道内核启动根文件系统的。
首先遇到的问题是,分区大小设置与烧录地址不匹配。
bootargs 传递的jffs2根文件系统是存放在root=/dev/mtdblock(?) 分区上,我在所要烧录的分区设置过小,文件系统溢出,所以打印错误信息,无法启动。
在重新设置分区之后,解决部分问题。
设置bootargs传参的指令为 set bootargs 'root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc console=ttys0,115200'(rootfstype指明所要启动的文件系统类型)
重新进行分区,设置了bootargs传递参数后,把分区和烧录文件匹配的问题解决了。
遇到第二个问题是,jffs2系统填充的问题。
只有jffs2文件系统,它有一个特殊性,要进行填充。jffs2仅仅算文件系统的话只有4M左右,但是要想预留空间必须要对其进行填充,我给文件系统留的分区有40M,因此填充到40M,否则会不停的打印重复的信息。填充指令如下
mkfs.jffs2 -n -s 2048 -e 128K