## Create projects

Before you build Digi Embedded Yocto, you need to create a platform-specific project. Use the mkproject.sh script to check supported platforms:

``source /usr/local/dey-2.6/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-2.6/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-2.6/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

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

``bitbake dey-image-qt``

By default, this builds X11-based images with QT libraries.

To build framebuffer-based images with QT libraries, you need to configure your project’s conf/local.conf file and add the following line:

`DISTRO_FEATURES_remove = "x11"`

This removes the X11 window system. You can then build the images:

``bitbake dey-image-qt``
 For ConnectCore 6UL SBC Express the default 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.