Skip to contentSkip to conversation

NAND dump questions

DISCUSSION Gary Thomas 3 participants 4 messages Feb 18, 2016 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

I'm trying to use 'nanddump' to help me duplicate a NAND device. The idea is to provide a production lab with raw dumps, including OOB data for every page. They have a programming machine which can take these dumps and program the device. This process is interesting because we need to make thousands of identical devices and programming the NAND manually takes a lot of time & manpower.

My target hardware is a Freescale/NXP i.MX6 which uses the gpmi-nand driver in the Linux kernel. I have a device layout like this:
0x000000000000-0x000000780000 : "U-Boot" 0x000000780000-0x000000800000 : "U-Boot env" 0x000000800000-0x000004800000 : "Linux kernel" 0x000004800000-0x000080000000 : "File system"

I generated a hex dump for each partition using

  $ nanddump -c -o -f out.mtdX /dev/mtdX
These files were then sent to the programming lab for duplication.

The results are mixed. The board boots fine from NAND, so the first partition was copied as expected. None of the other partitions are working, neither in U-Boot nor Linux. However, when I look at them using nand dump tools, they contain the data I provided, i.e. what was in my master device. I'm truly baffled as bits should be bits I would think.

Here are more details from mtd1. My original dump contained

  0x00000000: 55 a8 dd 0f 62 61 75 64 72 61 74 65 3d 31 31 35  |U...baudrate=115|
  0x00000010: 32 30 30 00 62 6f 6f 74 63 6d 64 3d 72 75 6e 20  |200.bootcmd=run |
  0x00000020: 6e 61 6e 64 62 6f 6f 74 3b 00 62 6f 6f 74 64 65  |nandboot;.bootde|
      ...
  0x00000ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
    OOB Data: ff 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 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 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 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 00 00 00 00 00 00  |................|
    OOB Data: 9b af dc 75 5f 24 d8 95 ba 51 16 e5 f3 5d 8d a8  |...u_$...Q...]..|
    OOB Data: 37 66 08 44 f1 63 ac 5d e8 49 00 00 00 00 00 00  |7f.D.c.].I......|

This all looks good and matches what I get from U-Boot nand dump

Quoted 1 line

nand dump 0x780000

Page 00780000 dump:

	55 a8 dd 0f 62 61 75 64  72 61 74 65 3d 31 31 35
	32 30 30 00 62 6f 6f 74  63 6d 64 3d 72 75 6e 20
	6e 61 6e 64 62 6f 6f 74  3b 00 62 6f 6f 74 64 65
	6c 61 79 3d 35 00 62 6f  6f 74 6d 6d 63 3d 73 65
            ...
	00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
  OOB:
	ff 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	00 00 00 00 00 00 00 00
	9b af dc 75 5f 24 d8 95
	ba 51 16 e5 f3 5d 8d a8
	37 66 08 44 f1 63 ac 5d
	e8 49 00 00 00 00 00 00

I also get the same dump running nanddump on Linux reading the duplicated device - 100% identical. But I get errors when reading the device :-( Note that none of these issues are related to bad block handling (as there were none in the blocks I'm talking about here), but I think I know how to handle that if we can just get the basic duplication process working.

Any ideas what's going on here? What else can I look at to diagnose the issue?

Note: I've actually done this process on another system which is TI/OMAP Davinci based. On that device (a different NAND chip and a different production lab), the duplication worked perfectly.

Signature · 4 lines
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
#1 lore raw

Hi!

Quoted 6 lines · Gary Thomas

I'm trying to use 'nanddump' to help me duplicate a NAND device. The idea is to provide a production lab with raw dumps, including OOB data for every page. They have a programming machine which can take these dumps and program the device. This process is interesting because we need to make thousands of identical devices and programming the NAND manually takes a lot of time & manpower.

[...]

Quoted 6 lines

Any ideas what's going on here? What else can I look at to diagnose the issue?

Note: I've actually done this process on another system which is TI/OMAP Davinci based. On that device (a different NAND chip and a different production lab), the duplication worked perfectly.

I read your mail and the first thing that alarmed me was, why OOB? Can you please retry without OOB and which read errors do you get? I bet uncorrectable ECC errors...

Signature · 2 lines
Thanks,
//richard
#2 lore raw
Quoted 15 lines · Richard Weinberger

Hi!

Quoted 6 lines · Gary Thomas

I'm trying to use 'nanddump' to help me duplicate a NAND device. The idea is to provide a production lab with raw dumps, including OOB data for every page. They have a programming machine which can take these dumps and program the device. This process is interesting because we need to make thousands of identical devices and programming the NAND manually takes a lot of time & manpower.

[...]

Quoted 3 lines

Any ideas what's going on here? What else can I look at to diagnose the issue?

Quoted 8 lines
Quoted 3 lines

Note: I've actually done this process on another system which is TI/OMAP Davinci based. On that device (a different NAND chip and a different production lab), the duplication worked perfectly.

I read your mail and the first thing that alarmed me was, why OOB? Can you please retry without OOB and which read errors do you get? I bet uncorrectable ECC errors...

The reason for the OOB is that the production lab doesn't have the ability to generate that info itself - they only know how to push raw bits (all of them) into the device. Maybe there are better ways to mass duplicate NAND devices - does anyone know?

I think that the driver or device is not reporting the correct OOB data. If I look at another i.MX6 board I have which is fitted with a different NAND device, the OOB is vastly different. Using U-Boot to dump some OOB

On the failing board with this NAND device:
nand: device found, Manufacturer ID: 0x2c, Chip ID: 0x48
nand: Micron MT29F16G08ABACAWP
nand: 2048MiB, SLC, page size: 4096, OOB size: 224

Page 00780000 dump:
OOB:

        ff 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        9b af dc 75 5f 24 d8 95
        ba 51 16 e5 f3 5d 8d a8
        37 66 08 44 f1 63 ac 5d
        e8 49 00 00 00 00 00 00

On the other board with this NAND device
nand: device found, Manufacturer ID: 0x01, Chip ID: 0xdc
nand: AMD/Spansion S34ML04G2
nand: 512MiB, SLC, page size: 2048, OOB size: 128

Page 003e0000 dump:
OOB:

        ff 5b 4f 1b de 98 99 18
        8c 0e 59 99 5d 0f db 18
        19 cb 10 53 50 50 cb 95
        d5 51 10 4b 9a 59 8f d4
        91 90 0c 0d c8 d8 9b db
        dc 1b 5b 99 18 5b 98 db
        5a 0f 0c 88 5d 1a 59 d9
        5b 4f 1b de 98 99 58 8c
        ce 9b 99 19 88 5d 1a 59
        d9 5b 4f 1b de 98 99 98
        8c ce 9b 99 19 88 5d 1a
        59 d9 5b 4f 1b de 98 99
        d8 4c 07 03 98 ab 17 1c
        cc 1e fa 21 6f 43 d4 3b
        bc 8d 56 0b 20 77 0d de
        09 1a 2c ef 7b 82 a8 00

Different NAND devices, same kernel rev & SOC (i.MX6). Look how different - how many non-zero bits are in the AMD device. Is this significant at all?

Signature · 4 lines
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
#3 lore raw
Quoted 24 lines · Gary Thomas
Quoted 23 lines · Richard Weinberger

Hi!

Quoted 7 lines · Gary Thomas

I'm trying to use 'nanddump' to help me duplicate a NAND device. The idea is to provide a production lab with raw dumps, including OOB data for every page. They have a programming machine which can take these dumps and program the device. This process is interesting because we need to make thousands of identical devices and programming the NAND manually takes a lot of time & manpower.

[...]

Quoted 6 lines

Any ideas what's going on here? What else can I look at to diagnose the issue?

Note: I've actually done this process on another system which is TI/OMAP Davinci based. On that device (a different NAND chip and a different production lab), the duplication worked perfectly.

Quoted 4 lines
Quoted 4 lines

I read your mail and the first thing that alarmed me was, why OOB? Can you please retry without OOB and which read errors do you get? I bet uncorrectable ECC errors...

What kind of error?

Quoted 71 lines

The reason for the OOB is that the production lab doesn't have the ability to generate that info itself - they only know how to push raw bits (all of them) into the device. Maybe there are better ways to mass duplicate NAND devices - does anyone know?

I think that the driver or device is not reporting the correct OOB data. If I look at another i.MX6 board I have which is fitted with a different NAND device, the OOB is vastly different. Using U-Boot to dump some OOB

On the failing board with this NAND device:
nand: device found, Manufacturer ID: 0x2c, Chip ID: 0x48
nand: Micron MT29F16G08ABACAWP
nand: 2048MiB, SLC, page size: 4096, OOB size: 224

Page 00780000 dump:

OOB:

        ff 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        00 00 00 00 00 00 00 00
        9b af dc 75 5f 24 d8 95
        ba 51 16 e5 f3 5d 8d a8
        37 66 08 44 f1 63 ac 5d
        e8 49 00 00 00 00 00 00

On the other board with this NAND device
nand: device found, Manufacturer ID: 0x01, Chip ID: 0xdc
nand: AMD/Spansion S34ML04G2
nand: 512MiB, SLC, page size: 2048, OOB size: 128

Page 003e0000 dump:
OOB:

        ff 5b 4f 1b de 98 99 18
        8c 0e 59 99 5d 0f db 18
        19 cb 10 53 50 50 cb 95
        d5 51 10 4b 9a 59 8f d4
        91 90 0c 0d c8 d8 9b db
        dc 1b 5b 99 18 5b 98 db
        5a 0f 0c 88 5d 1a 59 d9
        5b 4f 1b de 98 99 58 8c
        ce 9b 99 19 88 5d 1a 59
        d9 5b 4f 1b de 98 99 98
        8c ce 9b 99 19 88 5d 1a
        59 d9 5b 4f 1b de 98 99
        d8 4c 07 03 98 ab 17 1c
        cc 1e fa 21 6f 43 d4 3b
        bc 8d 56 0b 20 77 0d de
        09 1a 2c ef 7b 82 a8 00
Quoted 3 lines

Different NAND devices, same kernel rev & SOC (i.MX6). Look how different - how many non-zero bits are in the AMD device. Is this significant at all?

I don't quite understand the meaning of this comparison. Why comparing OOB data in different pages of different NAND chips( 4K+224 vs 2K+128)?

BTW, Freescale/NXP provides mfgtool for manufacturing purpose, please check if the tool helps.

Quoted 10 lines

--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/