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.

DM385 IPNC RDK 3.8.0 NAND ECC problem

Other Parts Discussed in Thread: DM385

Hi,

I’m using IPNC RDK 3.8.0 DM385.

 

I know the NAND ECC is BCH8 as default.

When nand writing operation is occurred in uboot, the NAND oob data is like as following,

 

Page 00000000 dump:

        94 65 01 00 00 00 30 40  12 00 00 ea 14 f0 9f e5

        14 f0 9f e5 14 f0 9f e5  14 f0 9f e5 14 f0 9f e5

        14 f0 9f e5 14 f0 9f e5  20 01 70 80 80 01 70 80

        e0 01 70 80 40 02 70 80  a0 02 70 80 00 03 70 80

        60 03 70 80 78 56 34 12  00 00 70 80 00 00 70 80

        94 65 71 80 70 71 71 80  00 00 0f e1 1f 00 c0 e3

        d3 00 80 e3 00 f0 29 e1  1c 00 00 eb 6c 00 4f e2

 

...

 

        02 31 23 e2 30 40 2d e9  81 40 a0 e1 83 50 a0 e1

        05 00 34 e1 02 00 30 01  00 c0 94 11 02 c0 95 11

        c4 ca f0 11 c5 ca f0 11  8c 00 00 0a a4 4a a0 e1

        a5 5a 74 e0 00 50 65 b2  06 00 00 da 05 40 84 e0

OOB:

        ff ff 8b 1d 66 18 54 6a

        86 7e 42 35 2f c2 e3 00

        36 3d 23 5d 77 2d 6f 30

        64 3e 22 dd 10 00 22 ec

        a8 f9 7c 81 e9 41 dc 8d

        9c 1b 92 00 e1 bd a6 a8

        86 69 90 1d 18 93 66 2f

        1a 00 ff ff ff ff ff ff

 

 

However, nand writing operation is occurred after linux booting, the OOB is following.

(ECC data is all zero.)

 

root@DM385_IPNC:~# nanddump -l2048 -p -o /dev/mtd7

ECC failed: 0

ECC corrected: 0

Number of bad blocks: 0

Number of bbt blocks: 0

Block size 131072, page size 2048, OOB size 64

Dumping data starting at 0x00000000 and ending at 0x00000800...

0x00000000: 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 06

0x00000010: 00 00 08 00 00 00 10 00 41 18 8b 1c 00 00 00 00

0x00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0x00000030: 00 00 00 00 00 00 00 00 00 00 00 00 8a b0 44 03

0x00000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0x00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

...

 

0x000007b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

0x000007c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

0x000007d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

0x000007e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

0x000007f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

  OOB Data: ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00

  OOB Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

  OOB Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

  OOB Data: 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff

 

 

The ECC data pattern of Uboot and linux kernel is different.

After linux booting, nand write operation make ECC area as all-zero pattern.

 

My question is:

 

Why the ECC data is all zero after linux booting?

I want the ECC data of linux is same to uboot. How can I do it?

 

 

  • Hi Hyunho,

    Though I am not the expert on this topic, I can try to give some clues based on my previous tryouts.

    ECC scheme and OOb selection schemes are defined in the Board specific files. Based on the selected pattern, NAND driver will choose the layouts. (both uboot and kernel). I am sure you can crack it b y going through board specific file and Nand specific file.

    Good luck !

     

    -Ravikiran