Nach einer "Auffrischung zu Embedded Linux (2 Tage)" sehen Sie "Wie das Yocto Project® funktioniert (3 Tage)"
Ziele des Kurses
- Sie kennen bereits die Grundlagen von (Embedded) Linux und wollen Ihr Wissen nur auffrischen.
- Nach einer kurzen (2 Tage) "Einführung in Embedded Linux", zeigen wir Ihnen (3 Tage), wie das "Yocto Project®" funktioniert.
- Nach der "Auffrischung" werden wir sehen, wie BSP / Framework-Maintainer 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?
- Woher bekomme ich u-boot/den Kernel? Konfiguration / Build / Installation
- Warum sollten Sie Upstream-Komponenten verwenden?
- Wie funktioniert die Kommunikation zwischen den Prozessen und welche Mechanismen sollte man verwenden/vermeiden?
- Ist es wirklich notwendig, für jedes Embedded Linux-Projekt eine andere Version der Toolchain/Bibliotheken/Pakete zu verwenden und obendrein 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 das Yocto Project® Ihnen bei der Prüfung von Open Source Lizenzen helfen oder bevorzugen Sie stattdessen einen Copyright Troll?
- ... und vieles mehr
Praktische Übungen werden auf dem Host, in einem Docker-Container und auf der Zielhardware (z.B. i.mx6) durchgeführt. Nach dem Workshop können Sie einen Docker-Container auf Basis von Ubuntu mit allen vorinstallierten Abhängigkeiten und den Beispielen herunterladen, um selbst mit dem Kursmaterial zu arbeiten. Bitte beachten Sie, dass es für die ersten beiden Tage "Refresher to Embedded Linux" ideal wäre, wenn Sie bereits über einige (Embedded) Linux-Erfahrung verfügen. Falls nicht, werden wir Sie in zwei Tagen auf den neuesten Stand bringen. Dies sollte Sie in die Lage versetzen, dem zweiten Teil des Kurses zu folgen, der sich mit dem "Yocto Training" beschäftigt.
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 haben Sie grundlegende Erfahrung mit Embedded Linux (Kernel, Userspace, Root-Dateisystem, Tools), um an diesem Training teilzunehmen.
- Es ist hilfreich, mit "Embedded Linux - From Systems Architecture to Real-Time (5 Tage)" oder "Introduction to Embedded Linux in Theory and Practice - a Crash Course (3 Tage)" vertraut zu sein, aber auch wenn Sie das nicht sind, werden wir versuchen, Sie in den ersten beiden Tagen auf den neuesten Stand zu bringen.
- Es könnte hilfreich sein, wenn Sie "Embedded Linux Kernel Internals and Device Drivers (5 days)" besucht haben, aber das ist keine Voraussetzung. Es reicht aus, wenn Sie wissen, wie man den Linux-Kernel, In/Out-of-Tree-Kernel-Treiber und den Flattened Device Tree (fdt) erstellt, um den Kapiteln über das Board Support Package (BSP) und den Kernel in diesem Workshop zu folgen. Auch darauf werden wir in den ersten beiden Tagen einen Blick werfen.
Kurs-Fahrplan
Wer sollte teilnehmen?
Sie denken über den Einsatz von Linux für Ihr Embedded Projekt nach oder verwenden es bereits für Ihre Projekte. Wahrscheinlich haben Sie schon vom Yocto Project® gehört, haben sich aber nicht getraut, sich näher damit zu befassen, oder hatten Schwierigkeiten, es zu benutzen. Außerdem wollen Sie eine Auffrischung in Sachen Linux-Interprozesskommunikation und Echtzeit. Sie wissen nicht, ob und wie sich Ihr täglicher Arbeitsablauf im Yocto Project® unterbringen lässt und finden das Yocto Project® generell eher kompliziert. Wozu brauchen wir das alles, wo doch bisher alles (vermeintlich) viel einfacher war? Nach der Schulung sollten Sie in der Lage sein zu entscheiden, ob Sie Yocto Project® brauchen oder nicht. Der Workshop richtet sich an Software-, Entwicklungs-, Systemingenieure, Tester, Administratoren, Ingenieure und andere am Yocto Project® Interessierte mit Grundkenntnissen in Embedded Linux, die ihr Wissen auffrischen wollen.
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 |tainted
Modul/Kernel| EXPORT_SYMBOL |
out of tree
.ko
makefile- module-init-tools
- das Modul in den Kernelbaum aufnehmen
- 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
:gdb
auf dem Zielsystem| gdb
fü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 |
scheduler
- Prioritäten -scheduling
Klassen | 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
- andere 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 man
| SDK-Erstellung |Images
Tasks
- Anpassung von
Images
(Intro| local.conf | IMAGE_FEATURES |
benutzerdefinierteimage
Rezepte (.bb Dateien) | benutzerdefinierte Paketgruppen)
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
Werkzeug |dynamic layers
Board Support Package (BSP)
- Intro | Arbeitsablauf der Systementwicklung |
BSP Developer’s Guide
(bsp-tool
- portiert auf neuere Poky-Versionen) | BSP-Erstellung | Nicht-Mainline-Kernel-Patches
Kernel
- Intro | Arbeitsablauf der Systementwicklung |
Kernel Development Manual
(defconfig | defconfig
+ Konfigurationsfragment |in tree
kmod |out of tree
kmod | fdt klassisch | fdt mitdevicetree.bbclass |
...)
Tag 5
Software-Entwicklungskit
- Intro |
cross-development
Toolchain
| 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 |
Erstellung einerpackage feed
|
die Installation eines Pakets mitopkg
auf dem Zielsystem
Lizenzvergabe
- Intro
|
Benutzerdefinierte Lizenz hinzufügen|
Gewerbliche Lizenz hinzufügen|
Firmware-Lizenz|
Einhaltung der Open-Source-Lizenz
Devtool
- Intro
|
Rezept hinzufügen/Build/Deploy|
Erstellen/Hinzufügenlayer
|
Finish
|
Ändern/Aktualisieren-Rezept|
Bauen/Ausführen
Bauen:|
Image
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)"