博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次Yaffs2与Nand Ecc产生的问题
阅读量:4108 次
发布时间:2019-05-25

本文共 830 字,大约阅读时间需要 2 分钟。

记一次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。

转载地址:http://fhpsi.baihongyu.com/

你可能感兴趣的文章
Step By Step(userdata)
查看>>
lua学习:把lua文本文件“编译”成二进制的文本
查看>>
Lua编译器
查看>>
Lua解释器
查看>>
Notepad++ 16进制编辑功能
查看>>
N沟道增强型MOS管双向低频开关电路
查看>>
VS2010点滴——不能将参数 1 从“const char [11]”转换为“LPCWSTR”
查看>>
error C2065: “CString”: 未声明的标识符
查看>>
Building MFC application with /MD[d] (CRT dll version)requires MFC shared dll version~~~~
查看>>
error C2668: “pow”: 对重载函数的调用不明确
查看>>
详解C语言字节对齐
查看>>
Long Long、__int64使用总结
查看>>
c语言内存分配函数
查看>>
c语言内存分配函数之间的区别
查看>>
二维数组和指针的一些感悟
查看>>
二维数组和二级指针
查看>>
VC让对话框显示就最大化
查看>>
Unicode和多字节字符集 (MBCS) 杂谈
查看>>
CString GetBuffer() 与releasebuffer()的使用
查看>>
CString ,BSTR ,LPCTSTR之间关系和区别
查看>>