Architektur des Linux Kernels, Treiber und Echtzeit Entwicklung
Wenn die von Linux im Userspace bereitgestellten Mechanismen in Form der System-API nicht ausreichen und höhere Anforderungen hinsichtlich Timing und Reaktionsverhalten gestellt werden oder der Zugriff auf Hardware-Ressourcen notwendig ist, dann gibt es nur eines: In den Linux-Kernel eintauchen und selber Kernel-Treiber erstellen.
Das dazu notwendige Know-How, insbesondere die im Kernel vorhandenen Mechanismen sowie deren Zusammenspiel wird in diesem Kurs vermittelt. Nach Abschluss des Kurses sind Sie in der Lage Kernel-Treiber zu schreiben sowie die vom Kernel angebotenen Mechanismen effektiv einzusetzen.
Im zweiten Teil lernen Sie, aus welchen Komponenten ein Echtzeit-Linux-System besteht, wie die Anforderungen an ein Echtzeit-Betriebssystem erfüllt werden und wie ein an das Projekt angepasstes System erstellt wird.
Der Kursinhalt bezieht sich auf den Mainstream-Linux-Kernel sowie auf den RT-Preemption-Patch.
Die Übungen werden auf einem ARM-basierten Embedded-Board durchgeführt. Entsprechende Boards sowie die Cross-Development-Toolchain werden während der Schulung zur Verfügung gestellt.
Inhalt der Übung ist die Erstellung eines Linux-Kerneltreibers mit Zugriff auf Hardware, Device-Tree-Einbindung, sysfs-Unterstützung, Memory-Mapping und Synchronisierung. Damit werden alle wichtigen Themen des Kurses praktisch eingeübt und können im eigenen Projekt umgesetzt werden.
Trainer und Dozenten
Andreas Klinger ist selbständiger Trainer und Entwickler. Schwerpunkte seiner Arbeit sind Linux Kerneltreiber sowie Embedded- und Echtzeit-Linux.
Als Autor von Fachartikeln und als Referent auf Kongressen vermittelt er Know-How zu Open-Source.
Voraussetzungen
Dieser Kurs richtet sich an Entwickler und System-Designer
Es werden Kenntnisse in Linux-Systemprogrammierung, sowie fundiertes Wissen in der Programmiersprache C vorausgesetzt
Sie sollten mit Compiler und Makefiles umgehen können, die wichtigsten Systemfunktionen kennen (open(), read(), write(), ioctl(), mmap(), ...) und in einem eigenen Programm anwenden können.
Inhalt
Linux Kerneltreiber
- Aufbau des Linux-Kernel - Virtuelles File System (VFS)
- System-Call-Schnittstelle
- Character-, Block- und Net-Devices, Dateisystem-Treiber
- Aufbau und Funktionsweise von Kernel-Treibern, Datei-Schnittstelle und Device-Nodes
- Kernel-Module, Modulparameter
- sysfs im Treiber verwenden
Hardware-Zugriff
- Flattened-Device-Tree (FDT)
- Managed Device Resources
- IO-Ports und IO-Memory
- GPIO's, Deskriptor-Interface, Interrupt-Controller, GPIO-Expander
- I2C- und SPI-Schnittstelle verwenden
- Industrial-IO (IIO) für Sensoren und Aktoren
Interrupts
- Interrupts, Sekundärreaktionen auf Interrupts
- SoftIRQ's: Kernel-Timer, Tasklet
- Kernel-Threads
Synchronisierung
- Preemption-, Bottom-Halve- und Interrupt-Sperre
- Diagnose von Lockingproblemen mit lockdep
- Warteschlangen, blockierende Operationen, poll
- Semaphore, Mutex und Completion
- Spin-Lock, Read-Write-Lock, Sequence-Lock
- Ringbuffer, Read-Copy-Update (RCU)
Speicher-Verwaltung
- virtueller, logischer und physikalischer Adressraum
- Memory-Management-Unit (MMU), Speicherschutzkonzept, Segmentations-Faults
- Allozierung von Kernel-Speicher, atomare Operationen
- Buddy-System, Page-Alignment
- Slab-Allocator, kmalloc
- Datenaustausch Userspace ↔ Kernel, Memory-Mapping
Debugging und Tracing
- Kernel-Debugging
- Function-Trace-Framework (ftrace), Timing-Analyse, Latenzzeiten
- trace-cmd und kernelshark
- perf als Sampling-Tool
- Extented Berkely Packet Filter (eBPF), ply als Frontend
Hochauflösende Timer in Linux (hrtimer)
- klassische Linux-Timer; Timer-Wheel und jiffies
- hrtimer-Framework, Architektur und Funktionsweise
- Verwendung in Kernel-Treibern
harte Echtzeit mit dem RT-Preemption-Patch
- Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
- Konfiguration und Installation
- threaded Interrupts und SoftIRQ's
- Spezialfälle: kaskadierte GPIO's, Timer-Events
- Prioritätsinversion, RT-Mutex, annotated Spin-Locks
- Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
- Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
- Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai
- Flattened-Device-Tree (FDT)
- Managed Device Resources
- IO-Ports und IO-Memory
- GPIO's, Deskriptor-Interface, Interrupt-Controller, GPIO-Expander
- I2C- und SPI-Schnittstelle verwenden
- Industrial-IO (IIO) für Sensoren und Aktoren
Interrupts
- Interrupts, Sekundärreaktionen auf Interrupts
- SoftIRQ's: Kernel-Timer, Tasklet
- Kernel-Threads
Synchronisierung
- Preemption-, Bottom-Halve- und Interrupt-Sperre
- Diagnose von Lockingproblemen mit lockdep
- Warteschlangen, blockierende Operationen, poll
- Semaphore, Mutex und Completion
- Spin-Lock, Read-Write-Lock, Sequence-Lock
- Ringbuffer, Read-Copy-Update (RCU)
Speicher-Verwaltung
- virtueller, logischer und physikalischer Adressraum
- Memory-Management-Unit (MMU), Speicherschutzkonzept, Segmentations-Faults
- Allozierung von Kernel-Speicher, atomare Operationen
- Buddy-System, Page-Alignment
- Slab-Allocator, kmalloc
- Datenaustausch Userspace ↔ Kernel, Memory-Mapping
Debugging und Tracing
- Kernel-Debugging
- Function-Trace-Framework (ftrace), Timing-Analyse, Latenzzeiten
- trace-cmd und kernelshark
- perf als Sampling-Tool
- Extented Berkely Packet Filter (eBPF), ply als Frontend
Hochauflösende Timer in Linux (hrtimer)
- klassische Linux-Timer; Timer-Wheel und jiffies
- hrtimer-Framework, Architektur und Funktionsweise
- Verwendung in Kernel-Treibern
harte Echtzeit mit dem RT-Preemption-Patch
- Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
- Konfiguration und Installation
- threaded Interrupts und SoftIRQ's
- Spezialfälle: kaskadierte GPIO's, Timer-Events
- Prioritätsinversion, RT-Mutex, annotated Spin-Locks
- Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
- Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
- Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai
- Preemption-, Bottom-Halve- und Interrupt-Sperre
- Diagnose von Lockingproblemen mit lockdep
- Warteschlangen, blockierende Operationen, poll
- Semaphore, Mutex und Completion
- Spin-Lock, Read-Write-Lock, Sequence-Lock
- Ringbuffer, Read-Copy-Update (RCU)
Speicher-Verwaltung
- virtueller, logischer und physikalischer Adressraum
- Memory-Management-Unit (MMU), Speicherschutzkonzept, Segmentations-Faults
- Allozierung von Kernel-Speicher, atomare Operationen
- Buddy-System, Page-Alignment
- Slab-Allocator, kmalloc
- Datenaustausch Userspace ↔ Kernel, Memory-Mapping
Debugging und Tracing
- Kernel-Debugging
- Function-Trace-Framework (ftrace), Timing-Analyse, Latenzzeiten
- trace-cmd und kernelshark
- perf als Sampling-Tool
- Extented Berkely Packet Filter (eBPF), ply als Frontend
Hochauflösende Timer in Linux (hrtimer)
- klassische Linux-Timer; Timer-Wheel und jiffies
- hrtimer-Framework, Architektur und Funktionsweise
- Verwendung in Kernel-Treibern
harte Echtzeit mit dem RT-Preemption-Patch
- Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
- Konfiguration und Installation
- threaded Interrupts und SoftIRQ's
- Spezialfälle: kaskadierte GPIO's, Timer-Events
- Prioritätsinversion, RT-Mutex, annotated Spin-Locks
- Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
- Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
- Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai
- Kernel-Debugging
- Function-Trace-Framework (ftrace), Timing-Analyse, Latenzzeiten
- trace-cmd und kernelshark
- perf als Sampling-Tool
- Extented Berkely Packet Filter (eBPF), ply als Frontend
Hochauflösende Timer in Linux (hrtimer)
- klassische Linux-Timer; Timer-Wheel und jiffies
- hrtimer-Framework, Architektur und Funktionsweise
- Verwendung in Kernel-Treibern
harte Echtzeit mit dem RT-Preemption-Patch
- Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
- Konfiguration und Installation
- threaded Interrupts und SoftIRQ's
- Spezialfälle: kaskadierte GPIO's, Timer-Events
- Prioritätsinversion, RT-Mutex, annotated Spin-Locks
- Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
- Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
- Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai
- Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
- Konfiguration und Installation
- threaded Interrupts und SoftIRQ's
- Spezialfälle: kaskadierte GPIO's, Timer-Events
- Prioritätsinversion, RT-Mutex, annotated Spin-Locks
- Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
- Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
- Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai
Kurszeiten
Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.
An Kurstagen gibt es bei uns ab 8 Uhr Frühstück.
Unsere Kurse beginnen um 9 Uhr und enden um 18 Uhr. Dieser Kurs endet am letzten Tag um 16:00 Uhr.
Neben den kleinen Pausen gibt es eine Stunde Mittagspause mit leckerem, frisch in unserer Küche zubereitetem Essen.
Nach der Schulung 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.
Termine und Anmeldung
-
10. März 2025, 5 Tage
Linux Treiber und RT anmelden -
17. November 2025, 5 Tage
Linux Treiber und RT anmelden
Haben Sie einen anderen Wunschtermin?