Microcontroller Systems Programming
Das Modul richtet sich an Studierende, welche sich bezüglich hardwarenaher Programmierung, Realisation von Echtzeit-Mikrocontrollersystemen und Low-Power IoT-Geräten theoretisch und praktisch vertiefen möchten. Inhaltlich wird damit die Brücke zwischen einfachen, betriebssystemlosen Mikrocontrollersystemen und komplexen, Linux-basierten Systemlösungen geschlossen, deren Kosten und Energiebedarf vergleichsweise höher liegen.
- Einführung in die Programmiersprache C++ für Deep-Embedded-Geräte.
- Echtzeitverhalten und Ressourcenbedarf verschiedener Software-Architekturansätze.
- Eigenschaften und Funktionsweise gängiger Real-Time Operating Systems (RTOS).
- Debugging für Fortgeschrittene: Watch-Points, Breakpoint-Conditions, Breakpoint-Actions, Ein- und Ausgabe von Speichersegmenten von bzw. auf Dateien.
- Real-Time Multitasking-Mechanismen wie Scheduling, symmetrische und asymmetrische Task-Synchronisation, gegenseitiger Ausschluss, Intertask-Kommunikationsmechanismen, vermeiden von Prioritätsinversion etc.
- Effiziente Input-/Output-Pufferung mittels interruptgesteuerter Double-Buffering, DMA und eventbasierter autonomer Peripheriefunktionen.
- Build-Systeme (cmake) und Design for Testability, Unit-Testing.
- Linker-Skript und Segmentallokation.
- Überblick über IoT-taugliche Stacks, Funkprotokolle und Sicherheitsmechanismen mit exemplarischer Vertiefung in Bluetooth Low Energy (BLE).
- Viel "Hands-On" mit Microcontrollerboard inkl. Touch-Screen.
Die Studierenden kennen die Problematik von Echtzeitanwendungen sowie ein gängiges Echtzeit-Betriebssystem. Sie können sowohl Echtzeit-Multitasking Anwendungen als auch Low-Power IoT-Anwendungen fachgerecht entwerfen und auf einem Echtzeit-Betriebssystem in C oder C++ realisieren und debuggen. Die Studierenden kennen die gängigsten Programmiermuster zur effizienten I/O-Pufferung. Die Studierenden haben eine Übersicht über Protokolle und Problematiken im Bereich IoT. Die Studierenden beherrschen die Sprachelemente der Programmiersprache C++ und sind in der Lage, diese für Systemen mit eingeschränkten Ressourcen einzusetzen.