nodecum - lernen

Sprachauswahl

Zephyr Entwicklungsumgebung

Wir möchten beschreiben wie man die nötige Software installiert um unter Zephyr Programme zu entwickeln. Dabei gehen wir prinizipiell so vor wie es im Getting Started Guide von Zephyr beschrieben ist.

Verzeichnisse

Wir müssen festlegen wohin wir die zu installierenden Komponenten in der Verzeichnisstruktur unterbringen wollen. Um immer einen gleichen Bezug zu haben erschaffen wir uns in unserm Nutzer Verzeichnis (~) einen Eintrag ~/prog:

mkdir ~/prog
cd ~/prog

Aktualisieren des Betriebssystems

$ sudo apt update
$ sudo apt upgrade

Installieren der Abhängigkeiten

Hinzufügen vom Kitware APT repository

Kitware stellt CMake als Ubuntu Package zur Verfügung. Deshalb fügen wir es zu den APT Resourcen hinzu:

sudo apt-get install gpg wget
wget https://apt.kitware.com/kitware-archive.sh
sudo bash kitware-archive.sh

wir können das Skript nach der Ausführung löschen:

rm kitware-archive.sh

Komponenten installieren

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-wheel xz-utils file \
  make gcc gcc-multilib g++-multilib libsdl2-dev

Verzeichnis ~/prog/zephyrproject Erstellen

Dieses Verzeichnis wird als Basis für verschiedene zephyr Komponenten dienen. Ausgehend vom Verzeichnis ~/prog:

mkdir zephyrproject

oder direkt aus einem beliebig anderem Verzeichnis:

mkdir ~/prog/zephyrproject

Virtuelle Python Umgebung

Zephyr benutzt Python Skripte welche ihrerseits Abhängigkeiten haben. Diese Abhängigkeiten können Konflikte mit anderen (nicht Zephyr) Python Abhängigkeiten hervorbringen. Dafür gibt es als Lösung die Benutzung einer virtuellen Python Umgebung, in welcher die Abhängigkeiten dann nicht global sondern lokal in der virtuellen Umgebung installiert und benutzt werden. Die Folge ist, daß man diese Umgebung aktivieren muß, um die Anwendungen welche sie enthält benutzen zu können.

Installation von python3-venv

sudo apt install python3-venv

Erstellen der virtuellen Umgebung:

python3 -m venv ~/prog/zephyrproject/zenv

Aktiviert wird diese Umgebung mit dem Aufruf:

source ~/prog/zephyrproject/zenv/bin/activate

Da das etwas Umständlich zu merken und aufzurufen ist können wir uns einen Alias erzeugen. Wir editieren/erzeugen die Datei ~/.bash_aliases mit dem Inhalt

alias zenv="source ~/prog/zephyrproject/zenv/bin/activate"

Danach können wir durch die Eingabe von zenv die Umgebung aktivieren.

Deaktiviert wird die Umgebung mit

deactivate

Wir aktivieren die Umgebung und fahren fort.

Install Zephyr Sources

West ist das Meta-Werkzeug von Zephyr.

pip install west
cd ~/prog/zephyrproject
west init .
west update
west zephyr-export
pip install -r zephyr/scripts/requirements.txt

Install Zephyr SDK Toolchain(s)

Wir installieren die minimale sdk Variante: (v0.14.2) ist zu ersetzen durch die jeweils letzte Revision, siehe Releases

wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.14.2/zephyr-sdk-0.14.2_linux-x86_64_minimal.tar.gz
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.14.2/sha256.sum | shasum --check --ignore-missing

Wir entpacken dieses Archiev nach ~/bin ,welches auch als $HOME/bin geschrieben werden kann:

tar -xvf zephyr-sdk-0.14.2_linux-x86_64_minimal.tar.gz -C ~/bin

und führen das setup.sh Skript aus:

cd ~/bin/zephyr-sdk-0.14.2
./setup.sh -t arm-zephyr-eabi -h -c

Damit installieren wir die Toolchain für die ARM Architektur welches uns erst einmal genügen sollte.

Ein Beispielprogramm bauen

cd ~/prog/zephyrproject/zephyr

Wir bauen das hello_world Beispielprogram als cortex m0 Emulation.

west build -b qemu_cortex_m0 samples/hello_world

Ausführung mit qemu

west build -t run

Zephyr aktualisieren

Von Zeit zu Zeit möchten wir Zephyr und die dazugehörige Umgebung aktualisieren. Das bewerkstelligen wir indem wir den aktuellen Stand vom Zephyr Repositry auf github holen (pull=ziehen) und mit west ein update durchführen:

cd ~/prog/zephyrproject/zephyr
git pull
west update

Umgebungs Variablen setzen

Wir folgen dem Vorgehen welches in Setting Variables beschrieben ist. Zuerst erweitern wir den zenv alias im file ~/.bash_aliases um einen zweiten source Aufruf

alias zenv="source ~/prog/zephyrproject/zenv/bin/activate && source ~/prog/zephyrproject/zephyr/zephyr-env.sh"

Nun können wir mit dem alias zenv die Python Umgebung aktivieren und die Umgebungs Variablen setzen. Diese werden in der Datei ~/.zephyrrc gesetzt:

export ZEPHYR_BASE=~/prog/zephyrproject/zephyr