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
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.
=================================================================================
============================================================================