Mess- und Prüftechnik / IoT-Sensorknoten

Das Zephyr von vorne aufgezäumt

7. November 2018, 11:07 Uhr | Dr. Constantin Tomaras, Ressortredakteur für Systemdesign, DESIGN&ELEKTRONIK
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Erste Schritte

Zur Konfiguration der Build-Umgebung wird den Schritten im "Getting Started Guide" auf der Projektseite [4] gefolgt. Dort sind die Terminalbefehle für Ubuntu, Fedora, Clear Linux, Arch, Windows und macOS hinterlegt, mit denen die notwendigen Pakete von der Kompilierung über den Source-Code bis hin zum Flashtool installiert werden. Der Source-Code wird bequem über github geladen. Am besten wird zusätzlich das Zephyr-SDK, ebenfalls aus einem gitrepo, installiert. Dann muss die Build-Umgebung auf das SDK, mit den Terminalbefehlen  

export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=<sdk installation directory>

gesetzt werden.

Zur Konfiguration der make-Umgebung muss >source zephyr-env.sh aus dem zephyr-Verzeichnis heraus aufgerufen werden. Im Anschluss wird im Verzeichnis eines Beispielprogramms ein Build-Verzeichnis angelegt
und aus diesem der Befehl cmake gefolgt von ninja aufgerufen. Die Hardwarearchitektur wird hier als Option an cmake angehängt. Im Buildverzeichnis wird darauf hin das Betriebssystem einschließlich des Beispielprogramms für die jeweilige Plattform generiert. ninja flash schreibt das generierte Binary dann schließlich über microUSB-Verbindung (Debug-Kanal) auf das reel board. Die Konfigurationsdateien sucht cmake eine Ebene über dem Build-Verzeichnis, in den Formaten .txt/.proj/.yaml.  
 
Dieser Fortschritt ist bemerkenswert: Wo unsere Väter noch Stunden mit Installation und Konfiguration ihrer proprietären Programmiergeräte auf dem Verbraucher-Betriebssystem der Wahl verbrachten, braucht es heutzutage nur einige Copy & Paste-Aktionen bis zum ersten Testprogramm.

Das mitgelieferte reel_board-Beispiel (zephyr/samples/mesh_badge/) zeigt dabei Bluetooth-Mesh-Kommunikation: der angezeigte epaper-Text wird über Bluetooth-GATT-Konfigurator gesetzt (externes Smartphone oder PC)
und mit der Push-Taste an ein weiteres Zephyr-Board übertragen.

Besondere Funktionen des Zephyr-Betriebssystems

Das Zephyr Projekt entwickelt ein Linux-Derivat für Internet-der-Dinge-Anwendungen auf ressourcenbeschränkten Systemen für die Plattformen x86, arm, ARC, NIOS II, XTENSA, POSIX/NATIVE und RISCV32. Dafür sind integriert [5]: Vielfachausführungen (Multi-Threading) mit präemptiver oder nicht-präemptiver Ablaufplanung, Energiemanagement-Services wie Leerlaufroutinen, monolithischer Adressraum mit Schutzroutine sowie ein nativer Netzwerkstapel einschließlich LwM2M, BSD, OpenThread und BLE5.0. Die API ist insbesondere zu POSIX pthreads kompatibel, die Ablaufplanung kann kooperativ, präemptiv oder nach dringenstem Aufruf erfolgen. IRQ-Planung erfolgt "bottom half" oder taskartig. Aufrufe mit gleicher Priorität können in Zeitintervalle aufgeteilt werden.

Für Daten- und Funktionsintegrität sollen ein konfigurierbarer architekturspezifischer Schutz vor Pufferüberläufen, die Überwachung von Kernelfunktionen und Treiberzugriffen, sowie Zugriffsberechtigungen für Aufrufe an den Speicher in x86-, ARC- und arm-Architekturen sorgen.
Wenn nötig kann die Anwendung so mit einem monolithischen Abbild umgesetzt werden, in dem das Programm und der Betriebssystemkernel einen gemeinsamen Adressraum teilen.  

Zur Kommunikation ist ein erschöpfender Bluetoothstapel, konform zu Version 5.0 (ESR10) und BLE-Unterstützung (LE Link Layer), vorhanden: dieser soll laut Projektseite GAP, GATT, HCI-Treiber-Abstraktion und Raw-HCI enthalten, sowie auf vielen verbreiteten Controllern verifiziert und hoch-konfigurierbar sein. Im Mesh-Betrieb sind Relay, Friend Node, Low-Power Node und GATT-Proxy Features nutzbar. Nötig sind 16 kbyte Speicherressourcen.

Über die Übersetzung für ein physikalisches EvalBoard hinaus, kann der Code auch für einen QEMU-basierten arm-Cortex-M3 erstellt werden: damit wird ein EvalBoard zunächst obsolet.


  1. Das Zephyr von vorne aufgezäumt
  2. Hardware auf dem reel board
  3. Erste Schritte
  4. Codebeispiele & API
  5. Kleine Beispieltour & Referenzdesign

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu PHYTEC Meßtechnik GmbH

Weitere Artikel zu Betriebssysteme

Weitere Artikel zu Smart City/Building/Home

Weitere Artikel zu Automatisierung

Weitere Artikel zu Netze (Smart Grid)

Weitere Artikel zu Metering

Weitere Artikel zu IoT / IIoT / Industrie 4.0