AnsweredAssumed Answered

P1010RDB bug with samsung nand flash k9f4g08u0d

Question asked by Min Pengwei on May 7, 2014
Latest reply on May 9, 2014 by Min Pengwei

I have a bug in P1010RDB with nand flash K9F4G08U0D.
step 1. erase nand flash  ok
nand erase.chip
.
.
.
___fsl_ifc_cmdfunc, 359 command:60 column:ffffffff page_addr:3fdc0
___fsl_ifc_cmdfunc, 359 command:d0 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:70 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:60 column:ffffffff page_addr:3fe00
___fsl_ifc_cmdfunc, 359 command:d0 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:70 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:60 column:ffffffff page_addr:3fe40
___fsl_ifc_cmdfunc, 359 command:d0 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:70 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:60 column:ffffffff page_addr:3fe80
___fsl_ifc_cmdfunc, 359 command:d0 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:70 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:60 column:ffffffff page_addr:3fec0
___fsl_ifc_cmdfunc, 359 command:d0 column:ffffffff page_addr:ffffffff
Skipping bad block at  0x1ff80000                                         
Skipping bad block at  0x1ffa0000                                         
Skipping bad block at  0x1ffc0000                                         
Skipping bad block at  0x1ffe0000                                         

OK

step 2. check the result ok.
nand dump 0
=> nand dump 0
___do_nand, 451, name:nand0, erase:20000, write:800, size:20000000___
___nand_do_read_ops, 1249 realpage:0 chip->page_shift:11 chip->pagemask:3ffff page:0 col:0 mtd->writesize:2048
___fsl_ifc_cmdfunc, 359 command:0 column:0 page_addr:0
Page 00000000 dump:
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
  .
  .
  .
OOB:
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff
        ff ff ff ff ff ff ff ff


step3. load file to mem then write 1 page in flash
=>tftpget c00000 uboot.12xg.600
=> nand write c00000 0 800
___do_nand, 451, name:nand0, erase:20000, write:800, size:20000000___
___do_nand, 476,flag:0,dev 0___
___fsl_ifc_cmdfunc, 359 command:70 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:80 column:0 page_addr:0
___fsl_ifc_cmdfunc, 359 command:10 column:ffffffff page_addr:ffffffff
___fsl_ifc_cmdfunc, 359 command:0 column:0 page_addr:0
NAND write to offset 0 failed -5
0 bytes written: ERROR

step 4. nand dump check
Page 00000000 dump:
        27 05 19 56 55 2d 42 6f  6f 74 20 37 2e 30 2e 31
        20 28 4f 63 74 20 32 32  20 32 30 31 33 20 2d 20
        31 31 3a 31 39 3a 32 37  29 00 00 00 00 00 00 00
        3c 60 ff d0 60 63 3f 80  38 00 00 00 90 03 00 00
        90 03 00 04 7c 61 1b 78  48 00 00 05 7d 88 02 a6
        80 0c 18 90 7d 80 62 14  48 00 2c b1 3c 60 00 02
        60 63 12 00 7c 60 01 24  4c 00 01 2c 48 00 29 ad
        48 00 4c e1 4c 00 01 2c  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 0a a6
        7e fb 0a a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 20  7e 88 03 a6 3a 80 00 00
        52 f4 06 72 4e 80 00 21  00 00 37 44 00 00 10 9c
        00 00 10 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 8a a6
        7e fb 8a a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 20  7e 88 03 a6 3a 80 00 00
        52 f4 06 72 4e 80 00 21  00 00 37 6c 00 00 10 9c
        00 00 10 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 02 a6
        7e fb 02 a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 20  7e 88 03 a6 3a 80 10 00
        52 f4 06 72 4e 80 00 21  00 00 39 c4 00 00 10 9c
        00 00 10 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 02 a6
        7e fb 02 a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 20  7e 88 03 a6 3a 80 10 00
        52 f4 06 72 4e 80 00 21  00 00 39 c4 00 00 10 9c
        00 00 10 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 02 a6
        7e fb 02 a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 20  7e 88 03 a6 3a 80 10 00
        52 f4 06 72 4e 80 00 21  00 00 3a 1c 00 00 10 9c
        00 00 10 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 02 a6
        7e fb 02 a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  7c 93 02 a6 90 95 00 b4
        7c b2 02 a6 90 b5 00 b8  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 24  7e 88 03 a6 3a 80 10 00
        52 f4 04 20 52 f4 06 72  4e 80 00 21 00 00 39 20
        00 00 10 9c 00 00 10 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        7e 90 43 a6 7e b1 43 a6  7e 80 00 26 3a a1 ff 00
        92 95 00 a8 92 d5 00 68  92 f5 00 6c 7e 90 42 a6
        92 95 00 60 7e d1 42 a6  92 d5 00 64 7e 88 02 a6
        92 95 00 a0 7e c9 02 a6  92 d5 00 9c 7e 81 02 a6
        92 95 00 a4 7e 9d 0a a6  92 95 00 b4 7e da 02 a6
        7e fb 02 a6 90 15 00 10  90 35 00 14 90 55 00 18
        90 35 00 00 7e a1 ab 78  90 75 00 1c 90 95 00 20
        90 b5 00 24 90 d5 00 28  38 61 00 10 48 00 00 05
        7e 88 02 a6 82 94 00 24  7e 88 03 a6 3a 80 10 00
        52 f4 04 20 52 f4 06 72  4e 80 00 21 00 00 39 58
        00 00 10 9c 00 00 10 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
OOB:
        ff ff ff ff ff ff ff ff
        d9 f6 ca 37 6d 52 7b f9
        60 b2 f5 e4 1c 00 00 00
        dd ca 52 3d 57 d6 74 02
        5a 05 05 b6 c3 00 00 00
        54 50 f9 70 7e 31 3f 35
        fc cd e0 fe 03 00 00 00
        d8 56 4d aa f9 37 3e 0f
step 5. reading error at the same time 
=> nand read 2000000 0 800
___do_nand, 451, name:nand0, erase:20000, write:800, size:20000000___
___do_nand, 476,flag:0,dev 0___
NAND read: device 0 offset 0x0, size 0x800
___do_nand, 660, 1ffc3900, 0, 800, 2000000___
___nand_do_read_ops, 1249 realpage:0 chip->page_shift:11 chip->pagemask:3ffff page:0 col:0 mtd->writesize:2048
___fsl_ifc_cmdfunc, 359 command:0 column:0 page_addr:0
___nand_do_read_ops, 1359, mtd->ecc_stats.failed:2 stats.failed:1___
NAND read from offset 0 failed -74
0 bytes read: ERROR


there are some more info:
1.
=>nand info
Device 0: nand0, sector size 128 KiB
  Page size      2048 b
  OOB size         64 b
  Erase size   131072 b


2.P1010RDB.h
#define CONFIG_SYS_NAND_CSOR (CSOR_NAND_ECC_ENC_EN /* ECC on encode */ \
    | CSOR_NAND_ECC_DEC_EN /* ECC on decode */ \
    | CSOR_NAND_ECC_MODE_8 /* 8-bit ECC */ \
    | CSOR_NAND_RAL_3     /* RAL = 3 Bytes */ \
    | CSOR_NAND_PGS_2K /* Page Size = 2k b */ \
    | CSOR_NAND_SPRZ_64 /* Spare size = 64 */ \
    | CSOR_NAND_PB(64)) /* 64 Pages Per Block */


#define CONFIG_SYS_NAND_BLOCK_SIZE (128 * 1024)
#define CONFIG_SYS_MAX_NAND_DEVICE 1
#define CONFIG_MTD_NAND_VERIFY_WRITE

/* NAND Flash Timing Params */
#define CONFIG_SYS_NAND_FTIM0  FTIM0_NAND_TCCST(0x01) | \
     FTIM0_NAND_TWP(0x0C)   | \
     FTIM0_NAND_TWCHT(0x04) | \
     FTIM0_NAND_TWH(0x05)
#define CONFIG_SYS_NAND_FTIM1  FTIM1_NAND_TADLE(0x1d) | \
     FTIM1_NAND_TWBE(0x1d)  | \
     FTIM1_NAND_TRR(0x07)   | \
     FTIM1_NAND_TRP(0x0c)
#define CONFIG_SYS_NAND_FTIM2  FTIM2_NAND_TRAD(0x0c) | \
     FTIM2_NAND_TREH(0x05) | \
     FTIM2_NAND_TWHRE(0x0f)
#define CONFIG_SYS_NAND_FTIM3  FTIM3_NAND_TWW(0x04)


3.fsl_ifc_nand.c
nand->ecc.read_page = fsl_ifc_read_page;
nand->ecc.write_page = fsl_ifc_write_page;

/* Hardware generates ECC per 512 Bytes */
nand->ecc.size = 512;
nand->ecc.bytes = 8;

4.flash id

read id from flash ec dc 10 95 54 ec ec dc

manufacturer id:0xec chip id:0xdc (samsung nand 512MiB 3,3V 8-bit)


5.and i saw "/* ECC will be calculated automatically, and errors will be detected in * waitfunc. */"
before function fsl_ifc_write_page defined.
Does it mean there is no need to calculate ECC?
In my opinion there is something error while calculating ECC.

Outcomes