ECC检验有什么优势,我不明白,请玩过Nand flash 的朋友谈谈
搞了半天都没明白ECC的原理是什么?但根据网友提供的代码,基本上知道怎么去调用它,但我有点纳闷:还不如自己写完一个Sector后,写个函数再读出这个扇区一个一个字节与原数据做比较,不一一对应,擦除再写,直到写对为止,难道ECC算法查到某位写错后,不用经历 "先块擦除,再扇区写 "这个过程序吗?我看还是自己做个比较函数来得直接,且比不这个ECC算法占用资源多呀?
[解决办法]
nand flash 的特点,或缺点是所谓 "bit_fliping "现象,即随机地某位会0变成1,1变成0,虽然出现这种现象的几率很低,但相比一般内存而言几率大的多,所以即使你正确写入了也没用,有可能某次读出就不正确了,所以每次读出都要进行ecc效验.
[解决办法]
lz 还是不明白bit fliping的意义,并不是说你写进去再读出来数据正确了,以后再读出来就不会bit反转了,bit反转的因素有很多,电气干扰也会bit反转。以我2年的nand flash驱动开发的经验,没有ECC的nand flash数据可很能会出错!所以必须加入ECC校验。