Nach dem „Auffrischungskurs zu Embedded (2 Tage)“ folgt der Kurs „So funktioniert das Yocto Project® (3 Tage)“.
Ziele des Kurses
- Sie kennen bereits die Grundlagen von (Embedded-)Linux und möchten lediglich Ihr Wissen auffrischen.
- Nach einer kurzen (2-tägigen) „Einführung in Embedded “ zeigen wir Ihnen (3 Tage lang), wie das „Yocto Project®“ funktioniert.
- Nach dieser „Auffrischung“ werden wir sehen, wie BSP-/Framework-Betreuer das „Yocto Project®“ nutzen können.
- Wir werden auch sehen, wie Entwickler das SDK nutzen können, die nicht einmal wissen müssen, dass sie es nutzen.
Beschreibung
Dieser fünftägige Kurs demonstriert die Konzepte von "Embedded Linux" und dem "Yocto Project®" anhand praktischer Übungen in Kombination mit Theorie. Der Kurs ist so konzipiert, dass Sie schnell in die Materie einsteigen können.
Häufig gestellte Fragen wie diese werden beantwortet:
- Was ist Linux?
- Wo bekommt man U-Boot/den Kernel her? Konfiguration/Erstellung/Installation.
- Warum sollten Sie Upstream-Komponenten verwenden?
- Wie funktioniert die Interprozesskommunikation, und welche Mechanismen sollte man verwenden bzw. vermeiden?
- Ist es wirklich notwendig, für jedes Embedded-Linux-Projekt eine andere Version der Toolchain, der Bibliotheken oder der Pakete zu verwenden und darüber hinaus einen anderen Arbeitsablauf zu befolgen?
- Können Sie sicherstellen, dass die Entwicklungsumgebung für alle Entwickler/Zulieferer identisch ist und dass Sie auch in 10+ Jahren noch identische Builds wie heute erstellen können?
- Kann Ihnen das Yocto Project® bei der Überprüfung von Open-Source-Lizenzen helfen, oder ziehen Sie es vor, sich stattdessen an einen Copyright-Troll zu wenden?
- ... und vieles mehr
Die praktischen Übungen finden auf dem Host, in einem Docker-Container und auf der Zielhardware (z. B. i.mx8) statt. Nach dem Workshop können Sie einen auf Ubuntu basierenden Docker-Container mit allen vorinstallierten Abhängigkeiten sowie den Beispielen herunterladen, um das Kursmaterial selbstständig weiterzuverwenden. Bitte beachten Sie, dass es für die ersten beiden Tage Embedded „Refresher to Embedded ideal wäre, wenn Sie bereits über einige (Embedded-)Linux-Erfahrungen verfügen. Falls nicht, bringen wir Sie in zwei Tagen auf den neuesten Stand. Dies sollte es Ihnen ermöglichen, dem zweiten Teil des Kurses zu folgen, der sich mit dem „Yocto-Training“ befasst.
Falls Sie einen Embedded Linux-Einsteigerkurs suchen, empfehlen wir Ihnen "Embedded Linux - Von Systems Architektur bis Echtzeit (5 Tage)" oder "Einführung in Embedded Linux in Theorie und Praxis - ein Crashkurs (3 Tage)".
Voraussetzungen
- Grundlegende Vertrautheit mit der Verwendung eines Linux-Systems (z. B. Ubuntu) als Endbenutzer im Benutzerbereich
- Grundlegende Vertrautheit mit einer Befehlszeilen-Shell
- Grundkenntnisse in der Programmierung von Benutzer- und Kernelbereich unter Linux
- Fortgeschrittene C-Programmierkenntnisse
- Idealerweise verfügen Sie über grundlegende Kenntnisse im Bereich Embedded (Kernel, Userspace, Root-Dateisystem, Tools), um an dieser Schulung teilnehmen zu können.
- Es ist von Vorteil, wenn Sie bereits mit den KursenEmbedded – Von Systems bis zur Echtzeit (5 Tage)“ oder„Einführung in Embedded in Theorie und Praxis – ein Crashkurs (3 Tage)“ vertraut sind; sollten Sie dies jedoch nicht sein, bringen wir Sie in den ersten beiden Tagen auf den neuesten Stand.
- Es könnte hilfreich sein, wenn Sie den KursEmbedded Kernel Internals and Device Drivers (5 Tage)“ besucht haben, dies ist jedoch keine Voraussetzung. Es reicht aus, wenn Sie wissen, wie man den Linux-Kernel kompiliert, mit In-Tree- und Out-of-Tree-Kernel-Treibern umgeht und mit dem Flattened Device Tree (FDT) vertraut sind, um den Kapiteln zu Board Support Packages (BSP) und zum Kernel in diesem Workshop folgen zu können. Wir werden uns dies ebenfalls in den ersten beiden Tagen ansehen.
Kurs-Fahrplan

Wer sollte teilnehmen?
Sie erwägen, Linux für Ihr Embedded-Projekt einzusetzen, oder nutzen es bereits für Ihre Projekte. Wahrscheinlich haben Sie schon vom Yocto Project® gehört, sich aber nicht getraut, sich näher damit zu befassen, oder hatten Schwierigkeiten bei der Anwendung. Außerdem möchten Sie Ihre Kenntnisse über die Interprozesskommunikation unter Linux und Echtzeitanwendungen auffrischen. Sie wissen nicht, ob und wie sich Ihr täglicher Arbeitsablauf in das Yocto Project® integrieren lässt, und empfinden das Yocto Project generell als ziemlich kompliziert. Warum brauchen wir das alles, wo doch bisher alles (angeblich) viel einfacher war? Nach der Schulung sollten Sie entscheiden können, ob Sie das Yocto Project® benötigen oder nicht. Der Workshop richtet sich an Softwareentwickler und Systemingenieure, Tester, Administratoren, Ingenieure und andere am Yocto Project® Interessierte mit Grundkenntnissen in Embedded , die ihr Wissen auffrischen möchten.
Gliederung des Kurses
Tag 1
Einführung
- Einführung | Geschichte
Beurteilungsausschuss
- Wie bootet Linux auf einem PC und auf dem Evaluation Board? | Boot-Sequenz | SD-Karten-Partitionen | Booten sehen
Benötigtes Material
git|u-boot- Skripting | Fancy Stuff | Checkout | Config | Build | Install
- Kernel
checkout| Konfig-kconfig| bauen-kbuild| Kernel-Module | installieren
- Flacher Gerätebaum (fdt)
- Untersuchen | Bauen | Installieren
Kernel-Module
init/exit| Lizenzvergabe |taintedModul/Kernel |EXPORT_SYMBOL| aus dem Baum.komakefile- module-init-tools
- Füge das Modul in den Kernel-Baum ein
- Parameterübergabe
Character Driver
- Gerätedateien | Gerätetypen | Geräteknoten
major/minor| Kernel-Treiber-Schnittstelle - Gerätetreiber: Einführung | Registrierung | Initialisierung | Öffnen/Freigeben
Miscellaneous Character Drivers
- Einfache Werkzeuge
lsof|ltrace|strace|procfs|top|netstat|syslog| ...
- Erweiterte Tools
- Was ist ein Debugger?
gdb:gdbauf dem Zielsystem |gdbfürremote debugging
Kernel-Debugging (optional)
- Einführung in die Fehlersuche |
kgdb/gdb+agent-proxy| JTAG
Tag 2
Prozess- und prozessübergreifende Kommunikation
- Linux-Architektur | Betriebssystem |
schedulerSchwerpunkte |schedulingKlassen | Prozess,task,thread|errno|fork| Prozessbeendigung | Prozesszustände | Zombies | Prozesse beobachten | einfache IPC- Shell-Umleitung | shelling out | tmpfiles
- erweiterte IPC
pipes| Signale | unterbrochene Systemaufrufe |message queues| Semaphoren | Mutex |shared memory|sockets|select|poll
- Weitere IPC-Methoden | IPC-Techniken, die vermieden werden sollten
Real-Time
- Voraussetzungen
interrupts| ablaufinvarianter Code
- Echtzeit-Intro
- Was ist Real-Time? | Was ist harte Echtzeit?
- Echtzeit-Linux
- Hypervisor | Dualer Kernel | Vollständig präemptiver Kernel
- Abgestuftes Echtzeitverhalten
- explizite/implizite Präemptionspunkte | Echtzeit-Präemptionspatch | vollständig präemptiver Kernel | harte Echtzeit-Erweiterungen
- Dualer Kernel: Adeos/Xenomai
- Adeos-Patch | Xenomai | patch/config/build kernel | test it on the target system
- Echtzeit-Mythen
Tag 3
Yocto Einführung
- Was ist Yocto? | Was ist das Yocto Project®? (Funktionen/Herausforderungen) | Einige Tools, die vom Yocto Project® gehostet/verwendet werden (Poky | BitBake | OpenEmbedded-Core | Metadata) | Warum sollten Sie das Yocto Project® verwenden?
Wie wird man Teil unserer Yocto Project® Gemeinschaft? (optional)
- Erste Schritte | Kontaktaufnahme | Mitmachen | Mitwirken | Soziale Medien | Veranstaltungen
Entwicklungsumgebung
- Was wird für einen Yocto Project® Build benötigt? | Layer-Versionen/Abhängigkeiten | Host-Abhängigkeiten | Konfigurationsdateien | Host/Kernel-Abhängigkeiten
Der Yocto Project® Arbeitsablauf
- Intro
- Arbeitsablauf | OpenEmbedded Architektur
- Konfiguration (Benutzer) | Metadaten (Rezepte) | Maschine (BSP) |
Distribution (Policy) - Eigenschaften | Versionierung von Rezepten |
Layers - Quellen
- Abrufen von Quellen | Patching | Konfigurieren/Kompilieren/Staging |
SSTATE| Pseudo |recipetool| Beispiele von Rezepten |PACKAGECONFIG| Pakete und ihr Inhalt | Output-Analyse/Verpackung | Wie erzeugt manImages| SDK-Erstellung |Tasks - Anpassung von
Images(Intro |local.conf|IMAGE_FEATURES| benutzerdefinierteimageRezepte (.bbDateien) | benutzerdefiniertepackagegroups)
Tag 4
BitBake
- Geschichte
- Syntax (Variablenerweiterung) | Variable Zuweisung |
Prepend/Append|Remove|Variable Flags| Bedingte Syntax:OVERRIDES) - BitBake Fehlersuche (debug
level| Rezepte finden/images/Paketgruppen | BitBake-Umgebung/tasks/logging|force build/Erzwingen Sie den Bau eines bestimmtentask|cleansstate| Ungültig machen derstamp|devshell| Abhängigkeiten | Pakete | alle BitBake-Instanzen beenden | BitBake grafischer Wrapper) Cleaning(Speicherplatz gewinnen |rebuild)
Layers
- Intro | bitbake-layers-Tool |
dynamic layers
Board Support Package (BSP)
- Einführung | Arbeitsablauf der Systementwicklung | Erstellung von BSPs | Kernel-Patches außerhalb des Mainline-Zweigs
Kernel
- Intro | Arbeitsablauf der Systementwicklung |
Kernel Development Manual(defconfig|defconfig+ Konfigurationsfragment |in treekmod |out of treekmod | fdt klassisch | fdt mitdevicetree.bbclass| ...)
Tag 5
Software-Entwicklungskit
- Intro |
cross-developmentToolchain| Sysroot |BBCLASSEXTEND| Multilib | Der QEMU-Emulator | SDK-Eclipse Yocto Plug-in (veraltet) | Userspace-Tools | Installation von SDKs und Toolchains - Cross-Toolchains/Software-Entwicklungskits
- Erstellung eines Cross-Toolchain-Installationsprogramms
- Verwendung des Standard Software Development Kit (Cross-Toolchain + Makefile/Autotools/Autotools lib + App | recipes)
- Aufbau/Verwendung des Extensible Software Development Kit
Paket-Management
- SW-Aktualisierung vs. Paketverwaltung | Arbeiten mit Paketen |
ipk| Erstellen eines Paket-Feeds | die Installation eines Pakets mitopkgauf dem Zielsystem
Lizenzvergabe
- Einführung | Benutzerdefinierte Lizenz hinzufügen | Kommerzielle Lizenz hinzufügen | Firmware-Lizenz | Einhaltung der Open-Source-Lizenz
Devtool
- Intro | Rezept hinzufügen/erstellen/bereitstellen | Ebene erstellen/hinzufügen |
Finish|Modify/Update-Rezept | Bauen/Ausführen | Bauen:Image
Kursbroschüre (pdf)
- "Auffrischung zu Embedded Linux & Einführung in das Yocto Projekt (5 Tage)"
Verwandte Kurse
- "Embedded Linux - Von der Systemarchitektur bis zur Echtzeit (5 Tage)"
- "Auffrischung zu Embedded Linux & Einführung in das Yocto Projekt (5 Tage)"
- "Embedded Linux Kernel Interna und Gerätetreiber (5 Tage)"
- "Das Yocto-Projekt - Ein gründlicher Überblick (4 Tage)"
- "Einführung in Embedded Linux & Real-Time, Vogelperspektive des Yocto-Projekts (4 Tage)"
- "Einführung in Embedded Linux in Theorie und Praxis - ein Crashkurs (3 Tage)"
- "(Embedded) Linux-Fehlerbehebung (3 Tage)"
- "FreeRTOS in Theorie und Praxis (3 Tage)"