Boundary Devices is happy to release the latest U-Boot v2018.07 with support for all our Nitrogen Families of SBCs and SOMs. The new update includes support for the Nitrogen8M (i.MX8), MIPI display support, as well as Driver improvements:
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. 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
- u-boot.nitrogen8m for the Nitrogen8M
The latest upgrade.scr
U-Boot script is included so it can be copied alongside the U-Boot binary above to the root of your media storage (formatted in FAT or ext2/3/4). Then, once the media is inserted into the board, you can simply run the following command from U-Boot prompt:
=> run upgradeu
If unsure about this shorten procedure, please make sure to read the flashing procedure section.
What’s new?
i.MX8M support
The big news of this release is that it supports all our boards including the Nitrogen8M based on i.MX8MQ CPU. Just like the kernel branch 4.9.x_2.0.0 it is much better to have all the platforms using the same source code.
Display configuration support
Previous U-Boot versions supported LVDS and HDMI display configuration for i.MX6/7 boards. This version now also supports MIPI display, required for i.MX8M-based platforms. Here is an example on how to set up the board to use our BD080MCC1 MIPI display.
=> setenv fb_mipi ltk080a60a004t
=> savee
=> reset
Driver improvements
Although no exhaustive list of changes is available between v2017.07 and v2018.07, we know many drivers have been improved. For instance USB support (and especially USB3.0) is much better with v2018.07. But mmc and net drivers also receive their share of improvements during last year of U-Boot development.
Build instructions
Getting the source code
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-v2018.07
~$ cd u-boot-imx6
~$ sudo apt-get install device-tree-compiler
Choosing the proper defconfig
Here you'll need to find and make the relevant defconfig for your board. If you have the board running U-Boot already, 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 configs/ -name "nit*defconfig"
configs/nit6xlite_defconfig
configs/nitrogen6_max_defconfig
configs/nitrogen6q_defconfig
configs/nitrogen6q_som2_1g_defconfig
configs/nitrogen6sx_defconfig
configs/nitrogen6_vm_defconfig
configs/nitrogen7_defconfig
configs/nitrogen8m_defconfig
...
Building for i.MX6/7
Now compile that defconfig. For 32-bit platforms, we'll use nitrogen6q_defconfig as an example.
~/u-boot-imx6$ sudo apt-get install crossbuild-essential-armhf
~/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
Building for i.MX8
For 64-bit platforms, we'll use nitrogen8m_defconfig as an example.
~$ sudo apt-get install crossbuild-essential-arm64
~$ export ARCH=arm64
~$ export CROSS_COMPILE=aarch64-linux-gnu-
~$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-7.9.bin
~$ chmod +x firmware-imx-7.9.bin
~$ ./firmware-imx-7.9.bin
~$ cp firmware-imx-7.9/firmware/hdmi/cadence/signed_hdmi_imx8m.bin u-boot-imx6/
~$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin u-boot-imx6/
~$ cd u-boot-imx6
~/u-boot-imx6$ make nitrogen8m_defconfig
~/u-boot-imx6$ make flash.bin -j4
At this point, you can rename the bootable image from flash.bin
to u-boot.${uboot_defconfig}
~/u-boot-imx6$ cp flash.bin u-boot.nitrogen8m
Flashing procedure
You can use the copy_upgrade.sh
script to copy the bootable binary and the upgrade script 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 (via the serial terminal).
Hit any key to stop autoboot: 0
=> run upgradeu
This will run the 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 after the first reboot. 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.