记一次Yaffs2与Nand Ecc产生的问题

记一次Yaffs2与Nand Ecc产生的问题

 

 

之前把ramdisk用uboot烧到/dev/mtdblock2(/dev/mtdblock3是yaffs2系统,作为数据区使用)上作为根文件系统启动时,总是导致重启后ramdisk内核不认。怀疑是挂在yaffs2时

破坏了ramdisk分区的存储。

于是焦头烂额的找了几天的bug,今天终于有进展了。
板子不再用ramdisk启动,而是直接把rootfs做到yaffs2 image里。然后再用/dev/mtdblock3做根文件系统启动。

用nand write.yaffs写进nand后,重启提示全是坏块,系统卡在根文件系统那里了。
uboot和kernel里的ECC全都禁用了,但感觉还是ECC的问题。
重启后uboot里用nand erase都提示有很多坏块。
只好用nand scrub清除假坏块。最后连uboot也一起被冲掉了。。。

然后到处查资料,还是在
http://blog.chinaunix.net/space.php?uid=20543672&do=blog&id=94384
这里找到了答案。
这里Tekkaman Ninja 说补丁增加了oob的两字节偏移和oob中ECC的产生。否则新的内核和yaffs2文件系统挂载会出错。
也没有时间仔细的研究代码,用了文中提到的那个patch,放到yaffs2源码目录中patch后,在utils中make生成新的mkyaffs2image。
再用mkyaffs2image重新制作yaffs2根文件系统。

最后在uboot中重新烧进nand里,重启一切正常了。

虽然问题暂时搞定了,但是一直没有搞清楚问题的详细原因。没办法,项目赶时间,等空闲下来再仔细查查yaffs的源码找找原因。
ECC和yaffs放在一起感觉总是有隐患。

今天查资料看到ubi是内核原生支持的nand文件系统,而且没有oob的问题,看来有时间的话要研究一下ubifs。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值