Zephyr - Entwicklung
Zephyr ist ein neues und sehr spannendes
Open-Source-Echtzeit-Betriebssystem. Gerade dort wo
Linux aufgrund seines Umfanges nicht in Frage kommt
ist Zephyr eine gute Alternative.
Im Seminar wird mit der Betriebssystemarchitektur
von Zephyr begonnen und bis zur Entwicklung eigener
Projekte 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, welche
die Funktionsweise der jeweiligen Mechanismen demonstrieren
erstellt 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 Betriebssystemes 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-prio Threads
Timerhandling, mit und ohne Timertick
Memory-Management, Stack und Heap, Speicheranalyse
Slap-Allocator
Zephyr-Community, Entwicklungsprozess
Entwicklungswerkzeuge
Installation (debian-Pakete, venv, sdk, west)
Verzeichnisstruktur
Layering von Architektur-, Board- und Projekt-spezifischen 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