Boundary Devices - Nitrogen6X

Board description

The Nitrogen6X is an embedded single board computer (SBC) based on the NXP i.MX 6 applications processor. It can be built with the i.MX 6 Single, Dual Lite, Dual, and Quad processors, with the Quad core standard on all of our boards. It is designed to rugged commercial standards so it can be used for both development purposes or mass production

URL: https://boundarydevices.com/product/nitrogen6x-board-imx6-arm-cortex-a9-sbc/
Wiki: https://boundarydevices.com/wiki/

Test results

The Yocto Project releases in the table below have been tested by the Mender community. Please update it if you have tested this integration on other Yocto Project releases:

Yocto Project Build Runtime
sumo (2.5) :test_works: :test_works:

Build Means that the Yocto Project build using this Mender integration completes without errors and outputs images.

Runtime Means that Mender has been verified to work on the board. For U-Boot-based boards, the integration checklist has been verified.

Getting started

Prerequisites

  • A supported Linux distribution and dependencies installed on your workstation/laptop as described in the Yocto Mega Manual

  • NOTE. Instructions depend on which Yocto version you intend to use.

  • Google repo tool installed and in your PATH.

Configuring the build

Setup Yocto environment

Set the Yocto Project branch you are building for:

# set to your branch, make sure it is supported (see table above)
export BRANCH="sumo"

Create a directory for your mender-nxp setup to live in and clone the

meta information.

mkdir mender-nxp && cd mender-nxp

Initialize repo manifest:

repo init -u https://github.com/mendersoftware/meta-mender-community \
-m meta-mender-nxp/scripts/manifest-nxp.xml \
-b ${BRANCH}

Fetch layers in manifest:

repo sync

Setup build environment

Initialize the build environment:

source setup-environment nxp

NOTE! You need to accept the Freescale EULA at ‘…/sources/meta-freescale/EULA’. Please read it and in case you accept it, add:

ACCEPT_FSL_EULA = "1" 

in your local.conf.

Building the image

You can now proceed with building an image:

MACHINE=nitrogen6x bitbake core-image-base

Replace core-image-base with your desired image target.

Using the build output

After a successful build, the images and build artifacts are placed in tmp/deploy/images/nitrogen6x/.

  • tmp/deploy/images/nitrogen6x/core-image-base-nitrogen6x.sdimg

  • tmp/deploy/images/nitrogen6x/core-image-base-nitrogen6x.mender

The disk image (with .sdimg suffix) is used to provision the device storage for devices without Mender running already. Please proceed to the official documentation on provisioning a new device for steps to do this.

On the other hand, if you already have Mender running on your device and want to deploy a rootfs update using this build, you should use the Mender Artifact files, which have .mender suffix. You can either deploy this Artifact in managed mode with the Mender server (upload it under Releases in the server UI) or by using the Mender client only in Standalone deployments.

Flash instructions

The default configuration assumes that you are booting from the top uSD card slot, note that there is a uSD at the bottom side of the board, which will not work.

Write the disk-image to the uSD using the following command:

sudo dd if=core-image-base-nitrogen6x.sdimg of=<block device>

Insert the uSD in to the device and halt it in U-Boot on the first boot. You should see:

Hit any key to stop autoboot:  0                                                                                                            
=>

The Nitrogen6X stores the U-Boot binary on a serial EEPROM, which means that we need one additional step to make sure that the U-Boot binary that we build gets written to the EEPROM.

Luckily there is already an script prepared to flash U-Boot, and the binary is installed on the correct location on the uSD, you just need to run:

=> run upgradeu

Takes around one minute to complete, and you will be prompted to reset the board once it is complete.

Also remember to run the following once after you have performed the U-Boot upgrade:

=> env default -a
=> saveenv

This will make sure that the correct U-Boot environment is used.

References

  • The official Mender documentation explains how Mender works. This is simply a board-specific complement to the official documentation.

If this post was useful to you, please press like, or leave a thank you note to the contributor who put valuable time into this and made it available to you. It will be much appreciated!

Hi Mirzak,

I am using Nitrogen6x_solo and I was able to successfully build .sdimg and .mender images.

Yocto Branch = Warrior

Query 1 : I do not see any mender env variables in u-boot.Does this mean automatic patching is not working as intended? If so,should we do Manual u-boot integration?

Query 2 : I am not able to execute run upgradeu in u-boot successfully.No update.scr file is present in Boot partition.

Please help me figure out the issues.Thanks in advance.

Hi @Naveen, welcome to Mender hub.

For Mender environment variables, if you run “env default -a -f” from the U-boot prompt, then do you see them? Depending on where U-Boot stores it’s environment, simply installing the SDIMG may not reset the environment to default so you may need to do it manually. (don’t forget “saveenv” after the “env default” command).

For the upgrade.scr, you should be able to add something like the following to local.conf to have that file included:

IMAGE_BOOT_FILES_append = " \
	upgrade.scr-${MACHINE};upgrade.scr \
"