NAND write verify failed problem

Pantelis Antoniou panto at intracom.gr
Mon Jun 2 07:04:46 EDT 2003


Hi

I'm testing a new board with a NAND device chip
and I've hit a couple of problems which I'm not
sure what the problem is.

My configuration is as follows.

CPU: MPC850SR powerpc
NAND: Samsung K9FF5608U0B (32Mb, 8bit interface).
Kernel: LinuxPPC 2.4.21-rc2 devel.

The kernel has fairly recent MTD drivers and a diff
found no major differences.
I use the mtd utils from the latest nightly tarball.

The NAND driver is a custom one I made based on the
example in the docs. It is fairly simple and the
chip is detected alright at boot time.

The relevant .config fragment is as follows:

CONFIG_MTD=y
CONFIG_MTD_DEBUG=y
CONFIG_MTD_DEBUG_VERBOSE=0
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CONCAT=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
CONFIG_MTD_NAND_NETVIA=y # the name of my board
CONFIG_MTD_NAND_IDS=y

I intend to use JFFS2 which I used in a previous
design with a NOR flash.

Mounting an NFS root from a shell on the target...

Erasing seems to go well.

 > root$ eraseall -j /dev/mtd0
Erasing 16 Kibyte @ 1ffc000 -- 99 % complete. Cleanmarker written at 1ffc000

Making a test jffs2 image (size 540672 bytes)

 > root$ mkfs.jffs2 -e16384 -b -p -v -d /root/ -o /tmp/root.jffs2.image

Copying the image to the NAND.

 > root$ fcp -v /tmp/root.jffs2.image /dev/mtd0
 > Erasing blocks: 33/33 (100%)
 > Writing data: 528k/528k (100%)
 > Verifying data: 20k/528k (3%)File does not seem to match flash data. 
First mismatch at 0x00002800-0x00005000

We have the first warning that something is amiss.
Still no warning or error at syslog.

Now things get interesting...

 > root$ mount -t jffs2 /dev/mtdblock0 /mnt/

Mount takes 30 seconds to finish, and during that time the board does not
respond to any external stimulus. This is caused I believe from the scaning
of the NAND, which I take it is normal.

The contents of the files match what was written to the image.

But when I try to write by copying a small file the write fails
and I get the following to the syslog.

nand_write_page: Failed write verify, page 0x0000040b <5>Write of 68 
bytes at 0x00081774 failed. returned -5, retlen 0
Mar 10 21:44:22 netvia-ppc kernel: Not marking the space at 0x00081774 
as dirty because the flash driver returned retlen zero

Any ideas how to proceed?

Regards

Pantelis





More information about the linux-mtd mailing list