问题就在与启动时,一堆如下打印,最后系统启动失败。
[ 1.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002b70: 0x7173 instead
我回帖遇到相同问题和给出的解决步骤如下:
1、编译使用的默认8M固件配置,编译的固件小于8M,实际使用16M芯片,但工作正常
2、后来增加一些包,导致固件大于8M,于是修改Flash配置。我使用的ralink芯片,首先修改了trunk/target/linux/ramips/image/Makefile,找到对应路由器,
将Default8M改为Default16M。编译通过,烧入之后,就出现了上面这样的问题,有很多这样的打印。
3、开始我以为是驱动不支持,找到内核支持SPI芯片列表,确认对应厂商芯片ID在列表中。
4、后来我想到平时编译其他工程的时候都要对代码进行分段,也就是分区。最后找到trunk/target/linux/ramips/dts/下对应路由器的分区配置文件,修改了匹配16M的分区数据。编译烧入,重启后以上问题消失
所以编译一个支持不同容量的Flash的固件时,要确认3点:
1、trunk/target/linux/ramips/image/Makefile内对应固件的大小。
2、确认驱动支持使用的Flash芯片。
3、确认trunk/target/linux/ramips/dts/对应的dts文件是否匹配。
前两点很好解决,然后有的童鞋就问到底怎么修改dts呢?举例说明如下