Kontakt aufnehmen

Schulungsübersicht

1. Einführung in den Linux-Kernel

  • Überblick über Embedded Linux
  • Architektur des Linux-Kernels
  • User Space vs. Kernel Space
  • Aufgaben des Kernels
  • Workflow der Kernel-Entwicklung
  • Überblick über unterstützte Embedded-Plattformen

2. Einrichten der Entwicklungsumgebung

  • Vorbereitung des Entwicklungssystems
  • Konzepte der Cross-Kompilierung
  • Installation der erforderlichen Entwicklungstools
  • Einrichten der BeagleBone-Black-Entwicklungsplatine
  • Konfiguration der seriellen Konsole
  • Starten des Zielgeräts

3. Beschaffen und Verstehen des Kernel-Quellcodes

  • Linux-Kernel-Quellbaum
  • Stabile vs. Long-Term-Support-Kernel
  • Herkunft des Kernel-Quellcodes
  • Erforschung der Quellcode-Struktur
  • Kernel-Dokumentation
  • Verwaltung der Kernel-Versionen

4. Konfigurieren, Kompilieren und Starten des Kernels

  • Kernel-Konfiguration mit menuconfig
  • Wahl der Kernel-Funktionen
  • Cross-Kompilieren des Kernels
  • Erstellen von Kernel-Images
  • Installation von Kernel-Modulen
  • Überblick über den Bootloader
  • Starten eines benutzerdefinierten Kernels

5. Grundlagen des Device Trees

  • Zweck des Device Trees
  • Device Tree Source (DTS)-Dateien
  • Device Tree Blob (DTB)
  • Konzepte der Hardwarebeschreibung
  • Anpassen von Device Tree-Dateien
  • Erstellen und Bereitstellen von Device Trees

6. Linux-Kernel-Module

  • Architektur von Kernel-Modulen
  • Erstellen ladbarer Kernel-Module
  • Laden und Entladen von Modulen
  • Modulparameter
  • Modulabhängigkeiten
  • Interaktion mit Kernel-Modulen
  • Techniken zur Fehlersuche in Modulen

7. Fehlersuche im Linux-Kernel

  • Kernel-Logging mit printk()
  • Nutzung von dmesg
  • Dynamische Fehlersuche
  • Analysierung von Kernel Panics
  • Oops-Meldungen
  • Fehlersuche mit GDB
  • Grundlegende Tools zur Performance-Tracing

8. Zeichengerättreiber

  • Linux-Gerättreibermodell
  • Zeichengeräte
  • Registrierung von Treibern
  • Dateioperationen
  • Lese- und Schreiboperationen
  • IOCTL-Schnittstelle
  • Speicherverwaltung
  • Bereinigung des Treibers

9. Treiberintegration und Hardwarezugriff

  • Plattformgeräte und -treiber
  • GPIO-Programmierung
  • Verarbeitung von Unterbrechungen (Interrupts)
  • Timer und aufgeschobene Aufgaben (Deferred Work)
  • Zugriff auf Hardware-Register
  • Arbeit mit Memory-Mapped I/O

10. Versionskontrolle mit Git

  • Git-Grundlagen
  • Verwaltung des Kernel-Quellcodes
  • Branching und Merging
  • Erstellen von Patches
  • Prüfung von Änderungen
  • Kooperation bei der Kernel-Entwicklung

11. Praktische Laborübungen zur Kernel-Entwicklung

  • Konfiguration eines benutzerdefinierten Kernels
  • Erstellen und Bereitstellen des Kernels
  • Erstellen eines einfachen Kernel-Moduls
  • Entwicklung eines grundlegenden Zeichengerättreibers
  • Anpassen von Device Tree-Dateien
  • Fehlersuche bei Kernel-Problemen auf der BeagleBone Black

12. Best Practices und Zusammenfassung

  • Kernel-Codestyle
  • Schreiben von wartbaren Treibern
  • Häufige Fehlerquellen in der Entwicklung
  • Kernel-Dokumentationsressourcen
  • Workflow für Open-Source-Beiträge
  • Wiederholung der Kernkonzepte
  • Fragen und Antworten
  • Weitere Schritte für die Linux-Kernel-Entwicklung

Voraussetzungen

Grundlegende Vertrautheit mit der Nutzung eines GNU-Linux-Systems

 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (2)

Kommende Kurse

Verwandte Kategorien