[U-Boot] NAND flash - bad blocks

Scott Wood scottwood at freescale.com
Fri Jan 11 21:21:33 CET 2013


On 01/11/2013 02:46:06 AM, Dimitar Penev wrote:
> Hi Scott,
> 
>> On 01/10/2013 01:56:30 AM, Dimitar Penev wrote:
>>> Hello,
>>> 
>>> First of all sorry if this question was already answered here.
>>> 
>>> We are sourcing some K9F8G08U0M-PIB0 NAND flash devices.
>>> On the first erase in uboot 2011.09 I got bunch of mostly  
>>> consecutive bad blocks.
>>> According to the datasheet we should get not more then 80 bad  
>>> blocks  for our chip
>>> but I get something like 240 bad blocks for most of the NAND chips.
>>> 
>>> I seems to be able to fix this using the following procedure:
>> 
>> Call your NAND vendor and complain?
>> 
> 
> Well we did but we didn't got something from them which could explain  
> what we observe.
> 
>> After making sure that there's nothing wrong with your NAND driver  
>> or controller that causes the OOB to be read incorrectly.
> 
> We are using nand_plat driver provide by ADI without any  
> customization.

Still, do some investigation to see whether it seems to be working.   
Dump the raw data that you read -- is it mostly 0xff with some bad  
block markers set, or is it returning garbage?  Do any of the blocks  
that are not marked bad have non-0xff data?  If you do a scrub of the  
entire NAND chip, then write to one block, does the write show up  
anywhere else on the NAND chip?

>>> In uboot
>>> uboot>nand scrub.chip
>>> 
>>> In uboot
>>> uboot>nand erase.chip clean
>>> at this point I get usually 1,2 bad blocks which looks normal to me.
>> 
>> You're not fixing anything -- you're wiping out all bad block   
>> information. Those "1,2 bad blocks" are not actually bad blocks,  
>> but  are the bad block table which appears "bad" to reserve it.   
>> These  should be at the end of flash.  Or, possibly, they're blocks  
>> that  happen to be damaged in a way that prevents the bad block  
>> marker from  becoming 0xff.
> 
> Oh Really?
> What about 'nandtest -m' in Linux ? I was hoping it does a check of  
> the erase blocks.

That's no substitute for having the factory bad block markers.   
Nandtest doesn't look very rigorous at all -- and only seems to mark  
bad blocks if the erase or write operations return failure, not if it  
sees an uncorrectable error on readback.

> Thanks Scott.
> Is there any procedure to analyze the nand flash for bad blocks?

Yes, and it's done by the flash manufacturer to produce bad block  
markers. :-P

-Scott


More information about the U-Boot mailing list