LFD435 Entwicklung von Gerätetreibern für embedded Linux-Systeme

In diesem Kurs erlernen erfahrene Programmierer die Entwicklung von Gerätetreibern für Linux-Systeme und entwickeln ein grundlegendes Verständnis des Linux-Kernels.

Der Kurs beleuchtet die verschiedenen Arten von Gerätetreibern in Linux und stellt geeignete APIs für die Programmierung eines Gerätetreibers vor. Praktische Übungen auf ARM-Hardware veranschaulichen die Vorgehensweisen, z.B. Cross-Compiling und Treiberentwicklung für ein embedded Target. Im Kurspreis ist für jeden Teilnehmer ein Development Kit enthalten, um den Test von Kernel-Treibern mittels TFTP und NFSroot zu verdeutlichen.

Neben Kernel und Algorithmen werden hauptsächlich die Funktionen im Detail behandelt, die zumeist in Gerätetreibern zum Einsatz kommen. Themen wie Scheduling, Speicherverwaltung etc. werden in einem weiterführenden Kurs ausführlich beleuchtet.

Voraussetzungen

Kenntnisse der wesentlichen Kernel-Schnittstellen und Techniken, wie dem Compilieren und Schreiben bzw. Load und Unload von Modulen, die Anwendung von Synchronisationsfunktionen sowie die Grundlagen von Speicherzuweisung und -verwaltung wie im Kurs Linux-Systemprogrammierung vermittelt.

Inhalt

  • Einführung
  • Überblick
  • Cross-Development-Toolkette
  • Aufbau eines Target-Entwicklungsboards
  • Booten eines Target-Entwicklungsboards über Ethernet
  • Konfigurieren, Compilieren und Booten des Kernels
  • Gerätetreiber
  • Module und Gerätetreiber
  • Speicherverwaltung und -zuweisung
  • Zeichenorientierte Geräte
  • Kernel-Funktionen
  • Übertragung zwischen User- und Kernel-Space
  • Plattform-Treiber
  • Gerätebäume
  • Interrupts und Exceptions
  • Zeitmessungen
  • Kernel-Timer
  • ioctls
  • Unified Device Model und sysfs
  • Firmware
  • Schlafen und Warteschlangen
  • Interruptbehandlung: verzögerte Funktionen und Benutzer-Treiber
  • Direct Memory Access (DMA)
  • Speichertechnologien
  • USB-Treiber