[U-Boot] iMX31 nand driver

Hi,
I'm designing a board that uses a i.MX31 and a Nand Flash conected to the Nand Flash controller of i.MX31. I use git to get latest revision of u-boot code, and apply the patches to get mx31 nand drivers from *Magnus Lilja *posted at *Wed Aug 6 14:19:20 CEST 2008* mailing list. I got u-boot + nand drivers compiled, but when I run it I got weird results when reading flash, like data is reading in reverse order in buffer. I think that, in a blank Flash, I would get 0xffffffff on starting addresses (0x00000000), but i was getting 0x30303030. More strange is that if I read address 0xB8000000 after 'nand read', I'll get same content of buffer memory where I put the result of nand read. Below I put some capture what I did.
Could you know told me if it is ok? Sincerely I suspect that is inverted on buffer. 0x30303030 code would must be on spare area of NANDFC.
Regards,
Fabio
---- Nand chip is a Micron MT29F2G08AACWP: Page size x8: 2,112 bytes (2,048 + 64 bytes), Block size: 64 pages (128K + 4K bytes), Device size: 2Gb: 2,048 blocks;
---
nand info Device 0: NAND 256MiB 3,3V 8-bit, sector size 128 KiB uboot> nand device 0 Device 0: NAND 256MiB 3,3V 8-bit... is now current device uboot> nand read 0x80000000 0x0 0x20000 NAND read: device 0 offset 0x0, size 0x20000 131072 bytes read: OK uboot> md 0x80000000 80000000: 30303030 30303030 30303030 30303030 0000000000000000 80000010: 30303030 30303030 30303030 30303030 0000000000000000 80000020: 30303030 30303030 30303030 30303030 0000000000000000 80000030: 30303030 30303030 30303030 30303030 0000000000000000 80000040: 30303030 30303030 ffffffff ffffffff 00000000........ 80000050: ffffffff ffffffff ffffffff ffffffff ................ 80000060: ffffffff ffffffff ffffffff ffffffff ................ 80000070: ffffffff ffffffff ffffffff ffffffff ................ 80000080: ffffffff ffffffff ffffffff ffffffff ................ 80000090: ffffffff ffffffff ffffffff ffffffff ................ 800000a0: ffffffff ffffffff ffffffff ffffffff ................ 800000b0: ffffffff ffffffff ffffffff ffffffff ................ 800000c0: ffffffff ffffffff ffffffff ffffffff ................ 800000d0: ffffffff ffffffff ffffffff ffffffff ................ 800000e0: ffffffff ffffffff ffffffff ffffffff ................ 800000f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000100: ffffffff ffffffff ffffffff ffffffff ................ 80000110: ffffffff ffffffff ffffffff ffffffff ................ 80000120: ffffffff ffffffff ffffffff ffffffff ................ 80000130: ffffffff ffffffff ffffffff ffffffff ................ 80000140: ffffffff ffffffff ffffffff ffffffff ................ 80000150: ffffffff ffffffff ffffffff ffffffff ................ 80000160: ffffffff ffffffff ffffffff ffffffff ................ 80000170: ffffffff ffffffff ffffffff ffffffff ................ 80000180: ffffffff ffffffff ffffffff ffffffff ................ 80000190: ffffffff ffffffff ffffffff ffffffff ................ 800001a0: ffffffff ffffffff ffffffff ffffffff ................ 800001b0: ffffffff ffffffff ffffffff ffffffff ................ 800001c0: ffffffff ffffffff ffffffff ffffffff ................ 800001d0: ffffffff ffffffff ffffffff ffffffff ................ 800001e0: ffffffff ffffffff ffffffff ffffffff ................ 800001f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000200: ffffffff ffffffff ffffffff ffffffff ................ 80000210: ffffffff ffffffff ffffffff ffffffff ................ 80000220: ffffffff ffffffff ffffffff ffffffff ................ 80000230: ffffffff ffffffff ffffffff ffffffff ................ 80000240: ffffffff ffffffff ffffffff ffffffff ................ 80000250: ffffffff ffffffff ffffffff ffffffff ................ 80000260: ffffffff ffffffff ffffffff ffffffff ................ 80000270: ffffffff ffffffff ffffffff ffffffff ................ 80000280: ffffffff ffffffff ffffffff ffffffff ................ 80000290: ffffffff ffffffff ffffffff ffffffff ................ 800002a0: ffffffff ffffffff ffffffff ffffffff ................ 800002b0: ffffffff ffffffff ffffffff ffffffff ................ 800002c0: ffffffff ffffffff ffffffff ffffffff ................ 800002d0: ffffffff ffffffff ffffffff ffffffff ................ 800002e0: ffffffff ffffffff ffffffff ffffffff ................ 800002f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000300: ffffffff ffffffff ffffffff ffffffff ................ 80000310: ffffffff ffffffff ffffffff ffffffff ................ 80000320: ffffffff ffffffff ffffffff ffffffff ................ 80000330: ffffffff ffffffff ffffffff ffffffff ................ 80000340: ffffffff ffffffff ffffffff ffffffff ................ 80000350: ffffffff ffffffff ffffffff ffffffff ................ 80000360: ffffffff ffffffff ffffffff ffffffff ................ 80000370: ffffffff ffffffff ffffffff ffffffff ................ 80000380: ffffffff ffffffff ffffffff ffffffff ................ 80000390: ffffffff ffffffff ffffffff ffffffff ................ 800003a0: ffffffff ffffffff ffffffff ffffffff ................ 800003b0: ffffffff ffffffff ffffffff ffffffff ................ 800003c0: ffffffff ffffffff ffffffff ffffffff ................ 800003d0: ffffffff ffffffff ffffffff ffffffff ................ 800003e0: ffffffff ffffffff ffffffff ffffffff ................ 800003f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000400: ffffffff ffffffff ffffffff ffffffff ................ 80000410: ffffffff ffffffff ffffffff ffffffff ................ 80000420: ffffffff ffffffff ffffffff ffffffff ................ 80000430: ffffffff ffffffff ffffffff ffffffff ................ 80000440: ffffffff ffffffff ffffffff ffffffff ................ 80000450: ffffffff ffffffff ffffffff ffffffff ................ 80000460: ffffffff ffffffff ffffffff ffffffff ................ 80000470: ffffffff ffffffff ffffffff ffffffff ................ 80000480: ffffffff ffffffff ffffffff ffffffff ................ 80000490: ffffffff ffffffff ffffffff ffffffff ................ 800004a0: ffffffff ffffffff ffffffff ffffffff ................ 800004b0: ffffffff ffffffff ffffffff ffffffff ................ 800004c0: ffffffff ffffffff ffffffff ffffffff ................ 800004d0: ffffffff ffffffff ffffffff ffffffff ................ 800004e0: ffffffff ffffffff ffffffff ffffffff ................ 800004f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000500: ffffffff ffffffff ffffffff ffffffff ................ 80000510: ffffffff ffffffff ffffffff ffffffff ................ 80000520: ffffffff ffffffff ffffffff ffffffff ................ 80000530: ffffffff ffffffff ffffffff ffffffff ................ 80000540: ffffffff ffffffff ffffffff ffffffff ................ 80000550: ffffffff ffffffff ffffffff ffffffff ................ 80000560: ffffffff ffffffff ffffffff ffffffff ................ 80000570: ffffffff ffffffff ffffffff ffffffff ................ 80000580: ffffffff ffffffff ffffffff ffffffff ................ 80000590: ffffffff ffffffff ffffffff ffffffff ................ 800005a0: ffffffff ffffffff ffffffff ffffffff ................ 800005b0: ffffffff ffffffff ffffffff ffffffff ................ 800005c0: ffffffff ffffffff ffffffff ffffffff ................ 800005d0: ffffffff ffffffff ffffffff ffffffff ................ 800005e0: ffffffff ffffffff ffffffff ffffffff ................ 800005f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000600: ffffffff ffffffff ffffffff ffffffff ................ 80000610: ffffffff ffffffff ffffffff ffffffff ................ 80000620: ffffffff ffffffff ffffffff ffffffff ................ 80000630: ffffffff ffffffff ffffffff ffffffff ................ 80000640: ffffffff ffffffff ffffffff ffffffff ................ 80000650: ffffffff ffffffff ffffffff ffffffff ................ 80000660: ffffffff ffffffff ffffffff ffffffff ................ 80000670: ffffffff ffffffff ffffffff ffffffff ................ 80000680: ffffffff ffffffff ffffffff ffffffff ................ 80000690: ffffffff ffffffff ffffffff ffffffff ................ 800006a0: ffffffff ffffffff ffffffff ffffffff ................ 800006b0: ffffffff ffffffff ffffffff ffffffff ................ 800006c0: ffffffff ffffffff ffffffff ffffffff ................ 800006d0: ffffffff ffffffff ffffffff ffffffff ................ 800006e0: ffffffff ffffffff ffffffff ffffffff ................ 800006f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000700: ffffffff ffffffff ffffffff ffffffff ................ 80000710: ffffffff ffffffff ffffffff ffffffff ................ 80000720: ffffffff ffffffff ffffffff ffffffff ................ 80000730: ffffffff ffffffff ffffffff ffffffff ................ 80000740: ffffffff ffffffff ffffffff ffffffff ................ 80000750: ffffffff ffffffff ffffffff ffffffff ................ 80000760: ffffffff ffffffff ffffffff ffffffff ................ 80000770: ffffffff ffffffff ffffffff ffffffff ................ 80000780: ffffffff ffffffff ffffffff ffffffff ................ 80000790: ffffffff ffffffff ffffffff ffffffff ................ 800007a0: ffffffff ffffffff ffffffff ffffffff ................ 800007b0: ffffffff ffffffff ffffffff ffffffff ................ 800007c0: ffffffff ffffffff ffffffff ffffffff ................ 800007d0: ffffffff ffffffff ffffffff ffffffff ................ 800007e0: ffffffff ffffffff ffffffff ffffffff ................ 800007f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> 80000800: 30303030 30303030 30303030 30303030 0000000000000000 80000810: 30303030 30303030 30303030 30303030 0000000000000000 80000820: 30303030 30303030 30303030 30303030 0000000000000000 80000830: 30303030 30303030 30303030 30303030 0000000000000000 80000840: 30303030 30303030 ffffffff ffffffff 00000000........ 80000850: ffffffff ffffffff ffffffff ffffffff ................ 80000860: ffffffff ffffffff ffffffff ffffffff ................ 80000870: ffffffff ffffffff ffffffff ffffffff ................ 80000880: ffffffff ffffffff ffffffff ffffffff ................ 80000890: ffffffff ffffffff ffffffff ffffffff ................ 800008a0: ffffffff ffffffff ffffffff ffffffff ................ 800008b0: ffffffff ffffffff ffffffff ffffffff ................ 800008c0: ffffffff ffffffff ffffffff ffffffff ................ 800008d0: ffffffff ffffffff ffffffff ffffffff ................ 800008e0: ffffffff ffffffff ffffffff ffffffff ................ 800008f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> md 0xb8000000 b8000000: 30303030 30303030 30303030 30303030 0000000000000000 b8000010: 30303030 30303030 30303030 30303030 0000000000000000 b8000020: 30303030 30303030 30303030 30303030 0000000000000000 b8000030: 30303030 30303030 30303030 30303030 0000000000000000 b8000040: 30303030 30303030 ffffffff ffffffff 00000000........ b8000050: ffffffff ffffffff ffffffff ffffffff ................ b8000060: ffffffff ffffffff ffffffff ffffffff ................ b8000070: ffffffff ffffffff ffffffff ffffffff ................ b8000080: ffffffff ffffffff ffffffff ffffffff ................ b8000090: ffffffff ffffffff ffffffff ffffffff ................ b80000a0: ffffffff ffffffff ffffffff ffffffff ................ b80000b0: ffffffff ffffffff ffffffff ffffffff ................ b80000c0: ffffffff ffffffff ffffffff ffffffff ................ b80000d0: ffffffff ffffffff ffffffff ffffffff ................ b80000e0: ffffffff ffffffff ffffffff ffffffff ................ b80000f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000100: ffffffff ffffffff ffffffff ffffffff ................ b8000110: ffffffff ffffffff ffffffff ffffffff ................ b8000120: ffffffff ffffffff ffffffff ffffffff ................ b8000130: ffffffff ffffffff ffffffff ffffffff ................ b8000140: ffffffff ffffffff ffffffff ffffffff ................ b8000150: ffffffff ffffffff ffffffff ffffffff ................ b8000160: ffffffff ffffffff ffffffff ffffffff ................ b8000170: ffffffff ffffffff ffffffff ffffffff ................ b8000180: ffffffff ffffffff ffffffff ffffffff ................ b8000190: ffffffff ffffffff ffffffff ffffffff ................ b80001a0: ffffffff ffffffff ffffffff ffffffff ................ b80001b0: ffffffff ffffffff ffffffff ffffffff ................ b80001c0: ffffffff ffffffff ffffffff ffffffff ................ b80001d0: ffffffff ffffffff ffffffff ffffffff ................ b80001e0: ffffffff ffffffff ffffffff ffffffff ................ b80001f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000200: ffffffff ffffffff ffffffff ffffffff ................ b8000210: ffffffff ffffffff ffffffff ffffffff ................ b8000220: ffffffff ffffffff ffffffff ffffffff ................ b8000230: ffffffff ffffffff ffffffff ffffffff ................ b8000240: ffffffff ffffffff ffffffff ffffffff ................ b8000250: ffffffff ffffffff ffffffff ffffffff ................ b8000260: ffffffff ffffffff ffffffff ffffffff ................ b8000270: ffffffff ffffffff ffffffff ffffffff ................ b8000280: ffffffff ffffffff ffffffff ffffffff ................ b8000290: ffffffff ffffffff ffffffff ffffffff ................ b80002a0: ffffffff ffffffff ffffffff ffffffff ................ b80002b0: ffffffff ffffffff ffffffff ffffffff ................ b80002c0: ffffffff ffffffff ffffffff ffffffff ................ b80002d0: ffffffff ffffffff ffffffff ffffffff ................ b80002e0: ffffffff ffffffff ffffffff ffffffff ................ b80002f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000300: ffffffff ffffffff ffffffff ffffffff ................ b8000310: ffffffff ffffffff ffffffff ffffffff ................ b8000320: ffffffff ffffffff ffffffff ffffffff ................ b8000330: ffffffff ffffffff ffffffff ffffffff ................ b8000340: ffffffff ffffffff ffffffff ffffffff ................ b8000350: ffffffff ffffffff ffffffff ffffffff ................ b8000360: ffffffff ffffffff ffffffff ffffffff ................ b8000370: ffffffff ffffffff ffffffff ffffffff ................ b8000380: ffffffff ffffffff ffffffff ffffffff ................ b8000390: ffffffff ffffffff ffffffff ffffffff ................ b80003a0: ffffffff ffffffff ffffffff ffffffff ................ b80003b0: ffffffff ffffffff ffffffff ffffffff ................ b80003c0: ffffffff ffffffff ffffffff ffffffff ................ b80003d0: ffffffff ffffffff ffffffff ffffffff ................ b80003e0: ffffffff ffffffff ffffffff ffffffff ................ b80003f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000400: ffffffff ffffffff ffffffff ffffffff ................ b8000410: ffffffff ffffffff ffffffff ffffffff ................ b8000420: ffffffff ffffffff ffffffff ffffffff ................ b8000430: ffffffff ffffffff ffffffff ffffffff ................ b8000440: ffffffff ffffffff ffffffff ffffffff ................ b8000450: ffffffff ffffffff ffffffff ffffffff ................ b8000460: ffffffff ffffffff ffffffff ffffffff ................ b8000470: ffffffff ffffffff ffffffff ffffffff ................ b8000480: ffffffff ffffffff ffffffff ffffffff ................ b8000490: ffffffff ffffffff ffffffff ffffffff ................ b80004a0: ffffffff ffffffff ffffffff ffffffff ................ b80004b0: ffffffff ffffffff ffffffff ffffffff ................ b80004c0: ffffffff ffffffff ffffffff ffffffff ................ b80004d0: ffffffff ffffffff ffffffff ffffffff ................ b80004e0: ffffffff ffffffff ffffffff ffffffff ................ b80004f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000500: ffffffff ffffffff ffffffff ffffffff ................ b8000510: ffffffff ffffffff ffffffff ffffffff ................ b8000520: ffffffff ffffffff ffffffff ffffffff ................ b8000530: ffffffff ffffffff ffffffff ffffffff ................ b8000540: ffffffff ffffffff ffffffff ffffffff ................ b8000550: ffffffff ffffffff ffffffff ffffffff ................ b8000560: ffffffff ffffffff ffffffff ffffffff ................ b8000570: ffffffff ffffffff ffffffff ffffffff ................ b8000580: ffffffff ffffffff ffffffff ffffffff ................ b8000590: ffffffff ffffffff ffffffff ffffffff ................ b80005a0: ffffffff ffffffff ffffffff ffffffff ................ b80005b0: ffffffff ffffffff ffffffff ffffffff ................ b80005c0: ffffffff ffffffff ffffffff ffffffff ................ b80005d0: ffffffff ffffffff ffffffff ffffffff ................ b80005e0: ffffffff ffffffff ffffffff ffffffff ................ b80005f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000600: ffffffff ffffffff ffffffff ffffffff ................ b8000610: ffffffff ffffffff ffffffff ffffffff ................ b8000620: ffffffff ffffffff ffffffff ffffffff ................ b8000630: ffffffff ffffffff ffffffff ffffffff ................ b8000640: ffffffff ffffffff ffffffff ffffffff ................ b8000650: ffffffff ffffffff ffffffff ffffffff ................ b8000660: ffffffff ffffffff ffffffff ffffffff ................ b8000670: ffffffff ffffffff ffffffff ffffffff ................ b8000680: ffffffff ffffffff ffffffff ffffffff ................ b8000690: ffffffff ffffffff ffffffff ffffffff ................ b80006a0: ffffffff ffffffff ffffffff ffffffff ................ b80006b0: ffffffff ffffffff ffffffff ffffffff ................ b80006c0: ffffffff ffffffff ffffffff ffffffff ................ b80006d0: ffffffff ffffffff ffffffff ffffffff ................ b80006e0: ffffffff ffffffff ffffffff ffffffff ................ b80006f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000700: ffffffff ffffffff ffffffff ffffffff ................ b8000710: ffffffff ffffffff ffffffff ffffffff ................ b8000720: ffffffff ffffffff ffffffff ffffffff ................ b8000730: ffffffff ffffffff ffffffff ffffffff ................ b8000740: ffffffff ffffffff ffffffff ffffffff ................ b8000750: ffffffff ffffffff ffffffff ffffffff ................ b8000760: ffffffff ffffffff ffffffff ffffffff ................ b8000770: ffffffff ffffffff ffffffff ffffffff ................ b8000780: ffffffff ffffffff ffffffff ffffffff ................ b8000790: ffffffff ffffffff ffffffff ffffffff ................ b80007a0: ffffffff ffffffff ffffffff ffffffff ................ b80007b0: ffffffff ffffffff ffffffff ffffffff ................ b80007c0: ffffffff ffffffff ffffffff ffffffff ................ b80007d0: ffffffff ffffffff ffffffff ffffffff ................ b80007e0: ffffffff ffffffff ffffffff ffffffff ................ b80007f0: ffffffff ffffffff ffffffff ffffffff ................ uboot> b8000800: ffffffff ffffffff ffffffff ffffffff ................ b8000810: ffffffff ffffffff ffffffff ffffffff ................ b8000820: ffffffff ffffffff ffffffff ffffffff ................ b8000830: ffffffff ffffffff ffffffff ffffffff ................ b8000840: ffffffff ffffffff ffffffff ffffffff ................ b8000850: ffffffff ffffffff ffffffff ffffffff ................ b8000860: ffffffff ffffffff ffffffff ffffffff ................ b8000870: ffffffff ffffffff ffffffff ffffffff ................ b8000880: ffffffff ffffffff ffffffff ffffffff ................ b8000890: ffffffff ffffffff ffffffff ffffffff ................ b80008a0: ffffffff ffffffff ffffffff ffffffff ................ b80008b0: ffffffff ffffffff ffffffff ffffffff ................ b80008c0: ffffffff ffffffff ffffffff ffffffff ................ b80008d0: ffffffff ffffffff ffffffff ffffffff ................ b80008e0: ffffffff ffffffff ffffffff ffffffff ................ b80008f0: ffffffff ffffffff ffffffff ffffffff ................ uboot>

Hi
2008/9/12 Fabio Pavanati fabio.pavanati@gmail.com:
Hi,
I'm designing a board that uses a i.MX31 and a Nand Flash conected to the Nand Flash controller of i.MX31. I use git to get latest revision of u-boot code, and apply the patches to get mx31 nand drivers from *Magnus Lilja *posted at *Wed Aug 6 14:19:20 CEST 2008* mailing list. I got u-boot + nand drivers compiled, but when I run it I got weird results when reading flash, like data is reading in reverse order in buffer. I think that, in a blank Flash, I would get 0xffffffff on starting addresses (0x00000000), but i was getting 0x30303030. More strange is that if I read address 0xB8000000 after 'nand read', I'll get same content of buffer memory where I put the result of nand read. Below I put some capture what I did.
I'm not sure that I understand what you mean, but 'nand read' instructs the i.MX31 NFC to read a page from the flash and the i.MX31 will fill the buffers at 0xB8000000. The nand driver will then copy the data from 0xB8000000 to the destination SDRAM location (0x80000000).
Could you know told me if it is ok? Sincerely I suspect that is inverted on buffer. 0x30303030 code would must be on spare area of NANDFC.
I've been using a JTAG debugger to erase and program the PDK NAND flash (also a large page device) and the JTAG debugger (from ronetix.at) and U-boot seem to agree on how to place the data. Using U-boot I read back data using 'nand read' and then compared that data with what I programmed.
Regards, Magnus
participants (2)
-
Fabio Pavanati
-
Magnus Lilja