BWP523: Kernel- und Treiberprogrammierung (mit Praktikum)

Wahlpflichtmodule

BWP523: Kernel- und Treiberprogrammierung (mit Praktikum)

Kurzporträt BWP523: Kernel- und Treiberprogrammierung (mit Praktikum)
Worum geht es? In diesem Modul lernen Studierende, wie Linux-Systeme mit konkreter Hardware kommunizieren. Dazu analysieren sie Datenblätter, wählen passende Kernel-Subsysteme aus und entwickeln einfache Gerätetreiber für Embedded-Linux-Geräte. Im Praktikum werden Treiber gebaut, geladen, getestet und debuggt; außerdem wird geprüft, wie Hardwarezugriffe für Anwendungen sichtbar werden.
Wofür braucht man es? Diese Kompetenzen werden gebraucht, um neue Hardwarekomponenten systemkonform an eingebettete Linux-Systeme anzubinden. Die Kompetenzen sind besonders wichtig, wenn Applikationssoftware zuverlässig auf Sensoren, Aktoren oder industrielle Schnittstellen zugreifen soll.
Wieso ist es interessant? Viele technische Geräte funktionieren nur, weil Treiber die Verbindung zwischen Hardware und Software herstellen. Das Modul macht nachvollziehbar, was im Betriebssystem passiert, wenn reale Hardware angesprochen wird.
Modulverantwortung

Prof. Dr. Jürgen Quade

Lehrperson(en)

Prof. Dr. Jürgen Quade

Verwendbarkeit
  • Bachelor Elektrotechnik
  • Bachelor Maschinenbau
  • Bachelor Mechatronik und Robotik
Fächergruppe

Ingenieurwissenschaften

Modultyp
Wahlpflicht
Sprache

Deutsch

Angebot

jährlich

Dauer

1 Semester

Credits

5 ECTS

Benotung

Deutsche Notenskala 1-5

SWS

2 V | 1 Ü | 1 P | - S

Workload
Präsenzstudium: 45 Std. Selbststudium: 90 Std.
Engl. Titel

Kernel and Device Driver Programming

Empfohlene Voraussetzungen
  • BB008: Informatik für Ingenieurwissenschaften: Programmiergrundlagen, Algorithmen und strukturierte Umsetzung technischer Abläufe.
  • BET301: Mikrocontroller-Programmierung: hardwarenahe Softwareentwicklung, Peripherienutzung, Debugging und Test eingebetteter Funktionen.
  • BET303: Echtzeitsysteme: zeitkritische Abläufe, Nebenläufigkeit, Synchronisation und Bewertung des Zeitverhaltens eingebetteter Systeme.
Lernergebnisse / Kompetenzen
WAS

Die Studierenden können für ein konkretes Embedded-Linux-Gerät einen Linux-Gerätetreiber für eine gegebene Hardwarekomponente entwerfen, implementieren und in das System integrieren.

WOMIT

Die Studierenden erreichen dieses Lernergebnis, indem sie

  • das Datenblatt einer einfachen Peripherie analysieren und relevante Register, Signale und Protokolle identifizieren,
  • die passende Treiberklasse und Kernel-Subsysteme auswählen und die Einbindung über Device Tree planen,
  • ein Treiberskelett mit Initialisierungs- und Aufräumfunktionen erstellen,
  • Hardwarezugriffe mit geeigneten Kernel-APIs umsetzen,
  • grundlegende Nebenläufigkeitsaspekte berücksichtigen,
  • den Treiber bauen, in das Zielsystem deployen, als Modul laden/entladen und die Sichtbarkeit im System überprüfen,
  • die Funktion des Treibers mit einfachen Userland-Programmen bzw. Skripten testen, typische Fehler systematisch debuggen und Korrekturen vornehmen
WOZU

um in der Entwicklung eingebetteter Linux-Geräte eigenständig systemkonform neue Hardwarekomponenten an den Kernel anzubinden und ihre Funktion zuverlässig für Applikationssoftware bereitzustellen.

Inhalte
  • Theoretischer Unterbaum (Abarbeitungskontext, Unterbrechungsmodell)
  • Build-System & Arbeitsumgebung
  • Treiber aus Sicht der Applikation
  • Einfache Gerätetreiber (Einsprungspunkte, Datentransfer, Device Tree)
  • Kritische Abschnitte erkennen und absichern
  • Systemaspekte (Proc-Filesystem, Gerätemodell, Realzeitaspekte)
  • Sonstige Treibersubsysteme (GPIO, I2C, SPI, Industrial I/O)
  • Device Tree & Plattform-Integration
Prüfungsvorleistung

aktive Praktikumsteilnahme

Prüfungsleistung

Studien-/Projektarbeit: schriftlicher Teil (10-20 Seiten) mit Fachgespräch (15-20 Minuten)

Literatur
  • Jürgen Quade: Linux-Treiber entwickeln. 5. Auflage, dpunkt.verlag, 2025.