
BR, Jason
-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Stefano Babic Sent: 2010年3月10日 1:51 To: Navaneethan P Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] u-boot-imx51 NAND flash Uncorrectable ECC Error
Navaneethan P wrote:
*Hi Stefano Babic,
Hi Navaneethan,
I will kindly ask you to send your questions directly to the u-boot mailing list, too.
This information can be helpful for other users of this board. And you get a large number of developers who could help you.
We are using the imx51 babbage board with external NAND flash (NAND01GR3B2C , numonyx 8 bit, 2k page size, 1Gbit, 128k
block size)
connected.
In the patchset I provided to the ML I will not set the iomux for NAND, because the babbage board (mx51evk) has no NAND at all. I suppose you have configured the iomux, too. Anything else you changed ?
We are using the standard NAND driver from u-boot source (u-boot-2009.08). Initially nand read was not proper. I changed the read operation from auto operation to manual
operation.
After that time, some patches went to the mainline for the MXC NAND driver to support revision 1.1 of the Freescale's NAND controller. As I can see, the MX51 has version 1.1 as the MX25 (not really checked, but it seems so).
MX51 NFC(nand flash controler) is not the MX25 like. There is Big difference.MX51 support auto-mode and the register is 32-bit width While MX25 not that.
I think it makes sense if you align your code with the actual u-boot top of tree, that you can find on git.denx.de
Now, write, read, and erase are seems to be working fine.
When we write the filesystem/linux kernel, there seems to be a byte error. Means, one byte mismatch between the written data &
read data.
Example, (written data != read data)
byte at 0x90800457 (0xff) != byte at 0x90c00457 (0x92) byte at 0x90800458 (0x92) != byte at 0x90c00458 (0xff) byte at 0x9080045a (0xff) != byte at 0x90c0045a (0xea) byte at 0x9080045a
(0xff) != byte
at 0x90c0045a (0xea) byte at 0x9080045b (0xea) != byte at
0x90c0045b
(0x4f) byte at 0x9080045c (0x4f) != byte at 0x90c0045c
(0x00) byte at
0x9080045e (0x00) != byte at 0x90c0045e (0xea)
When we read the linux kernel, it is giving Uncorrectable
RS ECC Error
Kernel print out Uncorrectable RS ECC Error means the data corruption and the HW ECC of NFC can't correct it. It may due to the NAND driver. BTW, please make sure erase the block first when you operate on MLC nand flash since NOP=1.
Ok, this is understandable, if the values read are not what you wanted to write. It seems each byte is written at the next address. I have not yet an explanation, but maybe someone else in the ML can help.
Regards, Stefano Babic
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot