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 Echtzeit-Linux kombiniert und innerhalb von 5 Tagen durchgeführt werden: 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
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
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
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
Hochauflösende Timer in Linux (hrtimer)
- klassische Linux-Timer; Timer-Wheel und jiffies
- hrtimer-Framework, Architektur und Funktionsweise
- Verwendung in Kernel-Treibern
Preis und Dauer
4 Tage, 2.058,00 € + 19% MwSt. = 2.449,02 €
Termine
-
15. November 2021, 4 Tage
Linux Kernel Treiber
Anmelden