当前位置: 技术问答>linux和unix
nand flash坏块处理的问题
来源: 互联网 发布时间:2016-11-16
本文导语: /dev/mtdblock3分区中有坏块,我使用命令 nandwrite -p /dev/mtd3 rootfs.cramfs 将cramfs文件系统烧入到分区中,在烧录的时候提示如下: Bad block at c000, 1 block(s) from c000 will be skipped 分析nandwrite命令将rootfs.cramfs文件按文件顺...
/dev/mtdblock3分区中有坏块,我使用命令
nandwrite -p /dev/mtd3 rootfs.cramfs 将cramfs文件系统烧入到分区中,在烧录的时候提示如下:
Bad block at c000, 1 block(s) from c000 will be skipped
分析nandwrite命令将rootfs.cramfs文件按文件顺序写入nand flash中.如果碰到坏块,直接忽略,然后将数据写入到下一个好块中.
rootfs.cramfs应该是全部写入nand flash的第三个分区中.
但是在利用这个分区做为根文件系统启动时,报如下错误:
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 164K
Warning: unable to open an initial console.
Error -3 while decompressing!
c0365b28(-1020888533)->c0d99000(4096)
Error -3 while decompressing!
c036a538(-1967548436)->c0562000(4096)
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
请问cramfs文件系统在读取nand flash数据是不是没有对坏块进行处理,或者是没有正确读取它需要的数据.
请各位大侠帮忙看看
nandwrite -p /dev/mtd3 rootfs.cramfs 将cramfs文件系统烧入到分区中,在烧录的时候提示如下:
Bad block at c000, 1 block(s) from c000 will be skipped
分析nandwrite命令将rootfs.cramfs文件按文件顺序写入nand flash中.如果碰到坏块,直接忽略,然后将数据写入到下一个好块中.
rootfs.cramfs应该是全部写入nand flash的第三个分区中.
但是在利用这个分区做为根文件系统启动时,报如下错误:
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 164K
Warning: unable to open an initial console.
Error -3 while decompressing!
c0365b28(-1020888533)->c0d99000(4096)
Error -3 while decompressing!
c036a538(-1967548436)->c0562000(4096)
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
请问cramfs文件系统在读取nand flash数据是不是没有对坏块进行处理,或者是没有正确读取它需要的数据.
请各位大侠帮忙看看
|
cramfs在最早的实现中,为Nor flash进行设计并没有考虑坏块处理的问题,并且不能有ECC错误,否则在内核decompossed阶段就会出错。可以自己看一下cramfs源码,增加一些逻辑上的映射应该就可以了。