Dear NXP:
I am doing nand bring up on MCIMX6ULL-EVK board now.
The nand is "Micron MT29F8G08ABACAWP-ITC".
(1)Hardware-side finished work:
a)According to "i.MX 6ULL EVK Board Hardware User's Guide -IMX6ULLEVKHUG.pdf":
2.8. NAND flash
NAND flash is not populated by default on the i.MX 6ULL EVK board. To boot from the NAND flash, the following reworks should be implemented:
1. Remove the QSPI Nor flash device
2. Populate the NAND device
3. Change the Boot-mode switch (SW601) settings to ON, ON, OFF, ON
4. The developer should adjust the BOOT_CFG settings for specified NAND Flash device, by exchanging the pull up/down resistors. See the main board schematic for more information.
b)According to FUSE MAP(Boot Cfg) on EVK board Schematics:
Note: Action: N/A means do nothing, the resistors have been welded by default on EVK!
******************************************************************************************************************
BOOT_CFG1[7] BOOT_CFG1[6] BOOT_CFG1[5:4] BOOT_CFG1[3:2]
Boot device selection BT_TOGGLEMODE Pages in block Nand Number of Devices
1 0-raw NAND 01-64 00-1
Action N/A N/A remove R619 N/A
BOOT_CFG1[1:0]
Nand Row address bytes
00-3
Action move R623 to R632, remove R624
******************************************************************************************************************
(Other BOOT CFG such as BOOT_CFG2, used default setting.)
(2)Software-side:
uboot version: imx_v2016.03_4.1.15_2.0.0_ga
kernel version: imx_4.9.11_1.0.0_ga
MFGTOOLS: L4.1.15_2.0.0-ga_mfg-tools
We have prepared flash images:
u-boot-imx6ull14x14evk_nand.imx, zImage, zImage-imx6ull-14x14-evk-gpmi-weim.dtb, rootfs.tar.bz2
Then used mfgtools "mfgtool2-yocto-mx-evk-nand.vbs" to flash. According to the log, uboot nand driver read nand MANUFACTURE ID && DEVICE ID failed, read id result was all 0xff, for this nand chip, it should be 0x2c && 0xd3.
Recognize nand chip failed. (maf_id, dev_id)
Below is my nand-rework patch:
(2-1)uboot:
2-1-1)
diff --git a/include/configs/mx6ullevk.h b/include/configs/mx6ullevk.h
index ad8afad..89ff52c 100644
--- a/include/configs/mx6ullevk.h
+++ b/include/configs/mx6ullevk.h
@@ -120,7 +120,7 @@
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_BOOTARGS_CMA_SIZE \
- "mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
+ "mtdparts=gpmi-nand:64m(boot),16m(user1),16m(logo),8m(kernel),1m(dtb),800m(rootfs)\0"\
"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
"nand read ${fdt_addr} 0x5000000 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
2-1-2)
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index fdd0074..f1ce7f9 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -41,6 +41,9 @@ struct nand_flash_dev nand_flash_ids[] = {
* listed by full ID. We list them first so that we can easily identify
* the most specific match.
*/
+ {"MT29F8G08ABACAWP 8G 3.3V 8-bit",
+ { .id = {0x2c, 0xd3} },
+ SZ_4K, SZ_1K, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },
{"TC58NVG2S0F 4G 3.3V 8-bit",
{ .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} },
SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },
(2-2)kernel:
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 2af9869..823a65e 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = {
* listed by full ID. We list them first so that we can easily identify
* the most specific match.
*/
+ {"MT29F8G08ABACAWP 8G 3.3V 8-bit",
+ { .id = {0x2c, 0xd3} },
+ SZ_4K, SZ_1K, SZ_256K, 0, 8, 224, NAND_ECC_INFO(8, SZ_1K) },
{"TC58NVG0S3E 1G 3.3V 8-bit",
{ .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} },
SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512),
My questions were below:
1) Dose MCIMX6ULL-EVK support "Micron MT29F8G08ABACAWP-ITC"? (see attached datasheet)
2) HW-Rework was ok? Is there any method that could be used to check rework was ok from hw-side?
3) SW patch was ok? Any patch was missed? (attached log for fail details)
Thanks a lot!
Dear Alex,
do you solve your problems? Are you able to use the NAND flash with imx6ull evk?
Best regards,
Stefano.
Hi Stefano:
Sorry I have not solved this problem. Now I am busy on other project.
My last debug was stop on the point that after hardware nand rework, nand_scan in uboot could not recognize the nand chip, log showed: "No NAND device found". The kernel boot failed later.
I will update the status if I make progress.
Best regards
Alex
Hi alex
yes this nand can be used with i.MX6ULL.
For software patches one can look on
How-To use NAND boot on i.MX6UL EVK board
Simple baremetal nand test can be reused from i.MX6DQ/SDL SDK
(zip can be found onhttps://community.nxp.com/thread/432859 )
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor:
Thanks a lot!
Best regards
Alex
Hi Igor,
I try to follow your suggestion and use the baremetal tests, but I am unable to download the correct toolchain.
Are you sure that the required Sourcery CodeBench Lite is available on the Mentor Website?
Following the readme that point me to the sourcery codebench site I can't find the 13 November 2012 release.
Even the page reported in the readme ([hidden] for ARM EABI ) has only documentation...
Thank you for your help,
Stefano.