Kontakt aufnehmen

Schulungsübersicht

1. Einführung in den Linux-Kernel

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

2. Einrichten der Entwicklungsumgebung

  • Vorbereitung des Entwicklungsarbeitsplatzes
  • Konzepte der Cross-Kompilierung
  • Installation erforderlicher Entwicklungstools
  • Einrichtung des BeagleBone Black-Entwicklungsbrettboards
  • Konfiguration der seriellen Konsole
  • Starten des Zielgeräts

3. Beschaffen und Verstehen des Kernel-Quellcodes

  • Kernel-Quellbaum
  • Stable vs. LTS-Kernel (Long Term Support)
  • Herunterladen der Kernel-Quellen
  • Erkundung der Quellcode-Struktur
  • Kernel-Dokumentation
  • Verwalten von Kernel-Versionen

4. Konfigurieren, Kompilieren und Starten des Kernels

  • Kernel-Konfiguration mit menuconfig
  • Auswahl von Kernel-Features
  • Cross-Kompilierung des Kernels
  • Erstellen von Kernel-Images
  • Installieren von Kernel-Modulen
  • Bootloader-Übersicht
  • Starten eines eigenen 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
  • Bauen und Bereitstellen von Device Trees

6. Linux-Kernel-Module

  • Modularchitektur des Kernels
  • Bauen ladbarer Kernel-Module
  • Laden und Entladen von Modulen
  • Modulparameter
  • Modulabhängigkeiten
  • Kommunikation mit Kernel-Modulen
  • Debugging-Techniken für Module

7. Debugging des Linux-Kernels

  • Kernel-Logging mit printk()
  • Nutzung von dmesg
  • Dynamisches Debugging
  • Analyse von Kernel-Panics
  • Oops-Meldungen
  • Debugging mit GDB
  • Einfache Leistungsmetriken-Tools

8. Character-Gerätetreiber

  • Linux-Gerätetreibermodell
  • Character Devices (Zeichengeräte)
  • Registrierung von Treibern
  • Dateioperationen
  • Lese- und Schreiboperationen
  • IOCTL-Schnittstelle
  • Speicherwaltung
  • Treiberbereinigung

9. Treiberintegration und Hardwarezugriff

  • Platform Devices und Platform Drivers
  • GPIO-Programmierung
  • Interrupt-Behandlung
  • Timer und Deferred Work
  • Zugriff auf Hardware-Register
  • Umgang mit Memory-Mapped I/O

10. Versionskontrolle mit Git

  • Git-Grundlagen
  • Verwalten von Kernel-Quellcode
  • Berzweigen und Zusammenführen (Branching and Merging)
  • Erstellen von Patches
  • Überprüfen von Änderungen
  • Zusammenarbeit in der Kernel-Entwicklung

11. Praktische Kernel-Entwicklungsübungen

  • Konfigurieren eines eigenen Kernels
  • Bauen und Bereitstellen des Kernels
  • Erstellen eines einfachen Kernel-Moduls
  • Entwickeln eines grundlegenden Character-Gerätetreibers
  • Anpassen von Device Tree-Dateien
  • Debuggen von Kernel-Problemen am BeagleBone Black

12. Best Practices und Zusammenfassung

  • Kernel-Coding-Stil
  • Schreiben wartbarer Treiber
  • Häufige Fallstricke in der Entwicklung
  • Ressourcen zur Kernel-Dokumentation
  • Workflow für Open-Source-Beiträge
  • Aktualisierung der Schlüsselkonzepte
  • Fragen und Antworten
  • Weitere Schritte in der Linux-Kernel-Entwicklung

Voraussetzungen

Grundlegende Kenntnisse im Umgang mit einem GNU/Linux-System

 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (2)

Kommende Kurse

Verwandte Kategorien