Linux Treiber und RT

Architektur des Linux Kernels, Treiber und Echtzeit 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.

Im zweiten Teil lernen Sie, aus welchen Komponenten ein Echtzeit-Linux-System besteht, wie die Anforderungen an ein Echtzeit-Betriebssystem erfüllt werden und wie ein an das Projekt angepasstes System erstellt wird.

Der Kursinhalt bezieht sich auf den Mainstream-Linux-Kernel sowie auf den RT-Preemption-Patch.

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 5-tägige Kurs besteht aus 2 Modulen, die auch einzeln gebucht werden können:

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

harte Echtzeit mit dem RT-Preemption-Patch

  • Scheduling-Klassen: RT-Task, Deadline-Task, Batch- und Idle-Task
  • Konfiguration und Installation
  • threaded Interrupts und SoftIRQ's
  • Spezialfälle: kaskadierte GPIO's, Timer-Events
  • Prioritätsinversion, RT-Mutex, annotated Spin-Locks
  • Bewertung des Echtzeitverhaltens, Latenzzeitmessung, Messergebnisse
  • Erstellung von Echtzeit-Applikationen - Was muss beachtet werden?
  • Alternative Open-Source-Echtzeit-Varianten zum Vergleich: RTAI und Xenomai

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

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.