LFD450 Embedded Linux Entwicklung

Classroom Schulung | Deutsch | Anspruch

Schulungsdauer: 4 Tage

Ziele

In diesem Kurs lernen Sie die Techniken, die für Entwicklung von embedded Linux Geräten notwendig sind.

Dabei lernen Sie u.a.:

  • Linux Kernel Architektur, mit Schwerpunkt auf den essentiellen Punkten für die Adaption des Kernels auf eine embedded Plattform.
  • Techniken für die Bestimmtung der korrekten Größe des Systems für die Projektanforderungen
  • Eine Vielzahl der zur Verfügung stehenden Ressourcen für die Erstellung einer Cross-Entwicklungsumgebung für Embedded-Systeme
  • Die verfügbaren Optionen für die Bibliotheken und Application User-Spaces hinsichtlich der Anforderungen der Embedded-Systme

Die vermittelten Schulungsinhalte gelten für alle großen Linux-Distributionen.

Zielgruppe

  • Erfahrene Entwickler
  • Programmierer und Ingenieure

Voraussetzungen

  • Vertrautheit mit Linux-Dienstprogrammen
  • Kenntnisse in der C-Programmierung
  • Erfahrung in der Linux- oder Unix-Entwicklung

Agenda

Einführung

  • Die Linux Foundation
  • Urheberrecht und keine vertraulichen Informationen
  • Schulungen der Linux Foundation
  • Zertifizierungsprogramme und digitale Auszeichnungen
  • Linux-Distributionen
  • Plattformen
  • Vorbereitung Ihres Systems
  • Änderungen in Linux
  • Dokumentation und Links

Vorbereitungen

  • Linux-Distributionen
  • Installation der virtuellen Maschine
  • Verfahren

Wie man in OSS-Projekten arbeitet

  • Überblick, wie man richtig beiträgt
  • Wissen, woher der Code kommt: DCO und CLA
  • Nah am Mainline bleiben für Sicherheit und Qualität
  • Herausfinden, welches Problem Sie lösen möchten
  • Betreuer und ihre Arbeitsabläufe und Methoden identifizieren
  • Frühzeitig Feedback einholen und offen arbeiten
  • Schrittweise Beiträge leisten, keine großen Code-Dumps
  • Geduldig sein, langfristige Beziehungen entwickeln, hilfreich sein

Eingebettete und Echtzeit-Systemkonzepte

  • Grundlegende Konzepte
  • Schutzmotivationen
  • off the Shelf (OTS)
  • Echtzeit-Betriebssysteme
  • Echtzeit-Linux
  • Unterstützung für benutzerdefinierte Hardware
  • Ressourcen

Cross-Entwicklungsumgebungen: Ziele und Bedürfnisse

  • Einführung
  • Warum ist es schwierig?
  • Projektzielüberlegungen

Kbuild-System

  • Einführung
  • Kbuild-Makefiles
  • Kconfig-Grundlagen
  • Kconfig durchsuchen

Cross-Entwicklungstoolchain

  • Der Compiler-Triplet
  • Eingebauter Cross-Compiler für Linux-Distributionen
  • Linaro
  • CodeSourcery
  • crosstool-ng
  • Buildroot
  • OpenEmbedded
  • Yocto-Projekt
  • Clang

QEMU

  • Was ist QEMU?
  • Warum QEMU verwenden?
  • Emulierte Architekturen
  • Image-Formate

Booten eines Zielentwicklungsboards von uSD

  • Warum verwenden wir uSD-Karten?
  • Software auf eine uSD-Karte bekommen
  • Von Flash booten
  • Warum die Verwendung von uSD-Karten eine schlechte Idee ist?

Booten eines Zielentwicklungsboards über Ethernet

  • Verwendung von virtueller Hardware
  • Ein einfacherer Weg zu entwickeln
  • Der Boot-Prozess mit TFTP und NFSroot

Bootloader und U-Boot

  • Bootcode-Stufen
  • Einige GPL-BIOSes
  • Einige GPL-Bootloader
  • Das U-Boot
  • U-Boot-Kommandozeile
  • U-Boot-Umgebung

Kernel-Konfiguration, -Kompilierung, -Booten

  • Konfiguration des Kernels für das Entwicklungsboard

Gerätetreiber

  • Gerätetypen
  • Geräte Nodes
  • Zeichentreiber

Device Trees

  • Was sind Device Trees?
  • Was Device Trees tun und was sie nicht tun
  • Device Tree-Syntax
  • Device Tree-Durchgang
  • Device Tree-Bindungen
  • Device Tree-Unterstützung in Bootloadern
  • Verwendung von Device Tree-Daten in Treibern
  • Koexistenz und Konvertierung alter Treiber

Ziel-Dateisystem-Packaging

  • Ziele des eingebetteten Dateisystems
  • Verzeichnisse: ein Überblick
  • Typen von eingebetteten Dateisystemen

Root-Dateisystem-Auswahl

  • SysV init vs. BusyBox init
  • udev vs. BusyBox mdev
  • Systemd
  • Auswahl der C-Library

Konfiguration von uClibc

  • Konfiguration von uClibc für NFS

Eine weitere alternative C-Bibliothek: musl

  • Was ist musl?
  • Konfiguration von BuildRoot für musl

BusyBox-Dienstprogrammsuite erstellen

  • Grundlegende Funktionsweise
  • Integration mit Buildroot

Kernel-Überwachung und -Debugging

  • Tracing und Profiling
  • Ftrace, Trace-Cmd, Kernelshark
  • Perf
  • Verwendung von perf
  • sysctl
  • SysRq-Taste
  • oops-Meldungen
  • Kernel-Debugger
  • debugfs

Richtige Größe

  • Oft benötigte eingebettete Komponenten
  • Bestandsaufnahme der Kernelgrößen

Speichertechnologie-Geräte (Flash-Speicher-Dateisysteme)

  • Was sind MTD-Geräte?
  • NAND vs. NOR vs. eMMC
  • Treiber- und Benutzer-Module
  • Flash-Dateisysteme

Komprimierte Dateisysteme

  • SquashFS
  • Einsatz in einer MTD-Partition
  • Labore

System-Upgrades

  • Wann müssen wir aktualisieren?
  • Update-Strategien
  • Vorgefertigte Upgrade-Systeme

Echtzeit-Erweiterungen

  • Vorhersagbarkeit und Präemption und Sperren
  • PREEMPT RT-Projekt
  • Echtzeit-Checkliste

Ziele

In diesem Kurs lernen Sie die Techniken, die für Entwicklung von embedded Linux Geräten notwendig sind.

Dabei lernen Sie u.a.:

  • Linux Kernel Architektur, mit Schwerpunkt auf den essentiellen Punkten für die Adaption des Kernels auf eine embedded Plattform.
  • Techniken für die Bestimmtung der korrekten Größe des Systems für die Projektanforderungen
  • Eine Vielzahl der zur Verfügung stehenden Ressourcen für die Erstellung einer Cross-Entwicklungsumgebung für Embedded-Systeme
  • Die verfügbaren Optionen für die Bibliotheken und Application User-Spaces hinsichtlich der Anforderungen der Embedded-Systme

Die vermittelten Schulungsinhalte gelten für alle großen Linux-Distributionen.

Zielgruppe

  • Erfahrene Entwickler
  • Programmierer und Ingenieure

Voraussetzungen

  • Vertrautheit mit Linux-Dienstprogrammen
  • Kenntnisse in der C-Programmierung
  • Erfahrung in der Linux- oder Unix-Entwicklung

Agenda

Einführung

  • Die Linux Foundation
  • Urheberrecht und keine vertraulichen Informationen
  • Schulungen der Linux Foundation
  • Zertifizierungsprogramme und digitale Auszeichnungen
  • Linux-Distributionen
  • Plattformen
  • Vorbereitung Ihres Systems
  • Änderungen in Linux
  • Dokumentation und Links

Vorbereitungen

  • Linux-Distributionen
  • Installation der virtuellen Maschine
  • Verfahren

Wie man in OSS-Projekten arbeitet

  • Überblick, wie man richtig beiträgt
  • Wissen, woher der Code kommt: DCO und CLA
  • Nah am Mainline bleiben für Sicherheit und Qualität
  • Herausfinden, welches Problem Sie lösen möchten
  • Betreuer und ihre Arbeitsabläufe und Methoden identifizieren
  • Frühzeitig Feedback einholen und offen arbeiten
  • Schrittweise Beiträge leisten, keine großen Code-Dumps
  • Geduldig sein, langfristige Beziehungen entwickeln, hilfreich sein

Eingebettete und Echtzeit-Systemkonzepte

  • Grundlegende Konzepte
  • Schutzmotivationen
  • off the Shelf (OTS)
  • Echtzeit-Betriebssysteme
  • Echtzeit-Linux
  • Unterstützung für benutzerdefinierte Hardware
  • Ressourcen

Cross-Entwicklungsumgebungen: Ziele und Bedürfnisse

  • Einführung
  • Warum ist es schwierig?
  • Projektzielüberlegungen

Kbuild-System

  • Einführung
  • Kbuild-Makefiles
  • Kconfig-Grundlagen
  • Kconfig durchsuchen

Cross-Entwicklungstoolchain

  • Der Compiler-Triplet
  • Eingebauter Cross-Compiler für Linux-Distributionen
  • Linaro
  • CodeSourcery
  • crosstool-ng
  • Buildroot
  • OpenEmbedded
  • Yocto-Projekt
  • Clang

QEMU

  • Was ist QEMU?
  • Warum QEMU verwenden?
  • Emulierte Architekturen
  • Image-Formate

Booten eines Zielentwicklungsboards von uSD

  • Warum verwenden wir uSD-Karten?
  • Software auf eine uSD-Karte bekommen
  • Von Flash booten
  • Warum die Verwendung von uSD-Karten eine schlechte Idee ist?

Booten eines Zielentwicklungsboards über Ethernet

  • Verwendung von virtueller Hardware
  • Ein einfacherer Weg zu entwickeln
  • Der Boot-Prozess mit TFTP und NFSroot

Bootloader und U-Boot

  • Bootcode-Stufen
  • Einige GPL-BIOSes
  • Einige GPL-Bootloader
  • Das U-Boot
  • U-Boot-Kommandozeile
  • U-Boot-Umgebung

Kernel-Konfiguration, -Kompilierung, -Booten

  • Konfiguration des Kernels für das Entwicklungsboard

Gerätetreiber

  • Gerätetypen
  • Geräte Nodes
  • Zeichentreiber

Device Trees

  • Was sind Device Trees?
  • Was Device Trees tun und was sie nicht tun
  • Device Tree-Syntax
  • Device Tree-Durchgang
  • Device Tree-Bindungen
  • Device Tree-Unterstützung in Bootloadern
  • Verwendung von Device Tree-Daten in Treibern
  • Koexistenz und Konvertierung alter Treiber

Ziel-Dateisystem-Packaging

  • Ziele des eingebetteten Dateisystems
  • Verzeichnisse: ein Überblick
  • Typen von eingebetteten Dateisystemen

Root-Dateisystem-Auswahl

  • SysV init vs. BusyBox init
  • udev vs. BusyBox mdev
  • Systemd
  • Auswahl der C-Library

Konfiguration von uClibc

  • Konfiguration von uClibc für NFS

Eine weitere alternative C-Bibliothek: musl

  • Was ist musl?
  • Konfiguration von BuildRoot für musl

BusyBox-Dienstprogrammsuite erstellen

  • Grundlegende Funktionsweise
  • Integration mit Buildroot

Kernel-Überwachung und -Debugging

  • Tracing und Profiling
  • Ftrace, Trace-Cmd, Kernelshark
  • Perf
  • Verwendung von perf
  • sysctl
  • SysRq-Taste
  • oops-Meldungen
  • Kernel-Debugger
  • debugfs

Richtige Größe

  • Oft benötigte eingebettete Komponenten
  • Bestandsaufnahme der Kernelgrößen

Speichertechnologie-Geräte (Flash-Speicher-Dateisysteme)

  • Was sind MTD-Geräte?
  • NAND vs. NOR vs. eMMC
  • Treiber- und Benutzer-Module
  • Flash-Dateisysteme

Komprimierte Dateisysteme

  • SquashFS
  • Einsatz in einer MTD-Partition
  • Labore

System-Upgrades

  • Wann müssen wir aktualisieren?
  • Update-Strategien
  • Vorgefertigte Upgrade-Systeme

Echtzeit-Erweiterungen

  • Vorhersagbarkeit und Präemption und Sperren
  • PREEMPT RT-Projekt
  • Echtzeit-Checkliste

Tags

Diese Seite weiterempfehlen