Kontakt aufnehmen

Schulungsübersicht

1. Einführung in den Linux-Kernel

  • Überblick über Embedded Linux
  • Architektur des Linux-Kernels
  • Unterschied zwischen User-Space und Kernel-Space
  • Aufgaben des Kernels
  • Arbeitsablauf bei der Kernel-Entwicklung
  • Übersicht über unterstützte Embedded-Plattformen

2. Einrichtung der Entwicklungsumgebung

  • Vorbereitung der Entwicklungsarbeitsstation
  • Konzepte des Cross-Compilings
  • Installation der erforderlichen Entwicklungstools
  • Einrichtung der BeagleBone Black Entwicklerplatine
  • Konfiguration der seriellen Konsole
  • Start des Zielgeräts

3. Beschaffung und Verständnis des Kernel-Quellcodes

  • Aufbau des Linux-Kernel-Quellbaums
  • Stable-Kernel vs. Langzeitunterstützungskernel
  • Herunterladen der Kernel-Quellen
  • Durchsuchen der Quellcode-Struktur
  • Kernel-Dokumentation
  • Verwaltung von Kernel-Versionen

4. Konfiguration, Kompilierung und Booten des Kernels

  • Konfiguration des Kernels mithilfe von menuconfig
  • Auswahl relevanter Kernel-Funktionen
  • Cross-Compilieren des Kernels
  • Erstellung der Kernel-Images
  • Installation der Kernel-Module
  • Einführung in Bootloader
  • Start eines benutzerdefinierten Kernels

5. Grundlagen des Device Trees

  • Zweck des Device Trees
  • Device Tree Source (DTS)-Dateien
  • Device Tree Blob (DTB)
  • Grundsätze der Hardwarebeschreibung
  • Bearbeiten von Device-Tree-Dateien
  • Erstellen und Bereitstellen von Device Trees

6. Linux-Kernel-Module

  • Architektur von Kernel-Modulen
  • Erstellung ladebarer Kernel-Module
  • Laden und Entladen von Modulen
  • Parameter von Modulen
  • Abhängigkeiten zwischen Modulen
  • Interaktion mit Kernel-Modulen
  • Debugging-Techniken für Module

7. Debugging des Linux-Kernels

  • Protokollierung mittels printk()
  • Einsatz von dmesg
  • Dynamisches Debugging
  • Analyse von Kernel-Panics
  • Auswertung von Oops-Meldungen
  • Debugging mit GDB
  • Einfache Werkzeuge zur Leistungsanalyse

8. Zeichen-Gerätetreiber

  • Modell der Linux-Gerätetreiber
  • Zeichenbasierte Geräte
  • Registrierung von Treibern
  • Dateioperationen
  • Lese- und Schreibvorgänge
  • IOCTL-Schnittstelle
  • Speicherverwaltung
  • Aufbereitung der Treiberumgebung nach Nutzung

9. Integration von Treibern und Hardware-Zugriff

  • Plattform-Geräte und -Treiber
  • Programmierung mit GPIOs
  • Verarbeitung von Interrupts
  • Einsatz von Timern und verzögerten Aufgaben
  • Zugriff auf Hardware-Register
  • Arbeiten mit memory-mapped I/O

10. Versionskontrolle mit Git

  • Grundlagen von Git
  • Verwaltung des Kernel-Quellcodes
  • Erstellen und Zusammenführen von Branches
  • Erstellung von Patches
  • Überprüfen vorgenommener Änderungen
  • Zusammenarbeit bei der Kernel-Entwicklung

11. Praktische Kernel-Entwicklungsübungen

  • Konfiguration eines benutzerdefinierten Kernels
  • Erstellung und Bereitstellung des Kernels
  • Programmierung eines einfachen Kernel-Moduls
  • Entwicklung eines grundlegenden Zeichen-Gerätetreibers
  • Bearbeiten von Device-Tree-Dateien
  • Debugging-Kernprobleme auf der BeagleBone Black Platine

12. Best Practices und Zusammenfassung

  • Coding-Stil beim Kernel-Entwickeln
  • Erstellung wartbarer Treiber
  • Häufige Fehlerquellen bei der Entwicklung
  • Ressourcen zur Kernel-Dokumentation
  • Prozess des Beitrags zu Open-Source-Projekten
  • Auffrischung der wichtigsten Konzepte
  • Fragen und Antworten
  • Nächste Schritte bei der Linux-Kernel-Entwicklung

Voraussetzungen

Grundsätzliche Kenntnisse im Umgang mit GNU/Linux-Systemen

 14 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (2)

Kommende Kurse

Verwandte Kategorien