nand flash 纠错问题
俺的嵌入式Linux系统使用次数多以后,就会发现nand flash纠正1bit错误的提示,并且提示已经成功纠错,但是这样会导致启动速度变得很慢,经观察即使纠错了下次还是会纠正同样的错误,所以得出一个结论那系统用上一年岂不是不能用或者全是错误了是不是nand flash的驱动有点问题???请高手指点一二。 补充一下 出错具体提示为:
s3c-nand: 1 bit(s) error detected, corrected successfully 这就是nand flash的特性啊。 因此嵌入式板子, 一般情况下不要经常写操作, 即使非得写,也要采用某些特殊的文件系统,如 yaffs2 或 我现在用的文件系统就是yaffs2 ,问题是出现
s3c-nand: 1 bit(s) error detected, corrected successfully这样的提示后,下次启动时到同样的地方还会有同样提示,我个人感觉读的时候发现错误并纠正了 到内存是正确的 但是没有回写到nand flash中,也就是没有纠正nand flash中的错误bit,所以下次启动还是同样的位置还是会报同样的错,所以觉得nand flash的驱动中的纠正部分是不是有缺陷,还请高手继续指点。 是这样的, 纠正的功能是,从flash里读出来,然后校验, 若没有超出错误范围, 那么认为这次读操作是成功的, 即使纠正后也如此, 但要注意,系统纠正后是没有写回flash的, 只要你没有在原来的位置触发写操作,那么每次读取都会报纠正的信息, 报就报吧, 反正读操作是成功的. 晕死 那现在的问题是 我的产品开机要80几秒 其中就是因为这个纠错 占了40几秒
我现在想减少开机时间啊 难道我要修改一下 这个纠错的驱动 然后再回写一下? 你的ECC是软件实现的吧? 看看能否通过硬件实现。 还有,先重烧flash, 看看是否每次烧写都有这个问题(纠错), 若很快就出现这种现象, 那么你的flash是否有质量方面的问题? 是硬件ECC啊 驱动中配置了
flash 用 nand erase命令擦除后 不会马上出现这种错误的 要用一段时间后才出现的 1 如果是只是某处有ECC的信息, 那么不应该是40秒的纠错时间啊;
2 如果erase后, 大概需要多长时间才会复现呢?
3 是否还在同一个地方(blcok, page), 试试把该block标志为坏块,不让系统使用
4 有没有考虑换一块flash试试呢 不只是一处的错误 从falsh拷贝内核到内存的时候有4处错误;内核解压启动过程中有6处错误;总共启动时间是80秒,当我把falsh擦掉后启动时间就只有40秒了,启动过程中的错误一个也没有了,不过读内核到内存中还是有,这应该是我放内核那块flash没有擦的缘故,可以先不管。
至于是不是同一个block和page我不敢确定,但是我打印了纠正前和纠正后的错误字节的值,每次重启后都是纠正同样的错误值,给人感觉就是 是纠正了但是没有回写到flash中所以每次读的时候还是同样的错。
机器不止一个5个样机用了调试了一段时间后都是同样的问题,不应该是flash质量的问题吧,因为擦除一遍后就好了,而且用nand flash命令擦除的时候不会擦标记为坏块的block的啊,也就是证明那些存储错误bit的地方不是真的坏了。
页:
[1]
2