# DART-MX8M : NXP i.MX8M

**URL:** <https://hub.mender.io/t/dart-mx8m-nxp-i-mx8m/1470>\
**Category:** Yocto Project\
**Created:** [January 24, 2020, 2:51pm UTC](https://hub.mender.io/t/dart-mx8m-nxp-i-mx8m/1470 "2020-01-24T14:51:47Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![drewmoseley](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/drewmoseley/32/47_2.png) [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Post date:** [January 24, 2020, 2:51pm UTC](https://hub.mender.io/t/dart-mx8m-nxp-i-mx8m/1470/1 "2020-01-24T14:51:47Z")

</div>

# Board description

The DART-MX8M offers an ideal solution for embedded systems that require high-end multimedia applications in a small form factor, as well as portable and battery operated products.

This tiny 30mm x 55mm ARM SoM is based on NXP i.MX8M Quad 1.5GHz ARM Cortex-A53 plus 266MHz Cortex-M4. The high multimedia performance spec encompasses 4K video HEVC/H265/H264/VP9 decode with HDR, high-quality audio, 4K display support, 2D/3D graphics acceleration, with a variety of interfaces and connectivity options: Certified dual-band Wi-Fi 802.11 ac/a/b/g/n, BT 4.2/BLE, GbE, dual USB3, dual PCIe and UART.

The DART-MX8M SoM provides a pin2pin scalable option to the [DART-MX8M-MINI](https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/dart-mx8m-mini-nxp-i-mx8m-mini/) based on NXP’s i.MX8M Mini 1.8GHz Single/Quad-core Cortex-A53 plus 400MHz Cortex-M4 real-time processor with integrated video encode and decode acceleration, lower power consumption and higher CPU performance.

The [evaluation kit](https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/dart-mx8m-nxp-imx-8m/#evaluation-kit?target=_blank) comes with a [VAR-DT8MCustomBoard](https://www.variscite.com/product/single-board-computers/var-dt8mcustomboard?target=_blank) and a 7" Capacitive touch LCD.

![DART-MX8M](http://variwiki.com/images/thumb/7/75/DART-MX8M.png/366px-DART-MX8M.png)  
URL:

- [Product Overview](https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/dart-mx8m-nxp-imx-8m?target=_blank)
- [Support Wiki](http://variwiki.com/index.php?title=DART-MX8M?target=_blank)

# 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):

## SD Card Root Filesystem

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

## eMMC Root Filesystem

| 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](https://docs.mender.io/devices/integrating-with-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="sumo"

```

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

```auto
mkdir mender-variscite && cd mender-variscite

```

Initialize repo manifest:

```auto
repo init -u https://github.com/varigit/variscite-bsp-platform.git -b fsl-$BRANCH -m imx-4.14.78-1.0.0_ga-var01.xml                                                                                                            
mkdir .repo/local_manifests
cd .repo/local_manifests/
wget https://raw.githubusercontent.com/mendersoftware/meta-mender-community/$BRANCH/scripts/mender-no-setup.xml
cd -

```

Fetch layers in manifest:

```auto
repo sync
cd .repo/local_manifests/
ln -sf ../../sources/meta-mender-community/scripts/mender-no-setup.xml .
cd -

```

## Determine root filesystem media

The Variscite DART-MX8M platform supports running U-Boot directly from the following media:

- SD-Card
- eMMC

The root filesystem can be stored on any of the following media:

- SD-Card
- eMMC

Note that eMMC has not been fully tested for the DART-M8XM. There are issues updating U-Boot on our test hardware.

Set the shell variable for your desired root filesystem media:

```auto
export MEDIA="sdcard"

```

```auto
export MEDIA="emmc"

```

## Setup build environment

Initialize the build environment:

```auto
MACHINE=imx8m-var-dart DISTRO=fslc-xwayland . var-setup-release.sh build
cat ../sources/meta-mender-community/meta-mender-variscite/templates/bblayers.conf.append >> conf/bblayers.conf
cat ../sources/meta-mender-community/templates/local.conf.append >> conf/local.conf
cat ../sources/meta-mender-community/meta-mender-variscite/templates/local.conf.append >> conf/local.conf
cat ../sources/meta-mender-community/meta-mender-variscite/templates/local-${MEDIA}.conf.append >> conf/local.conf

```

### Building the image

You can now proceed with building an image:

```bash
bitbake core-image-base

```

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

### Using the build output

#### SD Card

Provision an SD Card with the built above. **WARNING** , make sure you use the correct device node as the _of=_ parameter to avoid overwriting the wrong device:

```shell
sudo dd if=tmp/deploy/images/imx8m-var-dart/core-image-base-imx8m-var-dart.sdimg of=<SDCARD-DEVICE-NODE>

```

Remove the SD Card from your build host and insert it into the target. Configure your board to boot from SD Card by moving the _Boot Select_ switch (also labeled as _SW7_ ) to the _SD_ position. Now turn on power to the board and it will boot from the SDCard and Mender will connect to the server configured in your local.conf file.

#### eMMC

Using either the above built SDCard Yocto image or the [Variscite i.MX8M recovery SD card](http://variwiki.com/index.php?title=Yocto_Recovery_SD_card&release=RELEASE_SUMO_V2.1_DART-MX8M), boot your system off of SD. Transfer the following files from your build PC to the target board with a USB drive:

- tmp/deploy/images/imx8m-var-dart/imx-boot-imx8m-var-dart-sd.bin
- tmp/deploy/images/imx8m-var-dart/core-image-base-imx8m-var-dart.sdimg

Assuming the USB drive is mounted on the target at _/mnt_, run the following commands:

```shell
dd if=/mnt/core-image-base-imx8m-var-dart.sdimg of=/dev/mmcblk0 bs=8M
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/mnt/imx-boot-imx8m-var-dart-sd.bin of=/dev/mmcblk0boot0 seek=66
halt

```

Then change the _Boot Select_ switch (also labeled as _SW7_ ) to the _eMMC_ position and power cycle your board.

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/architecture/mender-artifacts?target=_blank) 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](https://docs.mender.io/architecture/standalone-deployments?target=_blank).

# References

- The Variscite imx8m-var-dart template files can be found in [meta-mender-community](https://github.com/mendersoftware/meta-mender-community/tree/sumo/meta-mender-variscite).
- The official [Mender documentation](https://docs.mender.io/) 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!_
