关于nand,mtd和yaffs2的配合使用问题的解决方法!

如果你作nand驱动,那么肯定会知道yaffs2文件系统了,由于yaffs2的更新没有mtd那么快,所以就出现了他们配合不好的问题,经常出现nand mount和umount的时候丢数据的问题,当你碰到这个问题的时候,不要慌张。你首先应该用jffs2去测试一下你的nand驱动是否正常,如果驱动是好的,但是还存在丢失数据的问题的话,那么你就碰到了yaffs2和mtd不匹配的想象了,总结了很多网友的经验,虽然不同的人解决问题的方法不一样,但是大部分都是由于nand写oobbuf的问题上,yaffs2要给mtd一个buf,你要查查看mtd有没有接受这个buf吧,还有就是最新的yaffs2和最新的mtd代码是不能匹配的,我测试过效果极差,需要手动去修改bug,另外最新的mtd当你选择none-ecc模式的时候是不处理oob数据的,你要在write_ecc函数里加上写oobbuf的语句才可以的。

     总之当你碰到nand丢失数据的问题的时候,不要和我一样盲目的人为yaffs2代码有bug了,其实是他们配合的问题,更不要盲目的下载最新代码,这样你porting她们也要花很多时间,弄好了还不一定能解决问题啊!

    如果你的问题实在不能解决可以mail我,或者去我的嵌入式开发网站搜索具体解决的办法。我和兄弟们会帮大家查看一下,再不行只能另请高人了:)

投 票

觉得本文不错,投一票   

评 论

  • coschang  2008-6-21 11:33:54
  • coschang
    你好
    我们现在移植的是 2.6.24
    yaffs挂不上去
    提示:
    argc 4 sh 0 optcnt2
    MEMSETOOBSEL:inappropriate ioctl for decice
    能不能给点建议如何解决??稍微具体点,上边说的好范
    先谢谢了,我EMAIL:tank_618@163.com
  • 嵌入式在线网友  2008-7-16 11:14:06
  • 嵌入式在线网友
    你好!
    我用的是2.6.17的LINUX,YAFFS2,2K页的NANDFLASH,现在问题是能够在刚分区后写数据,写入后reboot数据不能写入,第一次写的数据不能删除了,请问这是什么原因呢?
    希望得到您的帮助,谢谢!!


验证码: 看不清?换一张