[QUESTION] MLC NAND and ECC over OOB area
Matthieu CASTET
matthieu.castet at parrot.com
Fri Oct 12 03:57:39 EDT 2012
Charles Hardin a écrit :
> On Oct 10, 2012, at 11:13 AM, Ivan Djelic wrote:
>
>> Hi Charles,
>>
>> The OOB area is primarily used to store:
>> - a bad block marker
>> - ECC bytes
>>
>> The ECC is generally designed to protect the data area, and the ECC bytes themselves (data+ECC bytes form a long codeword).
>> The bad block marker normally has two useful values only: 0xff or 0x00, therefore it can be successfully read even with
>> several bitflips, by looking at its Hamming weight (the number of 1s in the byte).
>>
>> Now, if you want to store additional stuff (metadata) in the OOB area, _then_ you will need an ECC that covers data + metadata.
>> This is possible with some drivers; this can also be done with the software BCH library (with a patch).
>>
>> But the general trend is to avoid using the OOB area for that, because you never know how much space the next NAND generation
>> will require for ECC, and you'll be in trouble once your metadata does not fit anymore in the remaining space.
>>
>> BR,
>> --
>> Ivan
>
>
> Ok, that seems reasonable - and, following this line of thought - then the expectation would be to change the nand_bbt.c code to check for the "weight of a bad block pattern" instead of looking for an exact match on the pattern.
>
They were some work on this :
http://thread.gmane.org/gmane.linux.drivers.mtd/42243follow d
More information about the linux-mtd
mailing list