Skip to main content

Set up Zephyr RTOS

Zephyr RTOS supports a vast number of microcontrollers from many different vendors. There's a very good chance your preferred chip will work with Zephyr using Golioth as a module.

This section will guide you through installing the Zephyr tree (including the Golioth SDK) in a directory called golioth-zephyr-workspace.

Install Dependencies and West

Install Dependencies

  1. Install dependencies with apt:

    sudo apt update
    sudo apt install --no-install-recommends git cmake ninja-build gperf \
    ccache dfu-util device-tree-compiler wget python3-dev python3-pip \
    python3-setuptools python3-tk python3-venv python3-wheel xz-utils file \
    make gcc gcc-multilib g++-multilib libsdl2-dev
  2. West requires CMake version 3.20.0 or higher. Check the version that your package manager installed:

    $ cmake --version
    cmake version 3.16.3

    If you have an older version, Ubuntu 20.04 systems can add the Kitware repository which maintains the newest release:

    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
    sudo apt update
    sudo apt install cmake
    cmake --version

    If the Kitware repository doesn't work for you (ie: your system is not running Ubuntu 20.04), you can build the stable version of CMake from source.

Install West

We recommend creating a python3 virtual environment to avoid running into tooling incompatibilities.

  1. Create your workspace directory:

    mkdir ~/golioth-zephyr-workspace
  2. Use pip3 to install west (beginning with the wheel dependency):

    pip3 install wheel
    pip3 install west

Install Golioth Firmware SDK

  1. With west installed, grab the Zephyr SDK:

    cd ~
    west init -m https://github.com/golioth/golioth-firmware-sdk.git --mr v0.16.0 --mf west-zephyr.yml ~/golioth-zephyr-workspace
    cd golioth-zephyr-workspace/modules/lib/golioth-firmware-sdk
    git submodule update --init --recursive
    west update
    info

    Depending on your internet and I/O speed, west update can take upwards of 5 or 10 minutes.

  2. Tell west to automatically configure CMake:

    west zephyr-export
  3. Install the remaining dependencies:

    pip install -r ~/golioth-zephyr-workspace/zephyr/scripts/requirements.txt

Installing the Zephyr SDK Toolchain

Download the latest SDK installer:

cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.4/zephyr-sdk-0.16.4_linux-x86_64.tar.xz

Unpack the archive and run the installer. The SDK will be placed in the ~/zephyr-sdk-0.16.4 directory:

tar -xvf zephyr-sdk-0.16.4_linux-x86_64.tar.xz
cd zephyr-sdk-0.16.4
./setup.sh

Answer y to both of the questions asked during the setup process.

Install udev rules, which allow you to flash most Zephyr boards as a regular user:

sudo cp ~/zephyr-sdk-0.16.4/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d
sudo udevadm control --reload

Install Device Specific Packages and Programming Tools

Zephyr is a cross-vendor operating system and may require additional packages and tools based on your specific hardware.

Device Specific Examples:

  • Espressif support in Zephyr requires binary blob installation:

    $ west blobs fetch hal_espressif
  • NXP evaluation kits usually offer on-board J-Link debugger support. To utilize this you will need to install Segger's J-Link Software and Documentation Pack.

Device-Specific information in Zephyr's Board Index

Review your vendor's board support in the Zephyr Board Index to find more information on specific set up steps for your prefered hardware.

Build Sample Firmware

Your system is all set up and ready to start building & flashing with Zephyr. Verify by building a minimal sample:

Build Firmware

Your system is all set up and ready to start building & flashing with Zephyr. Verify by building a minimal sample from the Zephyr tree.

export

cd ~/golioth-zephyr-workspace/zephyr
west build -b your_board_name samples/basic/minimal -p
Show me how to list all Zephyr supported boards

If you don't know the name for your board, list all options using West:

west boards

Flash firmware to the device

Most boards supported by Zephyr can by flashed using a simple command:

west flash