March 29, 2017

U-Boot v2017.03

We’re glad to release the latest U-Boot v2017.03 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 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?

First, this version includes all the latest features and fixes available from mainline U-Boot.

One noticeable change is the use of Kconfig to select most of the options now (instead of piling them up in the config header).

U-Boot v2017.03 Kconfig

Also, another important change is the support of sparse images when using Android fastboot tool.

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.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 -j2
~/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

Flashing procedure

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 root folder of your media (SD Card / USB / SATA drive).

~/u-boot-imx6/$ cp u-boot.imx <mount_path>/u-boot.<uboot_defconfig>
~/u-boot-imx6/$ cp 6x_upgrade <mount_path>/

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 <uboot_defconfig>
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 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.