Board description
Staying on-trend with the market’s shift towards a cost-effective highly integrated off-the-shelf solution, the VAR-SOM-SOLO from Variscite level the playing ground for a broad spectrum of embedded products. Bringing all the benefits of the widely successful VAR-SOM-MX6, the VAR-SOM-SOLO/DUAL from Variscite carries much smaller dimensions and a slim-lined price-point. Features include NXP/Freescale’s iMX6 Solo/Dual Lite core, 1GHz Cortex-A9, SLC NAND, eMMC, dual-band certified Wi-Fi/BT with MIMO, USB, Gigabit Ethernet, A/V interfaces and industrial operating temperatures.
The Variscite VAR-SOM-SOLO platform is a System on Module (SoM) based on the NXP/Freescale iMX6 chip. The evaluation kit comes with a VAR-SOLOCustomBoard and a 7" Capacitive touch LCD.
URL:
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:
SD Card Root Filesystem
Yocto Project | Build | Runtime |
---|---|---|
rocko (2.4) | ||
sumo (2.5) | ||
thud (2.6) |
eMMC Root Filesystem
Yocto Project | Build | Runtime |
---|---|---|
sumo (2.5) | ||
thud (2.6) |
NAND Root Filesystem
Yocto Project | Build | Runtime |
---|---|---|
sumo (2.5) | ||
thud (2.6) |
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="rocko"
Create a directory for your mender-variscite
setup to live in and clone the
meta information.
mkdir mender-variscite && cd mender-variscite
Initialize repo manifest:
repo init -u https://github.com/varigit/variscite-bsp-platform.git -b $BRANCH
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:
repo sync
cd .repo/local_manifests/
ln -sf ../../sources/meta-mender-community/scripts/mender-no-setup.xml .
cd -
Determine root filesystem media
The Variscite VAR-SOM-SOLO platform supports running U-Boot directly from the following media:
- SD-Card
- NAND flash
Note that running U-Boot from eMMC is specifically not supported.
The root filesystem can be stored on any of the following media:
- SD-Card
- NAND flash
- eMMC
When configuring the system to use eMMC for the root filesystem, we will use NAND flash for storing U-Boot.
Set the shell variable for your desired root filesystem media:
export MEDIA="sdcard"
export MEDIA="nand"
export MEDIA="emmc"
Setup build environment
Initialize the build environment:
MACHINE=var-som-mx6 DISTRO=fslc-x11 . setup-environment 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:
bitbake core-image-base
Replace core-image-base
with your desired image target.
Using the build output
The mechanism for provisioning your device with the build will vary depending on the storage media you have selected above.
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:
sudo dd if=tmp/deploy/images/var-som-mx6/core-image-base-var-som-mx6.sdimg of=<SDCARD-DEVICE-NODE> conv=fdatasync bs=8M
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 SW6) to the MMC 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
To be able to provision images to the eMMC, we need to boot a prebuilt image from Variscite using an SDCard. Download the image and write it to an SDCard. WARNING, make sure you use the correct device node as the of= parameter to avoid overwriting the wrong device:
gunzip sumo-fslc-4.9.88-mx6-v1.2.img.gz
sudo dd if=sumo-fslc-4.9.88-mx6-v1.2.img of=<SDCARD-DEVICE-NODE> conv=fdatasync bs=8M
Now remove and reinsert the SD Card to have your system automount it (or just issue a manual mount command). Copy the necessary files from your build tree to the SD Card.
sudo cp -f tmp/deploy/images/var-som-mx6/core-image-base-var-som-mx6.sdimg \
tmp/deploy/images/var-som-mx6/SPL \
tmp/deploy/images/var-som-mx6/u-boot.img-nand \
<SDCARD-MOUNT-POINT>
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 SW6) to the MMC position. Now turn on power to the board and it will boot from the SDCard. Login as user root with no password and execute the following commands to provision the binaries:
dd if=/core-image-base-var-som-mx6.sdimg of=/dev/mmcblk0 conv=fdatasync bs=8M
flash_erase /dev/mtd0 0 0
kobs-ng init -x /SPL --search_exponent=1 -v
flash_erase /dev/mtd1 0 0
nandwrite -p /dev/mtd1 /u-boot.img-nand
halt
Remove the SDCard, configure your board to boot from eMMC by moving the Boot Select switch (also labeled as SW6) to the NAND position and power cycle your board.
Finally, press a key to interrupt the autoboot and enter the following commands at the UBoot prompt.
env default -a -f
saveenv
reset
NAND
To be able to provision images to the NAND, we need to boot a prebuilt image from Variscite using an SDCard. Download the image and write it to an SDCard. WARNING, make sure you use the correct device node as the of= parameter to avoid overwriting the wrong device:
gunzip sumo-fslc-4.9.88-mx6-v1.2.img.gz
sudo dd if=sumo-fslc-4.9.88-mx6-v1.2.img of=<SDCARD-DEVICE-NODE> conv=fdatasync bs=8M
Now remove and reinsert the SD Card to have your system automount it (or just issue a manual mount command). Copy the necessary files from your build tree to the SD Card.
sudo cp -f tmp/deploy/images/var-som-mx6/core-image-base-var-som-mx6.ubimg \
tmp/deploy/images/var-som-mx6/SPL \
tmp/deploy/images/var-som-mx6/u-boot.img-nand \
<SDCARD-MOUNT-POINT>
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 SW6) to the MMC position. Now turn on power to the board and it will boot from the SDCard. Login as user root with no password and execute the following commands to provision the binaries:
flash_erase /dev/mtd0 0 0
kobs-ng init -x /SPL --search_exponent=1 -v
flash_erase /dev/mtd1 0 0
nandwrite -p /dev/mtd1 /u-boot.img-nand
flash_erase /dev/mtd3 0 0
nandwrite -k /dev/mtd3 /core-image-base-var-som-mx6.ubimg
halt
Remove the SDCard, configure your board to boot from NAND by moving the Boot Select switch (also labeled as SW6) to the NAND position and power cycle your board.
Updating with Mender Artifacts
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.
References
- The Variscite var-som-mx6 template files can be found in meta-mender-community .
- 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!