Edocti
Fortgeschrittene technische Ausbildung für den modernen Softwareingenieur
Edocti Training

Linux-Gerätetreiber – Grundlagen

Mittelstufe
21 h
4.8 (231 Bewertungen)

Geplante Sessions

Beginn: 15.07.2026 , 3 Tage
Live online Bestätigt DE ● Instructor-led
€ 550 Anmelden
Linux-Gerätetreiber – Grundlagen

Treiber-Grundlagen: Lernen Sie Schritt für Schritt, Linux-Kernel-Treiber zu schreiben, zu kompilieren und zu debuggen.

Arbeiten Sie praxisnah mit Kernel-Modulen, Character Devices, Kernel-Logs und essenziellen APIs.

Erkunden Sie Speicherverwaltung, Hardware-Interrupts und Synchronisationsprimitive anhand realer Beispiele.

Praktische Erfahrung sammeln: Die intensiven Labs (~70 % des Kurses) konzentrieren sich auf das Bauen und Testen funktionsfähiger Treiber.

Wie dieser Kurs hilft: Verstehen Sie die kritischen Grenzen zwischen Kernel- und User-Space und wenden Sie Best Practices der Treiberentwicklung an.

Für wen: Entwickler mit C- und Linux-Grundkenntnissen, die in die Kernel-Programmierung einsteigen möchten.

Am Ende des Trainings werden Sie maßgeschneiderte Linux-Treiber sicher entwickeln, laden und debuggen können.

Fähigkeiten, die Sie lernen werden

Linux Kernel-Module Character Devices Kernel-Speicherverwaltung Interrupts & Exceptions Hardware I/O & Timer Kernel-Synchronisation Driver APIs Kernel Debugging

Curriculum

Einführung

  • Kernel versions
  • Kernel sources und die Nutzung von git
  • Rolling your own kernel
  • Plattformen
  • Arten von Device Drivers
  • Elemente eines Embedded-Linux-Projekts (Überblick)

Device drivers

  • Gerätetypen; mechanism vs. policy; Vermeidung von binary blobs
  • Wie Applikationen Device Drivers verwenden
  • Der System-Call-Mechanismus
  • Error numbers
  • printk()
  • devres: managed device resources
  • Module und Device Drivers: module_driver()-Macros, Modules und Hot Plug

Speicherverwaltung und -allokation

  • Virtueller und physischer Speicher
  • Memory zones
  • Page tables
  • kmalloc(), __get_free_pages(), vmalloc()
  • Slabs und Cache-Allokationen

Character devices

  • Device nodes
  • Major und Minor Numbers; Reservierung
  • Zugriff auf den Device Node
  • Registrierung des Geräts (registering the device)
  • udev
  • dev_printk() und verwandte Funktionen
  • Struktur file_operations
  • Driver Entry Points
  • Die Strukturen file und inode

Transfer zwischen User- und Kernel-Space

  • User-Space vs. Kernel-Space; System Calls; Process Context
  • Linked List und weitere Datenstrukturen
  • put(get)_user() und copy_to(from)_user()
  • Direkter Transfer: Kernel I/O und Memory Mapping
  • User-Space-Funktionen für mmap()
  • Driver Entry Point für mmap()

Interrupts und Exceptions

  • Interrupts und Exceptions
  • Asynchronous interrupts
  • MSI
  • Interrupts aktivieren/deaktivieren
  • Was man während eines Interrupts nicht tun sollte
  • IRQ-Datenstrukturen
  • Einen Interrupt Handler installieren

Zeitmessungen

  • Arten von Messungen
  • Jiffies
  • Aktuelle Zeit ermitteln
  • Clock Sources
  • Programmable Interval Timer
  • Time Stamp Counter
  • HPET
  • Tickless Kernels

Kernel-Timer

  • Delays einfügen
  • Low Resolution Timer
  • High Resolution Timer

ioctls

  • Driver Entry Points für ioctls
  • Locked und Lockless ioctls
  • ioctls definieren

Unified Device Model und sysfs

  • Grundlegende Datenstrukturen
  • Reale Geräte
  • sysfs
  • kset- und kobject-Beispiele

Sleeping und Wait Queues

  • In den Schlafmodus gehen und Aufwachen
  • Exclusive Sleeping
  • Polling

Interrupt Handling

  • Top und Bottom Halves
  • Deferrable Functions und Softirqs
  • Tasklets
  • Work Queues
  • Threaded Interrupt Handlers
  • Interrupt Handling im User-Space

Hardware I/O

  • Buses und Ports
  • Memory Barriers
  • I/O-Ports registrieren
  • Zugriff auf I/O-Register und I/O-Speicher
  • Zugriff aus dem User-Space: ioperm(), iopl(), /dev/port

Applikation (falls Zeit bleibt)

  • Implementierung eines LED-Treibers
  • Implementierung eines Temperatursensor-Treibers

Kursablauf

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30

Haben Sie an diesem Kurs teilgenommen?

Ihre Meinung ist uns sehr wichtig. Teilen Sie Ihre Erfahrungen mit uns und helfen Sie uns, diesen Kurs für zukünftige Teilnehmer weiter zu verbessern.

Feedback teilen

Möchten Sie mehr erfahren? Wir helfen Ihnen gern!

Oder schreiben Sie uns direkt an training@edocti.com.