Architektur des Linux Kernels und Treiber 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.
Die Übungen werden auf einem ARM-basierten Embedded-Board durchgeführt. Entsprechende Boards sowie die Cross-Development-Toolchain werden zur Verfügung gestellt.
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.
Dieser Kurs kann auch zusammen mit dem Kurs href="/kurs/echtzeit-linux">Echtzeit-Linux kombiniert und innerhalb von 5 Tagen durchgeführt werden: href="/kurs/linux-treiber-und-rt">Linux Treiber und RT
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
- 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
- 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
- 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
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, 4 Tage
Linux Kernel Treiber anmelden -
17. November 2025, 4 Tage
Linux Kernel Treiber anmelden
Haben Sie einen anderen Wunschtermin?