Colibri i.MX7 SPL and Falcon mode


I’m working on fast boot of Colibri i.MX7 and the best way how to do it is to use SPL and falcon mode. Is there any documentation about this for Colibri i.MX7 eMMC version? SPL support for i.MX7 was already added to the U-boot so it should be possible.
What I already tried so far was to patch the Toradex U-boot to add SPL support, made SPL image and write it to the mmcblk0boot0 with dd if=SPL of=/dev/mmcblk0boot0 bs=512 seek=2 , but that didn’t work and nothing happened after boot.
I would appreciate any help with this.


We do not have an article and did not work with SPL/Falcon Boot on Colibri iMX7 so far. Upstreaming Colibri iMX7 eMMC support to the official U-Boot tree is planned, which should make it easier.

The location of the SPL seems right. The SPL needs the imx headers, but I assume that the i.MX 7 SPL support patches take care of that. One issue might be that Toradex uses UART in DTE mode. Make sure you have platform data with the use_dte boolean set to true, as we use in the Colibri iMX6 support: colibri_imx6.c « colibri_imx6 « toradex « board - u-boot-toradex.git - U-Boot bootloader for Apalis and Colibri modules

Thank you very much for your reply.
There is probably one more mistake I did and that are init functions - ccgr_init, gpr_init and static int mx7dl_dcd_table[]. All these are made for Colibri i.MX6, but not for Colibri i.MX7. I guess that I can use data from imx cfg file for mx7dl_dcd_table, but I don’t have any idea how to modify ccgr_init, gpr_init for Colibri i.MX7.
Could you please help me with that or point me to the right direction?


Colibri iMX6 has two different SKU (IT/non-IT) which needs different memory timings, that is why we initialize the memory controller using SPL. At that point we haven’t done this with Colibri iMX7, and it needs investigation to understand which registers of the memory controller need to get written.

I would rather suggest to continue use the i.MX header (DCD) to initialize DDR as before… In that mode there should be no mx7dl_dcd_table necessary. As for ccgr_init and gpr_init, I think this is only needed for i.MX 6. You can check existing i.MX 7 enabled boards, if others don’t need it, Colibri iMX7 should not need it either. As mentioned before, the only catch with Colibri iMX7 is probably the DTE setting of the UART.