RTOS und Echtzeitprogrammierung in der Praxis: RTOS‑basierte Anwendungen auf echter Hardware mit QNX entwerfen und umsetzen.
Scheduler, Threads, Synchronisation und Zeitverwaltung Schritt für Schritt erarbeiten.
Zuverlässige IPC‑Pipelines bauen und Latenz, Jitter und Determinismus beurteilen.
Praktische Erfahrung sammeln durch ~70% Hands‑on Labs mit Momentics und BeagleBone‑Targets.
Nutzen: Echtzeitkonzepte sicher in Produktivsystemen anwenden.
Für wen: konzipiert für Personen mit C/C++, die harte Echtzeitprojekte anstreben.
Optionale Deep Dives zu Scheduling‑Theorie, Tracing, Multicore‑Affinity und Safety‑Standards.
Curriculum
Praktische RTOS‑Einführung
- Zeitgetriggerte Embedded‑Systeme
- Einführung in RTOS
- Scheduler: Haupttechniken; Priority Inheritance; Stack‑Sharing
- Einfache Scheduler‑Implementierungen zum Verständnis von Datenstrukturen und Context Switching
- Grundregeln für Echtzeitanwendungen (Dos and Don'ts)
Das erste QNX‑Projekt
- Producer–Consumer mit Timeout‑Garantien in Momentics implementieren
- Ausführen, auf das Target kopieren, debuggen, profilieren
- Grundlegende QNX‑Befehle und Partitioning
- Ziel: mit der QNX‑Entwicklungsumgebung vertraut werden
Die Neutrino‑Architektur
- Überblick über zentrale Komponenten (Inhaltsverzeichnis für die vertieften Module)
Die INTEGRITY‑RTOS‑Architektur
- Kurzes Modul mit besonderen INTEGRITY‑Merkmalen
Threads und Prozesse
- Prozesse vs. Threads; Erstellung
- Thread‑Synchronisation: joins, mutexes, semaphores, condition variables, read‑write locks, sleepon locks, barriers
- Wartezeiten steuern (Timeouts, absolut vs. relativ)
- QNX Thread Pools
Zeit, Timer und Uhren
- Zentrale Datenstrukturen für Timekeeping
- Kernel‑Zeit: periodischer Betrieb, Clock Ticks
- Timer für zeitgetriggerte Anwendungen
- Kernel‑Timeouts und Wartezustände
IPC‑Programmierung
- POSIX IPC: Datentransfer und Shared Memory
- Synchronisation: semaphores, events, signals, file locks, named mutexes
- Neutrino‑spezifische IPC
Multicore‑Themen
- Anwendungsdesign für Multicore
- Scheduling und Interrupts auf Multicore
- Processor Affinity
- Inter‑Core‑Synchronisation
Eine QNX‑Image erstellen
- QNX‑Image für BeagleBone bauen und anpassen
Anwendung: Sensornetz mit Echtzeit‑Constraints
- Teamarbeit: Stern‑Topologie, Datenverarbeitung
- Echtzeit‑Constraints über das Netzwerk
Optionale Module
Erweiterte Echtzeit‑Themen (optional)
- Scheduling‑Theorie: Rate‑Monotonic, Deadline‑Monotonic, EDF; Response‑Time‑Analyse
- Ressourcenzugriffs‑Protokolle: Priority Inheritance vs. Priority Ceiling; begrenzte Blockierung
- Latenz‑ und Jitter‑Messung: cyclictest; High‑Res‑Timer; Clock‑Auswahl
- Tracing und Profiling: LTTng, perf, ftrace; Flame Graphs; systemweite Timing‑Diagramme
- Lock‑freie Queues und Ringpuffer für ISR ↔ Main; Memory Barriers; Cache‑Effekte
- Interrupt‑Affinity, CPU‑Isolation und vorhersagbares Multicore‑Verhalten
- DMA und Zero‑Copy; Determinismus von I/O
- Zeitsynchronisation für verteilte RT‑Systeme: PTP/IEEE‑1588
- Safety und Coding‑Standards: MISRA C, Defensive Programmierung, statische Analyse
- QNX‑Spezifika: Adaptive Partitioning, SchedFIFO/SchedRR/Sporadic Server, Pulses, Channels
Kursablauf
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30