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.
Thanks and Regards,
Stanislav