Zephyr - Entwicklung
Zephyr ist ein neues und sehr spannendes
Open-Source-Echtzeit-Betriebssystem. Gerade dort, wo
Linux aufgrund seines Umfangs nicht in Frage kommt,
ist Zephyr eine gute Alternative.
Im Seminar wird mit der Betriebssystemarchitektur
von Zephyr begonnen und bis zur Entwicklung eigener
Projekte werden alle relevanten Themen besprochen.
Vorausgesetzt werden gute Kenntnisse in der
Programmiersprache C sowie sicherer Umgang in der
Linux-Shell.
Die Kursdauer beträgt 4 Tage.
Im Verlauf des Kurses werden diverse kleinere Programme erstellt,
welche die Funktionsweise der jeweiligen Mechanismen demonstrieren,
bzw. unter Verwendung von Übungsvorlagen vervollständigt.
Großer Wert wird darauf gelegt, nicht nur die Funktionalitäten
zu besprechen, sondern auch Hintergrundinformationen aus Sicht
des Kernels zu liefern. Dadurch wird ein tieferes Verständnis
des Betriebssystems erlangt.
Dem Teilnehmer wird dadurch ermöglicht, die Theorie in die
Praxis im eigenen Projekt umzusetzen.
Übungen werden allesamt auf einem Embedded-Board durchgeführt.
Dazu wird das Open-Source-Board Olimex-GD32-E407 verwendet.
Beispielsweise werden Sensoren angebunden und deren Daten über
das Netz verschickt.
Agenda
Zephyr als Echtzeit-Betriebssystem
Architektur, Lizenzierung
Threading, Kernel- und Userspace
Cryptographie, Security
Scheduling-Modell (kooperativ und preemptiv), Deadline-Threads
Interrupt-System mit very-high-priority Threads
Timerhandling, mit und ohne Timertick
Memory-Management, Stack und Heap, Speicheranalyse
Slab-Allocator
Zephyr-Community, Entwicklungsprozess
Entwicklungswerkzeuge
Installation (Debian-Pakete, venv, SDK, west)
Verzeichnisstruktur
Layering von architektur-, board- und projektspezifischen Dateien
Device-Tree-Overlays und Kernel-Konfigurationen
Erstellwerkzeuge (west, cmake)
Debugging mit JTAG (OpenOCD, gdb)
Generierung und Auswertung von Core-Dumps
Tracing mit CTF (Stack-Overflows)
Implementierung
POSIX-Libraries für Threads und IPC
Multithreading
Memory-Allokation im Userspace
Individuelle Shell-Kommandos und Logging anlegen
Verwendung von GPIOs (Button und LED als Beispiel)
Anbindung von Sensoren mit I2C und SPI
GPS- und GNSS-Modem verwenden
Testszenarien definieren und Testprogramme schreiben (CPU-, Interrupt-Last, ...)
Messung von Latenzen
Netzwerk (managed und unmanaged, DHCP, TCP/IP), Sockets
Kommunikation mit FIFOs
ZBUS (Zephyr-Bus) als M-zu-N-Kommunikation
Entwicklung von Treibern