TipsAndTricks/BuildingZephyrImages

From Yocto Project
Jump to navigationJump to search

Introduction

Yocto offers an alternative way of building Zephyr Project images by using the meta-zephyr layer.

Configuration

You'll need to install the following additional package python3-pexpect. If you're going to using the Arduino 101 board, you'll also need dfu-util.

Checkout the meta-zephyr layer

git clone git://git.yoctoproject.org/meta-zephyr

The layer supports morty and master branches and is dependent on the equivalent poky branch.

Boards and Machines

Zephyr BOARDS typically map to bitbake MACHINES, but underscores become dashes. e.g. BOARD=arduino_101_sss maps to MACHINE = "arduino-101-sss"

Building Qemu Image

Here are the steps. We'll use the morty branch for stability.

$ git clone -b morty git://git.yoctoproject.org/poky
$ git clone -b morty git://git.yoctoproject.org/meta-zephyr
$ source poky/oe-init-build-env
$ bitbake-layers add-layer ../meta-zephyr

In local.conf (or set on command line)

DISTRO = "zephyr"
MACHINE = "qemu-x86"

Now build a Qemu image of the canonical Zephyr sample

bitbake zephyr-philosophers

Running zephyr qemu images is still a bit clunky

./tmp/sysroots/x86_64-linux/usr/bin/qemu-system-i386 -kernel ./tmp/deploy/images/qemu-x86/philosophers.elf -nographic -machine type=pc-0.14 -display none -clock dynticks -no-acpi -balloon none

And will produce output like this

Zehpyr-philosophers-screen-shot.png

Building Arduino 101 Image

Let's build the same sample for Arduino 101 x86 core. Now MACHINE = "arduino-101"

bitbake zephyr-philosophers

Noe that there will be significant rebuild, as although both qemu-x86 and arduino-101 are 386 class devices, arduino-101 uses the subtly different IAMCU toolchain.