IMX7 DDR3 initialization

I’m considering using Colibri IMX7 for a project. This will be bare metal. No Linux.

Keep in mind that I know nothing about Linux.

So, I need to initialize the DDR3 and I take a look here (in UBoot).

→ root/board/toradex/colibri_imx7

The DDR3 initialization is here, but there are 2 versions of the initialization.
An assembler version

→ plugin.S

and some crappy scripted version

→ imximage.cfg

They are different. Why? Which is correct? I really don’t want to spend 3 days of my life downloading GBs of linux crap just to compile uboot ‘and see what you get’

Does anyone know… or even care?


U-boot is not Linux, U-boot is a bare metal app that we use to start Linux kernel as well as other OSes or standalone applications. If you want to write a bare metal application I’d recommend starting with familiarising yourself with the platform you’re about to work with, for example reading the reference manual for imx7 SoC. On imx7 ddr3 memory controller initialisation is performed by the boot ROM, and it relays on the NXP specified structure called Device Configuration Data (DCD) (the content of the crappy “script”). I’m unable to find use of plugin.S on imx7 platform in our u-boot, please make sure you’re using u-boot code from our git without any external patches/modifications.