As some of you may have noticed, the recent Ubuntu and Yocto demo images are no longer separate for different Wandboard variants (Solo, Dual, Quad).
This is due to the use of something called SPL bootloader. SPL allows you to auto-detect your CPU and memory before loading u-boot, the main bootloader.
So how does this work?
This is going to be a little technical about iMX6/ARM boot process.
As many of you already know, the iMX6 boot process has the following steps:
1. ROM code (hard coded inside the iMX6 CPU)
2. u-boot bootloader (in SD card)
3. Kernel (Linux, BSD, … )
4. OS / Userland (Android, Ubuntu, FreeBSD etc)
In a traditional boot process memory is set up by ROM code. ROM reads a table of memory parameters inside u-boot, and sets up the memory.
So, for different memory configurations, different tables, and hence, different u-boot binaries are needed.
SPL is a very small bootloader able to fit into the very small amount of memory (128kB) available inside the CPU. SPL does autodetection and sets up memory accordingly. After memory is set up, SPL loads u-boot, and the booting proceeds as usual. So SPL is an additional booting step between “1” and “2” in the list above.
The big benefit of this is that we can have one SD card image for all configurations.
How do I get this? Is it open source?
Yes, of course it is open source. SPL as a part of u-boot.
Download the latest Wandboard source code package (downloads section). Instructions are in the doc/ folder inside the source tarball.