Author: Stanislav Popov Date: To: yaffs Subject: [Yaffs] NAND + YAFFS2 - bad blocks
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.