Create projects

Before you build Digi Embedded Yocto, you need to create a platform-specific project.

If you are using the Digi Embedded Yocto Docker container, the startup script offers to create a new project. If you already created one, go directly to Build images.

You can also follow these steps to create a project manually.

Use the mkproject.sh script to check supported platforms:

~$ source /usr/local/dey-3.0/mkproject.sh -l

To initialize the project and environment, use the mkproject.sh script. For example, for the ConnectCore 6UL SBC Express, do the following:

~$ mkdir -p ${HOME}/workspace/ccimx6ulstarter
~$ cd ${HOME}/workspace/ccimx6ulstarter
~$ source /usr/local/dey-3.0/mkproject.sh -p ccimx6ulstarter

To initialize the project and environment, use the mkproject.sh script. For example, for the ConnectCore 6UL SBC Pro, do the following:

~$ mkdir -p ${HOME}/workspace/ccimx6ulsbc
~$ cd ${HOME}/workspace/ccimx6ulsbc
~$ source /usr/local/dey-3.0/mkproject.sh -p ccimx6ulsbc

This initializes the project with a conf directory and two configuration files:

  • bblayers.conf: The available layers are configured here.

  • local.conf: Local configuration variables affecting only this project are customized here.

The mkproject.sh script sets the environment for the build in the current running terminal. It also creates a dey-setup-environment script in the project’s root folder. This script can safely be rerun over existing projects to set up the build environment on a new terminal.

If you close your current terminal and open a new one, you must run the dey-setup-environment script before you use Digi Embedded Yocto.

Update existing projects

When updating your installation of Digi Embedded Yocto, you need to erase the tmp and sstate-cache directories from existing projects and build them from scratch. Leaving the directories intact may result in problems in the build and the final images.

Build images

By default, ConnectCore 6UL Digi Embedded Yocto images include the X11 desktop backend, but it’s possible to build framebuffer-based images. To do so, edit your project’s conf/local.conf file and add the following line:

DISTRO_FEATURES_remove = "x11"

This removes the X11 window system, including all related packages such as pulseaudio and the X11 gstreamer plugins. It also makes the rootfs image smaller and increases the amount of free memory in the system, making framebuffer-based images ideal for ConnectCore 6UL variants with smaller memory configurations.

To build Digi Embedded Yocto images, use the command bitbake <image-recipe> from your project’s directory. For example:

~$ bitbake dey-image-qt

For ConnectCore 6UL SBC Express the default Digi Embedded Yocto image recipe is:

~$ bitbake core-image-base

This builds framebuffer-based images with Qt libraries.

The compilation can take several hours on a powerful state-of-the-art workstation, depending on the selected image recipe.

Inspect build deliverables

You can find generated images inside your project’s directory, in the <project_folder>/tmp/deploy/images/<platform> folder. This directory contains the following files:

  • Boot image, with the boot.ubifs file extension, which contains the Linux kernel, device trees and U-Boot scripts

  • Root file system images in the following formats:

    • rootfs.ubifs, a UBIFS partition image suitable for NAND devices

    • rootfs.tar.bz2, a compressed root file system tarball that you can use to set up a remote NFS share to boot from

    • rootfs.manifest, a text file with the list of all the built packages

  • Recovery image, with the recovery.ubifs file extension, which contains the recovery Linux kernel, device tree files, and U-Boot scripts

  • U-Boot images with the imx file extension

  • Linux kernel images with the bin file extension, which you can use to update an existing boot partition

  • Linux kernel device tree images with the dtb file extension, which you can use to update an existing boot partition

Build a software update package

To build a software update package, use the following command from your project’s directory:

~$ bitbake core-image-base-swu

This will generate the update package under <project_folder>/tmp/deploy/images/<platform>:

core-image-base-swu-<platform>-<timestamp>.swu

To build a software update package, use the following command from your project’s directory:

~$ bitbake dey-image-qt-swu

This will generate the update package under <project_folder>/tmp/deploy/images/<platform>:

dey-image-qt-swu-<platform>-<timestamp>.swu

To install the update package in your device, see Program firmware from Linux.