# Toradex Colibri iMX7 Dual 1GB

**URL:** <https://hub.mender.io/t/toradex-colibri-imx7-dual-1gb/131>\
**Category:** Yocto Project\
**Tags:** yocto, rocko, nxp, toradex\
**Created:** [November 12, 2018, 2:24pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-1gb/131 "2018-11-12T14:24:45Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mirzak](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/mirzak/32/2056_2.png) [@mirzak](https://hub.mender.io/u/mirzak)\
**Post date:** [November 12, 2018, 2:24pm UTC](https://hub.mender.io/t/toradex-colibri-imx7-dual-1gb/131/1 "2018-11-12T14:24:45Z")

</div>

The official [Mender documentation](https://docs.mender.io/) explains how Mender works. This is simply a board-specific complement to the official documentation.

# Board description

The Colibri iMX7S and Colibri iMX7D are SODIMM-sized System on Modules (SoMs) based on the NXP i.MX 7Solo and i.MX 7Dual SoCs respectively.

Arm Cortex-A7 cores are highly optimized for energy efficiency while delivering high performance. Advanced security features make the Colibri iMX7 a great choice for connected devices.

Typical applications include power-sensitive edge computing devices, IoT gateways, medical devices, industrial automation and many more. The NXP i.MX 7 uses an asymmetric, heterogeneous multicore processing system with a Cortex-M4 core that runs at up to 200MHz.

 ![102958-colibriimx7d-top-view](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/3b0fff0a1f13fa8bbe1fa1cccffb847b5198e917.jpeg)

URL: [https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7](https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-freescale-imx7)  
Wiki: [Colibri iMX7 | Toradex Developer Center](https://developer.toradex.com/products/colibri-imx7)

# 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](https://wiki.yoctoproject.org/wiki/Releases?target=_blank):

| Yocto Project | Build | Runtime |
| --- | --- | --- |
| rocko (2.4) | :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](https://docs.mender.io/system-updates-yocto-project/board-integration/bootloader-support/u-boot/integration-checklist?target=_blank) has been verified.

# Getting started

## Prerequisites

- A supported Linux distribution and dependencies installed on your workstation/laptop as described in the [Yocto Mega Manual](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#detailed-supported-distros)
  - NOTE. Instructions depend on which Yocto version you intend to use.

- Google repo tool [installed](https://hub.mender.io/t/google-repo/58/2) and in your `PATH` .

## Configuring the build

### Setup Yocto environment

Set the Yocto Project branch you are building for:

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

```

Create a directory for your `mender-toradex` setup to live in and clone the  
meta information.

```auto
mkdir mender-toradex && cd mender-toradex

```

Initialize repo manifest:

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

```

Fetch layers in manifest:

```auto
repo sync

```

## Setup build environment

Initialize the build environment:

```auto
source setup-environment toradex-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.

### Configure Mender server URL (optional)

This section is not required for a successful build but images that are generated by default are only suitable for usage with the Mender client in [Standalone deployments](https://docs.mender.io/architecture/standalone-deployments?target=_blank), due to lack of server configuration.

You can edit the `conf/local.conf` file to provide your Mender server configuration, ensuring the generated images and Mender Artifacts are connecting to the Mender server that you are using. There should already be a commented section in the generated `conf/local.conf` file and you can simply uncomment the relevant configuration options and assign appropriate values to them.

Build for Hosted Mender:

```auto
# To get your tenant token:
# - log in to https://hosted.mender.io
# - click your email at the top right and then "My organization"
# - press the "COPY TO CLIPBOARD"
# - assign content of clipboard to MENDER_TENANT_TOKEN
#
MENDER_SERVER_URL = "https://hosted.mender.io"
MENDER_TENANT_TOKEN = "<copy token here>"

```

### Building the image

You can now proceed with building an image:

```auto
MACHINE=colibri-imx7-emmc 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:

- `tmp/deploy/images/colibri-imx7-emmc/core-image-base-colibri-imx7-emmc.sdimg.gz`
- `tmp/deploy/images/colibri-imx7-emmc/core-image-base-colibri-imx7-emmc.mender`
- `tmp/deploy/images/colibri-imx7-emmc/u-boot.imx`

The disk image (with `.sdimg.gz` suffix) is used to provision the device storage for devices without Mender running already.

The `u-boot-nand.imx` file is used to provision the device with a Mender compatible U-Boot.

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](https://docs.mender.io/overview/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 [standalone mode](https://docs.mender.io/artifact-creation/standalone-deployment).

#### Flash instructions

Based on the output artifacts described above we need to flash the `u-boot-nand.imx` and `core-image-base-colibri-imx7-emmc.sdimg.gz` separately to fully provision an device and for it to work with Mender.

Prerequisite:

- Colibri Evaluation V3.2B carrier board (other carriers boards should work as well)
- Colibri iMX7D 1GB V1.1A SOM inserted in above
- USB cable connected to console port (X27) and PC
- USB cable connected to OTG USB port (X29) and PC
- Ethernet cable connected to RJ45 (X17) on same network as PC
- [TFT server](https://help.ubuntu.com/community/TFTP) running on PC
- Copy `u-boot.imx` and `core-image-base-colibri-imx7-emmc.sdimg.gz` to your TFTP server directory

Connect to your device serial console port using your virtual terminal application of choice and halt the device in the U-Boot prompt. You should see the following:

```auto
Colibri iMX7 # 

```

The following commands are all executed from the U-boot prompt.

Setup convenience script to calculate number of blocks based on file size:

```
setenv set_blkcnt 'setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200'

```

Setup TFT server IP address in U-boot:

```
setenv serverip 192.168.128.122

```

Setup client IP address in U-boot:

```
setenv ipaddr 192.168.128.170

```

Transfer U-boot using TFTP and write to eMMC:

```
tftpboot ${loadaddr} u-boot.imx && run set_blkcnt && mmc dev 0 1 && mmc write ${loadaddr} 2 ${blkcnt}

```

Transfer disk image to RAM using TFTP:

```
tftpboot ${loadaddr} core-image-base-colibri-imx7-emmc.sdimg.gz

```

Write disk image to eMMC:

```
gzwrite mmc 0 $loadaddr 0x$filesize

```

That is it, you can now power-cycle or reset the device and you should have  
a Mender compatible image running on your device with the Mender client.

# References

- The Mender integration for Toradex Colibri iMX7 Dual 1GB can be found in [meta-mender](https://github.com/mendersoftware/meta-mender/tree/rocko/meta-mender-toradex-nxp)
- The Toradex Colibri iMX7 Dual 1GB template files can be found in [meta-mender-community](https://github.com/mendersoftware/meta-mender-community/tree/rocko/meta-mender-toradex-nxp).
- This was tested using a [Colibri Evaluation Board](https://developer.toradex.com/products/colibri-evaluation-board) as carrier board

* * *

_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!_
