AM335x系列UBIFS报错分析及解决方法

有许多工程师在使 TI的AM335x系列CPU时会出现UBIFS错误的问题,TI官方也没有给出太好的解决方案。飞凌嵌入式就以上问题进行了深入研究。
在长期稳定性的测试中发现,NandFlash总是有可能会发生读写错误,导致分区变化为只读分区。由于在实际应用中,NandFlash分区存储的为历史数据信息,所以希望在NandFlash读写错误后不修改为只读状态,理解是UBIFS本身的机制导致它会出现这种错误。

  1. 根文件系统是UBIFS,可写读的;

2.在运行Linux系统时,系统的一些服务,如日志等,可能会频繁的读写存储器。UBIFS对掉电的容忍性是比较差的,在异常掉电或重启后,下次重启后可能导致到UBIFS文件系统记录节点CRC和实际计算的不一致,导致根文件系统挂载不了,启动过程报错。

所以有了以下直观认识:

1.UBIFS挂载速度快,存储器寿命高。

2.UBIFS对异常掉电的容忍性差,容易出现CRC错误。

解决方法:

1、通过修改内核分区表,新建一个用户分区,这样将数据存储区和根文件系统分开存储,用户操作的一些数据和日志只在用户分区执行,当有分区数据损坏时不会影响系统的挂载。具体方法参考《飞凌公司文件系统新建分区方法》。

2、如果坚持保留根文件系统分区为可读写,则每次通过linux命令执行关机操作,尽量避免直接切断电源。

3、更新飞凌AM335X系列最新的Yaffs文件系统。具体资料见飞凌技术论坛OK335系列资料下载。

飞凌已经经过验证,以上方法皆能降低该问题发生的几率,但是不能从根本上解决该问题,这是由NandFlash本身的特性所决定了。

猜你喜欢

转载自blog.51cto.com/14771125/2489973