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.
Solved! Go to Solution.
Dear Scott,
The U-Boot version is U-Boot 2013.01.
The SDK version is 1.4.
I found the setting is not right.
ECC MODE should be setted as CSOR_NAND_ECC_MODE_4.
The result is OK.
Thank you.
As Scott mentioned, the IFC timing parameters looks not suitable for your target board with NAND Flash K9F4G08U0D, please try whether the following timing parameters would be helpful for you.
FTIM0
TCCST 0x3
TWP 0x5
TWCHT 0x2
TWH 0x4
FTIM1
TADLE 0x12
TWBE 0x1e
TRR 0x7
TRP 0x5
FTIM2
TRAD 0x8
TREH 0x4
TWHRE 0x11
Have a great day,
Yiping Wang
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
What version of U-Boot are you using?
Have you made sure that the timing and other parameters match your NAND chip?
Dear Scott,
The U-Boot version is U-Boot 2013.01.
The SDK version is 1.4.
I found the setting is not right.
ECC MODE should be setted as CSOR_NAND_ECC_MODE_4.
The result is OK.
Thank you.