U-Boot v2016.03

Published on April 14, 2016

Archived Notice

This article has been archived and may contain broken links, photos and out-of-date information. If you have any questions, please Contact Us.

We've just released a new version of U-Boot based on mainline v2016.03:

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 6x_upgrade U-Boot script is 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:

What's new?

Apart from using the latest mainline version, the main addition of this version is Nitrogen7 (i.MX7) support.

Note that this Nitrogen7 platform (and only this platform) requires to use some new QSPI parameters, so make sure to copy the files named qspi-* to the root of your media along with the usual u-boot. file.

Other than that, the release brings the exact same features as our previous release v2015.07. We strongly recommend you to read our previous blog post in case you haven't read it yet:


The usual compilation disclaimers apply for this. It is highly recommended to use the gcc-arm-linux-gnueabihf package available on Ubuntu.

~$ 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-v2016.03 ~$ 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.

=> echo $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 all ~/u-boot-imx6$ ./tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "update script" -d board/boundary/nitrogen6x/6x_upgrade.txt 6x_upgrade

Now you'll have a u-boot.imx file compiled. Rename the u-boot.imx file to u-boot.{uboot_defconfig} (see below), then move that and the 6x_upgrade script to the Boot partition of the image you created (see here for instructions on creating a Fido Yocto image). Interrupt u-boot and run the u-boot commands below.

In the u-boot just built, the environment variable uboot_defconfig is defined to show which defconfig was used in the build process. Unless you're already on a 2015.07 or later u-boot, you won't have this yet, so for the 1st upgrade you need to set it manually.

You will need to rename u-boot.imx when copying to the SD card, ie.

~/u-boot-imx6/$ cp u-boot.imx /u-boot.nitrogen6q

We changed this so that the next time you upgrade, there will be little risk of accidentally using the wrong u-boot.imx file.

If your u-boot prompt is "U-boot >" then run:

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 script and look for a file u-boot.{uboot_defconfig} and burn it. At this point it might be worth while to clear your envionment 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.