This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM368 not booting from Nand Flash

I am using the DM368 on custom hardware that has been in production for half a year.  We have recently experienced a 6% product failure due to the DM368 not booting from flash.  I am using the Micron MT29F2G08ABBEAH4-IT in the 63 ball VFBGA package. The flash devices were programmed using a Data I/O FlashPAK, placed on the boards and then sent through a reflow oven.

Two of the units that failed had the flash devices removed and there was one data bit difference between the input data file and what was programmed on the flash.

The questions I have are: 

Is it possible for the ECC algorithm to miss block errors? 

Does the RBL skip a block if it finds 1 or more uncorrectable errors?

Here is the ECC algorithm information we are using that is supported by the DM368 RBL

=========================================================================
Hardware 4 bit ECC algorithm:
8 10-bit codes stored in 4 32-bit words for each 512 bytes
So, for each 2k page, there's 16 ECC bytes in the OOB area
Software ECC algorithm:
So, for each 2k page, there's 24 ECC bytes in the OOB area, after the bad block and user data.

Here are the messages from a unit that boots up completely:

==================================================================

DM36x initialization passed!
TI UBL Version: 1.50
Booting Wham! Boot Loader
BootMode = NAND
Starting NAND Copy... start looking in block 0x00000007
Checking block 0x00000007
Valid magicnum, 0xA1ACED66, found in block 0x00000007
   DONE
Jumping to entry point at 0x81080000.


U-Boot 2010.12-rc2 (Aug 26 2011 - 23:46:25)

Cores: ARM 432 MHz
DDR:   340 MHz
I2C:   ready
DRAM:  256 MiB
NAND:  256 MiB
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: Bad block at 0x000000000000 (0)
nand_read_bbt: Bad block at 0x000000040000 (2)
nand_read_bbt: Bad block at 0x000000060000 (3)
nand_read_bbt: Bad block at 0x000000080000 (4)
nand_read_bbt: Bad block at 0x0000000a0000 (5)
nand_read_bbt: Bad block at 0x0000000c0000 (6)
nand_read_bbt: Bad block at 0x0000000e0000 (7)
Both environments OK, check flags (env1:1 env2:1)
Using Environment 1!
Net:   DaVinci-EMAC
Current image:0 (valid:2)
Booting image:0 (valid:2)...
Hit any key to stop autoboot:  0

Loading from nand0, offset 0x1800000
   Image Name:   Linux-2.6.18_pro500-davinci
   Created:      2011-11-11   0:27:59 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1876524 Bytes = 1.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
## Booting kernel from Legacy Image at 80700000 ...
   Image Name:   Linux-2.6.18_pro500-davinci
   Created:      2011-11-11   0:27:59 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1876524 Bytes = 1.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...


Here are the messages when a unit fails to boot:

==================================================================

DM36x initialization passed!

TI UBL Version: 1.50

Booting Wham! Boot Loader

BootMode = NAND

Starting NAND Copy... start looking in block 0x00000007

Checking block 0x00000007

Valid magicnum, 0xA1ACED66, found in block 0x00000007

ERROR: ECC failedfailedOnceAlready, NAND_retry!

ERROR: ECC failedRead failed, starting over! read

Error: 0x00000001

Checking block 0x00000008

Checking block 0x00000009

Checking block 0x0000000A

ERROR: ECC failedChecking block 0x0000000B

ERROR: ECC failedChecking block 0x0000000C

ERROR: ECC failedChecking block 0x0000000D

ERROR: ECC failedChecking block 0x0000000E

ERROR: ECC failedChecking block 0x0000000F

ERROR: ECC failedChecking block 0x00000010

ERROR: ECC failedChecking block 0x00000011

ERROR: ECC failedChecking block 0x00000012

ERROR: ECC failedChecking block 0x00000013

ERROR: ECC failedChecking block 0x00000014

ERROR: ECC failedChecking block 0x00000015

ERROR: ECC failedChecking block 0x00000016

ERROR: ECC failedChecking block 0x00000017

ERROR: ECC failedChecking block 0x00000018

ERROR: ECC failedChecking block 0x00000019

ERROR: ECC failedChecking block 0x0000001A

ERROR: ECC failedChecking block 0x0000001B

ERROR: ECC failedChecking block 0x0000001C

ERROR: ECC failedChecking block 0x0000001D

ERROR: ECC failedNo valid boot image found!

NAND Boot failed.

Aborting...

Here is a comparison of the flash contents to the data file from a different unit that was not able to boot.

=================================================================================

============================================================================