Boot Configuration for i.MX6

Can anyone explain how the boot modes and configuration work for the Colibri i.MX6 DL? I am reading the reference manual for the i.MX6 and it’s not straight forward especially since I do not know how it is implemented on the Colibri module.

Also, how would you change the boot configuration so that the program is stored in the EMMC NAND flash on the module? What does the UART A boot console do in this case?

I am new to these types of microprocessors and just want to make sure all the hooks are in place when a carrier board is designed for the Colibri module.

Thanks
-David

Our modules (including Colibri iMX6DL) are fused (or strapped) to boot from the internal eMMC. So at the very least, the boot ROM must load the bootloader from the eMMC. However, from that point the OS/kernel, rootfs, etc can be loaded from just about anywhere (eMMC, SD card, USB stick, network). If, however, the bootloader on the eMMC is corrupted, then a recovery mode is available for loading the bootloader into RAM via USB.

UART A is commonly used to access the bootloader console for the purposes of flashing an image and/or modifying the bootloader configuration.

Which operating system are you expecting to use?

View the instructions for how our Linux images are flashed to the internal eMMC

Thanks for the explanation. So UART A is pretty much the only way to modify the bootloader configuration? What would be the most convenient way of programming the module for like a production line product?

I am planning on using a Linux operating system.

Thanks
-David

Thanks for the explanation.

You are very welcome.

So UART A is pretty much the only way to modify the bootloader configuration?

Yes, unless you force the module into USB recovery mode and follow a different strategy in your deployment.

What would be the most convenient way of programming the module for like a production line product?

For more information on our recommended production programming procedure please have a look here.

@dcwang3 there are some commands to manipulate the bootloader environment from within the Linux image. However, the serial console is still necessary to flash the image. Production programming can be fully automated by using the serial console - the link provided by Marcel offers an example python script.

is UART A supposed to be used as a dedicated debugger port or can it also be multiplexed to use that port with say some kind of sensor or device? The eval board schematics show headers with jumpers, so I am assuming that the serial debugger is only valid during POR before the boot image is initiated…Just want to double check.

thanks

@dcwang3 UART_A is dedicated to serial/debug console by default in all run states/modes (not just during POR). This functionality must be disabled or transitioned to a different UART port if you want to use UART_A for other purposes.