ldd-logo-1

Embedded Linux Kernel Interna und Gerätetreiber

5-Tage-Kurs

Der Kursinhalt kann auf Ihre Bedürfnisse und Ziele zugeschnitten werden, und wenn es die Zeit erlaubt, kann während der Schulung auch eine Beratung erfolgen. Bitte klicken Sie auf die öffentliche Registerkarte, um die öffentlichen Sitzungen zu sehen.

Privat online
Vor Ort in Ihrem Unternehmen
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Viertel wählen Quartal Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis
4. Quartal 2026 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Jan 01, 2027

Inhalt wie unten beschrieben. Ab drei Teilnehmern aus demselben Unternehmen, schauen Sie sich bitte unsere privaten Sitzungen an.

Öffentlich online
Öffentlicher Workshop im Klassenzimmer
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Datum auswählen Datum Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis

Dieser Kurs zeigt Kernel-Interna und Linux-Gerätetreiber und wo man weiterführende Themen findet.

Ziele des Kurses

Wir behandeln die Grundlagen, die für das Schreiben von Upstream-Linux-Gerätetreibern erforderlich sind, wozu auch einige Einblicke in die Kernel-Interna gehören. Anleitungen, Theorie und praktische Übungen ermöglichen es Ihnen, von Anfang an mit der Community zu interagieren. Nach erfolgreichem Abschluss dieses Kurses sollten Sie wissen, wo Sie die notwendigen Ressourcen finden, um Ihre eigenen Linux-Gerätetreiber zu schreiben und zu warten.

Beschreibung

In diesem fünftägigen Kurs werden die Grundlagen der Linux-Kernel-Interna und der Gerätetreiberentwicklung anhand von praktischen Übungen in Verbindung mit theoretischen Erläuterungen vermittelt. Die praktischen Übungen werden mit freier und quelloffener Software wie dem Yocto Project® Software Development Kit (SDK) auf einem Zielboard (z. B. i.mx8) durchgeführt. Die Hardware kann auf Wunsch erworben werden und wird Ihnen zugeschickt. So können Sie auch nach dem Workshop in Ihrem Unternehmen mit den Kursunterlagen arbeiten. Die Schulung ist so aufgebaut, dass Sie sich schnell in die Materie einarbeiten können. Wir vermitteln die Prozesse, Konzepte und Befehle, die zum Schreiben von Linux-Gerätetreibern erforderlich sind, durch eine Kombination aus Theorie und praktischen Übungen. Lernen Sie von einem erfahrenen Trainer und nehmen Sie das Wissen und die Fähigkeiten mit nach Hause, um es effektiv in Ihrem eigenen Embedded-Entwicklungsprojekt anzuwenden.

Voraussetzungen

  • Grundlegende Vertrautheit mit der Verwendung eines Linux-Systems (z. B. Ubuntu) als Endbenutzer im Benutzerbereich
  • Grundlegende Vertrautheit mit einer Befehlszeilen-Shell
  • Grundkenntnisse des Linux-Benutzerraums und der Anwendungsentwicklung
  • Fortgeschrittene C-Programmierkenntnisse
  • Sie sollten "Embedded Linux - From System Architecture to Real-Time (5 Tage)" oder "Introduction to Embedded Linux in Theory and Practice - a Crash Course (3 Tage)" besucht haben (dringend empfohlen!)
  • ...es sei denn, Sie sind bereits mit dem in diesen Kursen behandelten Stoff vertraut.
  • Um an diesem Kurs teilnehmen zu können, sollten Sie über Erfahrung mit Embedded Linux verfügen (Erstellung des Kernels, des User-Space und des Root-Dateisystems sowie die Verwendung der entsprechenden Tools).
  • Die oben genannten Veranstaltungen können vor Ort oder online durchgeführt werden. Gerne können Sie hier nach Terminen und Preisen fragen.

Kurs-Fahrplan

Wer sollte teilnehmen?

Personen, die sich für die Entwicklung oder Bewertung von (Embedded-)Linux-Gerätetreibern interessieren oder damit betraut sind. Der Workshop richtet sich an Führungskräfte, Softwareentwickler, Systemingenieure, Tester, Administratoren, Ingenieure und andere Interessierte im Bereich (Embedded-)Linux-Gerätetreiber.

Gliederung des Kurses

Tag 1

Einführung

  • Eine kurze Geschichte von Linux | Lizenzierung | Kernel-Versionierung | Release-Zyklus | Kernel-Bäume | Mainline | Kernel-Space im Vergleich zu User-Space | Unterschied zwischen Mechanismus und Politik | Kernel-Treiber-Alternativen | Real-Time-Operating-Systems (RTOS) im Gegensatz zu Linux

Speicherverwaltung

  • virtueller Speicher versus physischer Speicher | Speicherzuweisung im Kernel | pages | zones | API | slab

Kernel-Patch

  • Patch-Lebenszyklus | git | Kernel-Quellcode | Patch erstellen | Patch prüfen | Fix-Patch | den Patch versenden | geprüften Quellcode (git)
Tag 2

Kernel-Module

  • Kernel-Quellcode herunterladen | Kernel konfigurieren | Kernel erstellen | Kernel installieren | Kernel-Modul (statisch verknüpft | zur Laufzeit geladen) | __init/__exit | Lizenzierung | tainted Modul/Kernel | EXPORT_SYMBOL | out of tree.ko makefile | module-init-tools | setzen Sie das Modul in den kernel tree | Kconfig | Parameterübergabe | sparse

Charakter-Treiber

  • Architektur | Benutzer/Kernel-Schnittstelle | E/A-Teilsystem | virtuelles Dateisystem (VFS) | sysfs (Geräte | Bus | Fahrer | Klassen) | kobject | ktype | kset | Linux-Kernel-Treibermodell | Gerätedateien
  • Character Treiber
    • Initialisierung des Treibers | Registrierung von Character Driver | Fahreröffnung | Treiber-Freigabe | cdev | cdev_add | cdev_del | ... | major/minor Zahlen | udev | udevmonitor | udevadm
Tag 3

Character Driver Funktionen (fortgeschritten)

  • ioctl | unlocked_ioctl| compat_ioctl| User-Space-API | Kernel-Space-API | Prozesslebenszyklus | Sleeping/Blocking | Sleeping/Waking up | Wait-Queue | Thundering Herd |poll/select
  • Fehler | Fehlersuche | Fehlersuche im Kernel | binäre Suche mit git | Debug-Unterstützung durch den Kernel | printk | syslogd | klogd | Loglevels | Ratenbegrenzung | debug levels | Selektive Teilsysteme debuggen | Fehlersuche durch Abfragen | debugfs | oops Fehlersuche | programmgesteuertes Durchsetzen einer oops | MagicSysRqKey | kgdb/kdb | JTAG (optional)
Tag 4

Kernel Profiling/Tracing

  • gcov|lcov|oprofile (veraltet und ersetzt durch Perf.) |ftrace
    • nop-Tracer | Funktion „Tracer“ | sched_switch Tracer (Anzeigeprogramm) | function_graph Tracer | dynamischer Tracer
  • Perf.| LTTng | Kernel Probes
    • Kprobes | JProbes | KretProbes (teilweise veraltet)

Interrupts

  • Interrupts statt Abfrage | Interrupt | Programmabschnitte | Reentrancy | Ereignisse | Interrupt-Handler | gemeinsamer Interrupt-Handler | Interrupt-Ablauf | Interrupt-Steuerung

Arbeit aufschieben

  • top/bottom halves | Softirqs | Tasklets | Workqueues | Threaded interrupts
Tag 5

Gleichzeitigkeit

  • kritischer Bereich/Abschnitt | atomar | Race Condition | Synchronisierung | Locking | Locking-Lösungen | Deadlock | Contention | Was muss gesperrt werden?
  • atomare Operationen | Spinlocks | Leser-Schreiber-Spinlocks | Semaphor | binärer Semaphor | Mutex | Leser-Schreiber-Semaphor | completion variables | sequential locks | disable Preemption | sequentielle Reihenfolge und Hardware/Software barriers

Zeit

  • HZ | Jiffies | große/kleine Verzögerungen | Kernel-Timer | hochauflösende Timer

Hardware-E/A

  • E/A-Ports | E/A-Speicher | Wie geht man mit den Nebenwirkungen des Zugriffs auf Register um?

Benutzer-Kernel-Kommunikation

  • put(get)_user() | copy_to(from)_user() | Kernel I/O | memory mapping | procfs | sysfs | debugfs | relayfs | netlink | ioctl

Tragbarkeit

  • Wortgröße | opaque data types | signed/unsigned char | Datenausrichtung (Auffüllen) | integral promotion | Code-Wiederverwendung | Endianität | Systemtick | Seitengröße | In welcher Reihenfolge werden Softwarebefehle ausgeführt? | Symmetrische Mehrfachverarbeitung (SMP) | Preemption | High Memory

Kursbroschüre (PDF)

Was die Kunden sagen

Reliable Embedded Systems
Überblick über den Datenschutz

Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.