Embedded-Linux-Schulung: Embedded-Echtzeit-Linux vom Bootloader bis zum Realtime-System (Linux-RTOS) - Präsenz-Training
Sie haben die Aufgabe, ein Embedded-Linux-Target aufzubauen?
Wie fange ich damit an? Was benötige ich dazu?
Wie komme ich zu einem echtzeitfähigen System?
Der Aufbau und die Funktionsweise eines Embedded-Linux-Systems mit harten Echtzeiteigenschaften stehen im Mittelpunkt.
Wir beginnen mit dem Aufbau und der Funktionsweise des Buildsystems Yocto. Es wird ein eigener Layer mit eigener Machine, Image und Distro erstellt. Damit ist die Grundlage für ein eigenes Board-Support-Package (BSP) gelegt.
Anschließend wird auf die Komponenten eines Embedded-Linux detailliert eingegangen - angefangen vom ROM-Loader über den Bootloader, den Linux-Kernel mit Device Tree bis hin zum Root-Filesystem.
Wie im Projektalltag werden Konfigurationen angepasst, Patches erstellt und Erweiterungen durchgeführt. All dies passiert immer in dem anfangs erstellten eigenen Yocto-Layer, so dass am Ende das fertig angepasste System im Yocto-Layer zur weiteren Verwendung vorliegt.
Basierend auf dem erstellten System werden Anforderungen, wie beispielsweise Bootzeitoptimierung und Over-The-Air-Update, diskutiert und Lösungen aufgezeigt.
Die verwendeten Tools sind für eine breite Auswahl an Architekturen verfügbar.
Im Seminar wird nur frei zugängliche Open-Source-Software eingesetzt.
Software-Entwickler und Hardware-Entwickler
Sichere Programmierkenntnisse in ANSI-C sowie Linux-Grundlagenkenntnisse sind von Vorteil.
Entwicklungsumgebung
- Cross-Development Toolchain
- Erstellung von Toolchain, Bootloader, Kernel und Root-Filesystem
- Buildsysteme im Vergleich: Aocto, buildroot, Debian-basierend
yocto als Buildsystem
- Aufbau und Setup von Yocto
- bitbake als Erstellprogramm
- Rezepte, Klassen und Konfigurationen
- Erstellung eigener Layer
- BSP mit Machine generieren
- Zielsystem mit Image und Softwareauswahl mit Distro
- Analyse des Erstellvorganges, Log- und Run-Dateien
- Diagnose von Buildproblemen
- wic - Open Embedded Image Creator
Bootloader
- Linux-Bootprozess vom ROM-Loader bis zum Login-Prompt
- U-Boot und barebox als Bootloader
- Konfiguration des Bootloaders
- Erstellung von Patches und deren Integration in Yocto
Device Tree
- Hardwarebeschreibung im Device Tree
- Syntax und Verwendung
- GPIO-Controller
- Pin-Multiplexing
- I2C- und SPI-Bus
- Erweiterung um eigene Geräte
Linux-Kernel
- Kernel-Konfiguration
- Anpassungen für spezifisches Board und Projekt
- Verwendung von Kernel-Treibern
- Erstellung von Patches
- Integration von Anpassungen in Yocto
- Harte Echtzeit mit Linux (PREEMPT_RT)
- Threaded Interrupts und Scheduling
Root-Filesystem
- Init-Dämonen: systemd, System-V, busybox-Init
- C-Libraries: glibc, uClibc
- Erstellung und Integration eigener C-Programme
- Einrichtung von Dämonen für das Target und der speziellen Yocto-Rezepte
Systementwurf
- Minimalsysteme mit busybox
- RAM-Disk, initial RAM-Filesystem und initrd
- NAND und NOR mit MTD-Treibern
- Flash-Dateisysteme (UBIFS, JFFS2)
- Managed (FTL) Flash mit ext4
- Read-Only mit squashfs und Schreiben in overlayfs
- Reproduzierbarer Erstellvorgang
- Messung und Optimierung der Bootzeiten
- System-Update Over-The-Air (OTA), Konfiguration in Yocto
Übungen
- Alle Übungsaufgaben werden auf einem ARM Cortex-A8 (AM-335x) unter Verwendung frei zugänglicher Open-Source-Tools durchgeführt.
- Zu allen Themenfeldern gibt es praktische Übungen, so dass das Gelernte gleich ausprobiert und vertieft werden kann.
- Am Ende des Seminars haben die Teilnehmenden ein komplettes Embedded-Echtzeit-Linux mit Yocto erstellt und dieses individuell angepasst.