How-To use NAND boot on i.MX6UL EVK board

Showing results for 
Show  only  | Search instead for 
Did you mean: 

How-To use NAND boot on i.MX6UL EVK board

How-To use NAND boot on i.MX6UL EVK board

On default i.MX6UL EVK board, it supports three boot device: SD Card boot in main board, micro-SD card boot in CPU board and QSPI-FLASH in CPU board. As we know, i.MX6UL supports NAND device boot and there are NAND device footprint in the EVK board. If customer wants to use NAND boot, there is something to rework in both hardware and software.

Hardware Modification

NAND device boot mode is conflict with micro-SD card and QSPI-FLASH device boot modes.

1. Remove U303 in CPU board and DO NOT insert micro-SD card into J301

2. Solder U302 NAND FLASH on EVK board

Software Modification

In Yocto-Linux BSP standard release, NAND device boot is not supported. We need add support in u-boot, linux DTB and MFGTool.

1. u-boot-imx modification and build

  • Replace u-boot-imx/include/configs/mx6ul_14x14_evk.h with the same file in the attachment
  • Copy mx6ul_14x14_evk_nand_defconfig in the attachment to u-boot-imx/configs/
  • Build the new u-boot.imx: make distclean; make mx6ul_14x14_evk_nand_defconfig;make
  • Rename u-boot.imx to u-boot-imx6ulevk_nand.imx

2. Linux DTB modification and build

  • Copy imx6ul-14x14-evk-gpmi-weim.dts in the attachment to kernel/arch/arm/boot/dts/
  • Build imx6ul-14x14-evk-gpmi-weim.dtb: make imx6ul-14x14-evk-gpmi-weim.dtb
  • Rename imx6ul-14x14-evk-gpmi-weim.dtb to zImage-imx6ul-14x14-evk-gpmi-weim.dtb

3. MFGTOOL modification

  • Copy mfgtool2-yocto-mx6ul-evk-nand.vbs in the attachment to MFGTOOL root direcory
  • Copy u-boot-imx6ulevk_nand.imx and zImage-imx6ul-14x14-evk-gpmi-weim.dtb to MFGTOOL\Profiles\Linux\OS Firmware\firmware\
  • Copy u-boot-imx6ulevk_nand.imx and zImage-imx6ul-14x14-evk-gpmi-weim.dtb to MFGTOOL\Profiles\Linux\OS Firmware\files\

Congratulations!!!  You can burn NAND image to i.MX6UL-EVK board with mfgtool2-yocto-mx6ul-evk-nand.vbs script now!!


Hi chen,

I am working on IMX6UL-EVK board. I want to run bare metal project (which does not involve any OS). Do you know how to run a helloworld project on bare metal. Could you please suggest any development tool? Do I need any extra hardware for debugging. Right now I am using processor expert. I have built the project but I don't know how to run or debug it. Could you please guide me in the right direction.

Thanks in advance.

Hi Kumar,

I suggest you to use platform sdk package to try bare-metal building and testing. There is sample code in platform SDK. You can contact with FAE.

If you have built a correct i.MX binary image. You can use the attached tool to download it to your i.mx6UL EVK board. (Please change your board boot mode to serial download mode first)



Hi  Oliver,

Thanks for you quick reply..

Could you please give me the link for platform SDK. Is this a separate tool or we have to integrate in Processor expert? Could you suggest some links or docs on how to build using platform sdk..



Hi chen,

After doing all that you say in your post, we can´t burn Nand image.

First of all i have to say that there is a R324 into the nand footprint that shouldn't be removed because it goes to the pin NAND_DATA0, so i have removed it and i have shorted its pads with tin in order to place the nand.

Once the nand is placed we have tried to burn it unsuccessfully. Here you can see two print screen of the process.

We have tried it with both "mfgtools-with-rootfs" and "mfgtools-without-rootfs" with the same result.

Any help will be apreciated

Thanks and best regards



I have achieved to see in the teraterm what the device was showing while burning the nand, and it seems that 1Gbit is not enough.


Hi again,

Finally we have achieved to burn the nand flash but for that, we have had to reduce the filesystem size from about 140MB to 18MB (compressed) in a very slipshod way because our target was to see if we really could burn the nand flash.

Obviously after this, the system boots with an error because the filesystem is not complete but i insist, this is only to see that the nand flash can be burned.

Here you can check it out.


At this point the question is, is there any other smaller filesystem that we can use, or which files could we remove so that this filesystem gets quite smaller but keeps working well?

Please any help will be apreciated.

Happy christmas!

Thanks and best regards.

Hi Alberto Lubeiro ,

What Yocto image are you building?

Have you tried core-image-minimal?


Hi Luis,

So far, we have only burned the nand with the image which comes with the Mfgtool.

We have not tried core-image-minimal yet, but we are going to do it in a while. I'll post here the result.

We have also downloaded fsl-image-gui and its filesystem is heavier than the Mfgtools's

Thanks and best regards

Hi Luis,

We have already tried it with the core-minimal-gui.

Fisrt of all we have burned the nand successfully


But when it boots it shows an error "No working init found"

We have guessed that this is because there are some files missing.


After adding them, we have tried it again with the same error as result.

I would like to attach the log file but It seems like it is not possible, so i'll send it to Iñigo so he can give it to you.

Thanks and best regards

I have this working with the recommended 32G flash to the point where it will boot u-boot and the kernel, but can't find init on the rootfs. I'll keep working on that, but can you confirm the boot configuration for a 2G flash? We are intending to use the Macronix MX30LF2G18AC.

2G/4G-bit SLC NAND Flash

- Bus: x8

- Page size: (2048+64) byte,

- Block size: (128K+4K) byte,

- Plane size:

1024-block/plane x 2 for 2Gb

I think we want:

Boot_cfg1[0:1]  = 00 (3 row address bytes)

Boot_cfg1[2:3] = 00 (1 nand device)

Boot_cfg1[4:5] = 01 (64 pages per block)

Boot_cfg1[6] = 0

Boot_cfg1[7] = 1 (nand boot)

So, this would entail moving R623 to R632 to set CFG1[1] to 0, then setting dips switches to D1=off, D2=off, D3=off, D4=on

Does this seem correct?

Thanks -- Don

We follow this guide to try to use NAND boot on i.MX6UL EVK board

The NAND Flash we used is MX30LF1G18AC - 3V, 1G-bit NAND Flash Memory

The configuration of NAND flash as following:

  • BOOT_CFG1[7] = 1'b1 - Boot fro  NAND Inferface
  • BOOT_CFG1[6] = 1'b0 - raw NAND
  • BOOT_CFG1[5:4] = 2'b01 - 64 pages in block
  • BOOT_CFG1[3:2] = 2'b00 - 1 nand device
  • BOOT_CFG1[1:0] = 2'b01 - 2 row address cycles

The MfgTool we used is L4.1.15_1.0.0_ga-mfg-tools.tar.gz

After burned the NAND flash, we change the boot mode to boot from NAND

But can not see anything from console(we already make sure the baud rate setting)

we can change to boot from MicroSD, so we use U-Boot tool "nand dump" to make sure MfgTool already burned the image we want

Please help us this issue

I am also trying to boot from nand (bootloader on spi flash & rootfs/kernel/device tree on nand flash. I notice however that the gpmi driver is not probed. I give some relevant parts of the device tree:

pinctrl_gpmi_nand: gpminandgrp { /* 4Gbit NAND flash */
fsl,pins = <

&gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand>;
status = "okay";

Nand flash device is ML02G100 (spansion)

Do I miss something?

Dear Oliver Chen Employee and ebiz ws,

Is that the above procedure works for i.mx6ULL EVK hardware as well, with same hardware and software modifications in L4.9.11_1.0.0-ga Yocto version BSP's and L4.9.11_1.0.0-ga_mfg-tools??

And may I know the above document was created and tested for which version of Yocto BSP's and mfg-tools?

Currently am facing some issues with one my thread posted below? 

Could you please do the needful in resolving the issue for the query posted in the above thread

Kindly do the needful as early as possible

Many Thanks in advance

Eagerly awaiting for your replies


I tried to generate u-boot.imx following the extep on this post but something is going wrong.

I'm able to build u-boot with the mx6ul_14x14_evk_defconfig configuration, but when I try to build mx6ul_14x14_evk_nand_defconfig, It get stuck:

Looks like "CONFIG_SYS_TEXT_BASE=0x87800000" option is lacking on the downloaded "mx6ul_14x14_evk_nand_defconfig". Actually this attached file looks really small compared with other defconfig files. 

If I add the "sys_text" option manually, the build proccess continues with many warning and finally it fails with the following error:

No ratings
Version history
Last update:
‎08-26-2015 11:20 PM
Updated by: