Echtzeit-Linux und Systemprogrammierung
Vom Embedded-Linux-User zum systemnahen Echtzeit-Entwickler
Termine
Buchungsmöglichkeiten: Sie können wählen, ob Sie nur Teile der Woche buchen möchten oder die komplette Linux-Woche zum Vorteilspreis.
1. - 3. Tag:
Linux-Kernel, Prozessverwaltung und Tracing (inkl. Vortragstag zu Echtzeit-Linux und Qualitätssicherung)
4. - 5. Tag:
Interprozesskommunikation, Debugging, Ressourcenverwaltung und Hardware-Anbindung. Sie haben die Möglichkeit, den Vortragstag optional dazuzubuchen.
Bitte beachten: Für die Teilnahme am Vortragstag sowie dem 4. und 5. Tag wird das Wissen der ersten beiden Seminartage vorausgesetzt!
1. - 5. Tag:
Linux-Kernel, Prozessverwaltung, Tracing, Interprozesskommunikation, Debugging, Ressourcenverwaltung und Hardware-Anbindung (inkl. Vortragstag zu Echtzeit-Linux und Qualitätssicherung)
Seminarinhalt
Die Linux-Systemprogrammierung ist ein wichtiger Bereich für Entwickler, die robuste, effiziente und zuverlässige Software auf Systemebene erstellen möchten. Um leistungsstarke und ressourcenschonende Anwendungen zu entwickeln und dabei effizient mit Ressourcen wie Speicher, Prozessoren und Geräten umzugehen, müssen Systemprogrammierer den Linux-Kernel und das
virtuelle Dateisystem verstehen. Syscalls sind dabei eine entscheidende Schnittstelle zwischen Anwendungen und dem Kernel. Sie ermöglichen den Zugriff auf Kernel-Funktionen, das Lesen und Schreiben von Dateien, die Verwaltung von Prozessen und die Nutzung anderer Betriebssystemdienste.
Für Anwendungen mit Echtzeitanforderungen, wie beispielsweise Steuerungssysteme oder Robotik, ist es wichtig, Kenntnisse in Echtzeit- und Multithreading-Programmierung zu besitzen. Dabei geht es um Echtzeit-Tasks, Prioritäten und verschiedene Scheduling-Modelle. Beim Debugging und der Fehlerbehebung müssen Systemprogrammierer Signale, Core-Dumps und Remote-Debugging verwenden können – insbesondere bei komplexen, systemnahen Problemen. Zudem erfordert die Interaktion mit Hardware spezielle Kenntnisse, um auf Geräte wie GPIOs, I2C- und SPI-Busse zuzugreifen und mit ihnen zu kommunizieren.
Vortragstag:
Der Vortragstag widmet sich ganz dem Thema Echtzeit-Linux. Behandelt werden diese Fragestellungen:
- Wie funktioniert der Echtzeit-Kernel mit PREEMPT_RT?
- Wie können auftretende Latenzen eingegrenzt werden?
Bringen Sie Ihre Fragen mit: Nutzen Sie die Chance, und stellen Sie den Referenten die Fragen, die Sie in Ihrem Projekt oder in Ihrer Abteilung beschäftigen.
Lernziele
- Verständnis des Betriebssystemaufbaus
- Verwendung der Schnittstellen zum Betriebssystem
- Erstellung von systemnahen Programmen
- Diagnose des Programmverhaltens
- Tracing von Laufzeitproblemen
- Funktionsweise von PREEMPT_RT
- Konfiguration und Anwendung von PREEMPT_RT
- Bestimmung der Echtzeiteigenschaften
- Analyse von Systemlatenzen auf einem Linux-System mit PREEMPT_RT
Zielgruppe
- Entwickler, die systemnahe Programme unter Linux erstellen möchten
- Entwickler und in deren Umfeld Beschäftigte (Tester, QA etc.), die erfahren möchten, wie der Linux-Kernel funktioniert und welche Schnittstellen das Betriebssystem anbietet
Agenda
Tag 1:
09:00 - 17:00 Uhr
Aufbau und Verwendung des Linux-Kernel
- Aufbau des Linux-Kernels, Virtuelles Dateisystem
- Funktionsweise von Syscalls
- Verwendung von Dateien und Device-Nodes
- Erstellung eigener Programme
- Blockierendes Verhalten von read und write
- Memory-Mapping
IT Klinger
Tag 2:
09:00 - 17:00 Uhr
Prozessverwaltung und Tracing
- Prozesse und deren Verwaltung
- Zombies
- Scheduling-Modell
- Realtime- und Deadline-Tasks
- CPU-Affinitäten und CPU-Sets
- Tracing von Interrupt- und Scheduling-Events
Tag 3:
09:00 - 17:00 Uhr
Vortragstag: Echtzeit-Linux und Qualitätssicherung
- Historischer Überblick zu Echtzeit-Linux
- Das Linux Foundation RTL Collaborative Project
- Linux und PREEMPT_RT: Überblick, Installation und Konfiguration
- Bestimmung der Echtzeiteigenschaften eines Linuxsystems
- Qualitätssicherung: Vorstellung der OSADL QA-Farm
- Methoden zur Analyse unerwünschter Systemlatenzen: „Latency Fighting“
Tag 4:
09:00 - 17:00 Uhr
Interprozesskommunikation und Debugging
- Signale
- Core-Dumps und deren Verwendung
- Remote-Debugging
- Interprozesskommunikation
- Shared-Memory, Semaphoren, Message-Queues
- Timer
- Multithreading
- Mutexe und Barriers
IT Klinger
Tag 5:
09:00 - 17:00 Uhr
Ressourcenverwaltung und Hardware-Anbindung
- Cgroups
- Capabilities
- Verwendung von Hardware
- GPIOs
- I2C- und SPI-Bus
- Anbindung von Sensoren mit Industrial-IO