We’re glad to release the latest U-Boot v2017.07 with support for all our platforms:
For the impatient
Our build server automatically generates and uploads all the latest binaries to this address:
The README file contains the exact commit ID of this build images. Also, the up-to-date code>6x_upgrade/upgrade.scr U-Boot scripts are included so you can copy all the files directly to the root of your media storage. For those not sure about which binary to download, here is a quick summary for our boards:
- u-boot.nitrogen6q for the Nitrogen6x/BD-SL-i.MX6 (Sabre-Lite) using the imx.6Q
- u-boot.nitrogen6q2g for the 2G RAM version of Nitrogen6x/Sabre-lite 6Q
- u-boot.nitrogen6_max for the Nitrogen6_MAX
- u-boot.nitrogen6qp_max for the Nitrogen6QP_MAX
- u-boot.nitrogen6q_som2_1g for the Nit6X-SoM V2
- u-boot.nit6xlite for the Nitrogen6x-Lite
- u-boot.nit6xlite1g for the Nitrogen6x-Lite with 1G RAM
- u-boot.nitrogen6sx for the Nitrogen6_SoloX
- u-boot.nitrogen7 for the Nitrogen7
Make sure to re-initialize your U-Boot environment after flashing the new binary in order to leverage the new feature, see flashing procedure.
What’s new?
Wait what, already a new release? Yes, although there isn't much to say feature-wise, there is a lot of differences to note with this release!
Goodbye 6x_bootscript!
That's probably the most noticeable change, this release marks the end of the 6x_bootscript
as we know it today. The reason is simple, 6x_bootscript (formerly 6q_bootscript) was introduced back in 2012 when there was no standard for booting an OS. Since then, U-Boot included such standard:
The default bootscript name is now boot.scr
for any OS which makes much more sense that our 6x_bootscript
that wasn't only for i.MX6x any more.
- So is
boot.scr
just a renamed version of6x_bootscript
?
No, not exactly, our previous bootcmd was done manually with our own variable naming convention. If we want to be standard, we need to change variables to match the new convention.
- So a new U-Boot won't be able to boot older OS images using
6x_bootscript
?
We still want our customers to have a plug & play experience so we will keep some legacy support of 6x_bootscript
which means that older images will boot just fine. BUT, our goal is to get rid of that legacy support at some point in the future.
- Any other interesting facts due to that change?
Yes, 2 of them:
- The new bootcmd looks for
boot.scr
/6x_bootscript
in different locations now:- Both
/
and/boot/
are looked into
- Both
- All the bootscripts are now located under their own folder instead of Nitrogen6x one:
Any other noticeable change?
One update is the display support for both Nitrogen6SX and Nitrogen7 which was previously missing. Then the rest of the changes is mostly a refactoring of the source code. All our boards share a common architecture, so the idea was to create a common folder containing everything shared across all platforms:
This includes Ethernet PHY initialization, pad control definition and default configuration for DDR & clocks. Although this refactoring doesn't change anything for a given platform, it reduces its board file quite a bit.
Build instructions
The usual compilation disclaimers apply for this. It is highly recommended to use the gcc-arm-linux-gnueabihf package available on Ubuntu/Debian.
~$ sudo apt-get install gcc-arm-linux-gnueabihf
First, clone our U-Boot git repository. This is the branch you'll need to compile and install to work with the new kernel.
~$ git clone https://github.com/boundarydevices/u-boot-imx6
-b boundary-v2017.07
~$ cd u-boot-imx6
Here you'll need to find and make the relevant defconfig for your board. If you are using a U-Boot >=2015.07, then at the U-Boot prompt you can type the following to see which defconfig you should build.
=> printenv uboot_defconfig
Otherwise, to see all the defconfigs, use this command and pick the one that is right for you.
~/u-boot-imx6$ find . -name "nit*defconfig"
./configs/nitrogen6_vm1g_defconfig
./configs/nitrogen6q2g_defconfig
./configs/nitrogen6dl2g_defconfig
./configs/nitrogen6s1g_defconfig
./configs/nit6xlite_defconfig
./configs/nitrogen6q_fl_defconfig
./configs/nitrogen7_defconfig
./configs/nitrogen6q_som2_2g_defconfig
./configs/nitrogen6sx_defconfig
./configs/nitrogen6dl_defconfig
./configs/nitrogen6q_defconfig
./configs/nitrogen6s_defconfig
./configs/nitrogen6_lum_dl1_defconfig
./configs/nitrogen6_vm_defconfig
./configs/nitrogen6q_som2_1g_defconfig
./configs/nitrogen6q_som2_4g_defconfig
./configs/nit6xlite1g_defconfig
./configs/nitrogen6qp_max_defconfig
./configs/nitrogen6_max_defconfig
Now compile that defconfig, here I'll use nitrogen6q_defconfig as an example.
~/u-boot-imx6$ export ARCH=arm
~/u-boot-imx6$ export CROSS_COMPILE=arm-linux-gnueabihf-
~/u-boot-imx6$ make nitrogen6q_defconfig
~/u-boot-imx6$ make -j2
Flashing procedure
Now you'll have a u-boot.imx
file compiled. The copy_upgrade.sh
can be used to rename the u-boot.imx
file to u-boot.{uboot_defconfig}
and move that and the upgrade scripts to the root folder of your media (SD Card / USB / SATA drive).
~/u-boot-imx6/$ ./copy_upgrade.sh /
Plug your media to the platform, power up the board and interrupt u-boot to run the commands below. If your u-boot prompt is "U-boot >" then you need to set uboot_defconfig
to the value that matches your platform. Here is an example for Nitrogen6x/BD-SL-i.MX6:
Hit any key to stop autoboot: 0
U-Boot > setenv uboot_defconfig nitrogen6q
U-Boot > run upgradeu
Otherwise just run:
Hit any key to stop autoboot: 0
=> run upgradeu
This will run the 6x_upgrade
or upgrade.scr
script and look for a file u-boot.${uboot_defconfig}
and burn it. At this point it might be worth while to clear your environment variables, this will set you up with the default environment variables and no more.
Hit any key to stop autoboot: 0
=> env default -a
=> savee
Then as a final note, if you've somehow managed to brick your board through this process and need help. Well, we already wrote a blog post here about that topic.