擦除失败之后就能确认nandflash 的这个块是坏的吗?

ECC很重要,SPARE区域在NAND FLASH架构定义之初就是主要用来存放ECC编码的,因为NAND FLASH数据出错概率高需要加ECC进行校验



1.一个页读/写失败了,那么是否要将其所在块标识成坏块?



一般应用NAND FLASH时都会同时使用ECC纠错,无论是硬件纠错还是软件实现。在有ECC的情况下如果写入一个Page失败是可以将其读出以判断出现的错误是否可以被ECC校验纠正。若可以被ECC纠正则可以考虑仍将该页所在块视为有效块。若是出现页写入错误就将该块表为坏块,软件在实现上会更容易。根据具体需要可以选择不同的处理



2. ecc是做什么的?ecc校验失败是否可以确定该块已经变成了坏块呢?ecc校验是否可以关闭?



ECC代表Error Correction Code及纠错码,是NAND FLASH应用的关键。因为NAND FLASH的数据可靠性问题一般使用NAND FLASH都需要对其数据进行ECC校验。一般的用法是在写入NAND FLASH时在主数据区内写入正常数据,而住数据区数据的ECC校验码则写入Spare区。将住数据区数据读出时Spare区的ECC码也必须一起读出以便进行ECC校验及纠错。基本上若是读出数据后发现ECC校验失败则当前块必须被标记为坏块。软件实现的ECC校验算法一般都可以关闭,有硬件直接实现的ECC校验模块则需要看硬件是否支持关闭ECC。一般都可以关闭。



3. 是否只有当擦除一个块失败之后,才可以把该块视为坏块?



如前所述,仍然是软件策略选择问题。若是擦除失败,仍可尝试写入数据并读出看ECC能否纠错,若是可被ECC纠正,则可以将该块视为有效块。因为块擦除失败有相当概率是因为块内一两位无法被擦除造成,一般使用的硬件ECC纠错都可纠至少两位以上错误,纠错4-8位也不少见。在擦除失败之后直接将其标为坏块可以作为最简单的软件处理方法。

以上内容摘自网络

你可能感兴趣的:(算法,网络,Flash)