Build SOF with Zephyr

This guide describes the process of building and running Sound Open Firmware as a Zephyr application.

Note

The following example uses $ZEPHYR_WORKSPACE as the working directory.

Prepare

The easiest way to build Zephyr is to use its recommended toolchain. Follow instructions in Install a Toolchain for details.

Check out and build

Zephyr uses west as a source management and building system. Follow the Zephyr Getting Started guide for dependencies and for west installation.

Initialize a new west repository:

mkdir $ZEPHYR_WORKSPACE
cd $ZEPHYR_WORKSPACE
west init
west update

This checks out all Zephyr sources, including SOF and rimage. Next, a firmware image can be built and signed:

west build -p -d build-apl -b intel_adsp_cavs15 zephyr/samples/audio/sof/
west sign -d build-apl -t rimage -- -k modules/audio/sof/keys/otc_private_key.pem

Note that the above uses the rimage signing tool, but it isn’t built as a part of the process. If needed it can be built with:

mkdir build-rimage
cd build-rimage
cmake ../modules/audio/sof/zephyr/ext/rimage/
make

Then you can add -p build-rimage/ to the list of west sign parameters above (before the -- separator).

Note

If you need a different SOF version than the one automatically checked out by west, you can change to modules/audio/sof and use git to select your preferred version. You need at least version 1.6 to use it with Zephyr. Make sure you branch or tag your code in git; otherwise, a future west update may lose it. See the west user guide.

Run

After the above instructions are completed, a firmware image is located at build-apl/zephyr/zephyr.ri. It can be copied to the usual location on the target system. For example, if it is built natively, enter the following:

sudo cp build-apl/zephyr/zephyr.ri /lib/firmware/intel/sof/community/sof-cnl.ri

For firmware log extraction, use zephyr/boards/xtensa/intel_adsp_cavs15/tools/logtool.py.