NAND + YAFFS2 - bad blocks

Stanislav Popov s.popov at rsc.bg
Tue Apr 28 12:03:26 EDT 2009


Hi,

I have 64 MB NAND flash on Jacinto (ARM) board.
I am using the device formatted as one YAFFS2 partition.
My SW ECC from NAND is enabled in the kernel and "useNANDECC" in YAFFS 
is set to 0
(If this is non-zero, then YAFFS will not perform ECC and it is assumed 
that the hardware ECC or specified NAND access functions will perform EC 
checks.)

I found that I have 1000-2000 eraseblocks that were reported as "bad block".
I can see them in u-boot with "nand bad" command and when laoding my 
nand_jacinto driver.
When using the NAND they are getting much more.
Actually they are NOT bad blocks!

I edited the kernel and remove is_bad checking when erasing.
Also I edited the mtd-utils (flash_eraseall) and removed is_bad checking 
when erasing.
So I was able to make low-level format of my NAND flash which also erase 
the bad blocks.
(like 'nand erase scrub' command in u-boot, but I currently I do not 
have such command)
After that I had NO bad blocks.

I made some tests:
I formatted Nand with YAFFS2 FS
-  YAFFS2 ECC + NO NAND ECC - when using fs appeared bad blocks and 
getting more.
-  YAFFS2 NO ECC + NAND SW ECC - when using fs appeared bad blocks and 
getting more.

I formatted Nand with EXT2 FS (ext2 fs is not writing into oob)
-  NAND SW ECC ENABLE - NO bad blocks appeared in the time!!!

So the result is that the issue is in using YAFFS2 + NAND.

Maybe the source of the issue is some YAFFS2 configurations?
Do you have any idea?
It's very critical issue for me.

Thanks and Regards,
Stanislav





More information about the linux-mtd mailing list