当前位置: 代码迷 >> 单片机 >> 制造JFFS2时的erase_block与SPI FLASH中的erase_sector的关系
  详细解决方案

制造JFFS2时的erase_block与SPI FLASH中的erase_sector的关系

热度:191   发布时间:2016-04-28 14:51:11.0
制作JFFS2时的erase_block与SPI FLASH中的erase_sector的关系?
本帖最后由 dongyang626 于 2012-11-29 19:21:27 编辑
如题, 在制作JFFS2时 需要用到-e 参数(./mkfs.jffs2 -b --pad=524288  -s 256 -e 65536 -d userfs/ -o usrjffs2.img)help命令中,对其的解释为: -e, --eraseblock=SIZE   Use erase block size SIZE (default: 64KiB)。

在SPI FLASH(winbond 8M)的datasheet中写到:其erase_sector只能为4KB,erase_block可为32/64kB,

目前在SPI的驱动中,设置block_size为 64KB, erase_sector为 4KB。


问题来了!

将制作好的512K FLASH挂载到系统上后,会报如下错误:
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00022034: 0x5771 instead
Further such events for this erase block will not be printed
Node at 0x00022f60 with length 0x000000f6 would run over the end of the erase block
Perhaps the file system was created with the wrong erase size?
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023000: 0x69c2 instead
进入系统后,发现jffs2中的文件有缺失。


根据报错提示以及网上资料, 原因应该为: 制作JFFS2时的erase_block 与系统的不符~.

但系统这块的block_size(这个应该也就是erase_block的大小吧?)已经是设置成64KB的了。

更改SPI驱动中,erase_sector的大小为64KB,则JFFS2报错问题解决, 但由于该SPI FLASH的
erase_sector是固定死的4K,贸然使用64KB(32KB同样)会造成再擦写FLASH时,极大概率出现某
一erase_secotr大小的块中数据为空的情况,即系统不能启动。


另,在制作JFFS2时,将-e参数设置为4096,以配合FLASH的erase_sector, 但悲催的是mkfs.jffs2
所支持-e 最小为8KB。


请问现在这个报错问题应该如何解决???


一点细节: 尝试添加了 -s 参数,其大小为FLASH page的大小256B,但问题依旧。

当JFFS2中文件较少时,不知为何就不会出现上方的报错。





------解决思路----------------------
现在这个问题搞定了吗?
NET: Registered protocol family 17
Clocks: disable unused emac
Clocks: disable unused aemif
regulator_init_complete: incomplete constraints, leaving LDO2 on
regulator_init_complete: incomplete constraints, leaving LDO1 on
regulator_init_complete: incomplete constraints, leaving VDCDC3 on
regulator_init_complete: incomplete constraints, leaving VDCDC2 on
regulator_init_complete: incomplete constraints, leaving VDCDC1 on
davinci_emac_probe: using random MAC addr: 7a:85:ed:56:7c:df
emac-mii: probed
omap_rtc omap_rtc: setting system clock to 2009-05-20 06:33:37 UTC (1242801217)
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
List of all partitions:
No filesystem could mount root, tried:  jffs2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Backtrace: 
[<c0035730>] (dump_backtrace+0x0/0x114) from [<c036c3dc>] (dump_stack+0x18/0x1c)
 r7:00008000 r6:c7815000 r5:c0029a08 r4:c04a69d8
[<c036c3c4>] (dump_stack+0x0/0x1c) from [<c036c444>] (panic+0x64/0x13c)
[<c036c3e0>] (panic+0x0/0x13c) from [<c0008fec>] (mount_block_root+0x1e0/0x220)
 r3:00000000 r2:80000000 r1:c7823f60 r0:c0409a66
[<c0008e0c>] (mount_block_root+0x0/0x220) from [<c00090f0>] (mount_root+0xc4/0xfc)
 r8:00000000 r7:00000000 r6:00000000 r5:00000000 r4:00200000
[<c000902c>] (mount_root+0x0/0xfc) from [<c0009298>] (prepare_namespace+0x170/0x1c8)
 r5:c0029a08 r4:c04a64c0
[<c0009128>] (prepare_namespace+0x0/0x1c8) from [<c00084c8>] (kernel_init+0xf0/0x12c)
 r5:00000000 r4:c04a6280
[<c00083d8>] (kernel_init+0x0/0x12c) from [<c00491f0>] (do_exit+0x0/0x6b4)
 r5:00000000 r4:00000000
我在SPI flash上遇到jffs2.img这个问题,uboot和uImage可以正常跑
------解决思路----------------------
请问楼主问题是如何解决的啊,我也遇到了同样的问题啊。。。。。。急!!!
  相关解决方案