Zephyr

Architektur und Entwicklung

Zephyr ist ein Open-Source-Echtzeitbetriebssystem für Bereiche, wo Linux zu groß ist: Schon mit wenigen Kilobyte RAM ist es damit möglich, vernetzte Steuerungsgeräte zu bauen.

In diesem Seminar wird der Aufbau des Betriebssystems Zephyr veranschaulicht und basierend auf diesen theoretischen Grundlagen werden anhand von praktischen Anwendungsbeispielen die vom Betriebssystem angebotenen Mechanismen erlernt.

Die Übungen finden auf einem embedded Board (Olimex-STM32-E407) statt. Neben dem Board wird für das Seminar auch ein JTAG-Adapter sowie Sensoren für die Anbindung gestellt und in den Übungen verwendet.

Grosser Wert wird darauf gelegt, dass die theoretischen Teile mit praktischen Beispielen abgeschlossen werden, sodass der Teilnehmer nach dem Seminar in der Lage ist, das Erlernte auch im Projektalltag umzusetzen.

Trainer und Dozenten

Andreas Klinger ist selbstständiger Trainer und Entwickler. Schwerpunkte seiner Arbeit sind Linux, Kerneltreiber sowie Embedded- und Echtzeit-Linux. Er Submittet regelmäßig zum Linux-Kernel und anderen Open-Source-Projekten.

Als Autor von Fachartikeln und als Referent auf Kongressen vermittelt er Know-how zu Open-Source.

Seit 2021 beschäftigt er sich intensiv mit der Verwendung von Zephyr im industriellen Umfeld und hat dazu bereits einen Kongressvortrag gehalten und einen Fachartikel erstellt.

Voraussetzungen

Programmierung in C

Grundlegende Kenntnisse in der Linux-Shell (ls, cp, mv, cat, ssh)

Inhalt

Repository und Tooling

  • Installation der Entwicklungsumgebung (Zephyr-Repo, SDK, ...)
  • Zephyr-Meta-Tool west
  • Emulation mittels QEMU
  • Embedded-Board mit STM32 als Übungshardware
  • JTAG-Debugging mit openocd und gdb
  • Repository- und Projektstruktur
  • Architektur-, SOC- und boardabhängige Sourcen und Konfigurationen
  • Konfiguration, projektspezifische Defaults
  • Analyse von Core-Dumps
  • Tracen von Stack-Overflows

Betriebssystem

  • Monolithischer Aufbau des Betriebssystems
  • Apache-2.0-Lizenz
  • Threading-Modell, Kernel und Userspace, Syscalls
  • Cryptographische Algorithmen und Protokolle
  • Scheduling, kooperative und preemptive Threads, EDF-Scheduling
  • Preemptor-Threads als Bottom-Halve zu Interrupts
  • Timer, tickless Kernel
  • Speicherverwaltung, Allokationen auf dem Heap, Stack
  • Speicheranalyse zur Linkzeit und zur Laufzeit, Stack-Overflow
  • Libraries, IPC, User-Allokationen

Entwicklung

  • Device-Tree und Overlays (board- und projektspezifisch)
  • Logging und Tracing
  • Hardwareanbindung, GPIO, I2C, SPI
  • Anbindung von Sensoren (am Beispiel BME680)
  • Verwendung von Timern
  • Messung von Latenzzeiten
  • Anlegen eigener Shell-Kommandos
  • Generierung von Systemlast (Interrupts, CPU, Memory, ...)
  • Networking (DHCP, TCP/IP), Socketverbindung zu Server
  • FIFO und ZBUS als IPC-Mechanismen
  • Verwendung von GNSS und GPS

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.