Auffrischung von Embedded Linux & Einführung in das Yocto Projekt

Auffrischung von Embedded Linux & Einführung in das Yocto Projekt

5-Tage-Kurs

Der Kursinhalt kann auf Ihre Bedürfnisse und Ziele zugeschnitten werden. Wenn es die Zeit erlaubt, kann auch eine Beratung während des Kurses stattfinden. Bitte klicken Sie auf die öffentliche Registerkarte, um die öffentlichen Sitzungen zu sehen.

Privat online
Vor Ort in Ihrem Unternehmen
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Viertel wählen Quartal Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis
1. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Apr 01, 2024
2. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) 01. Juli 2024
3. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) 01. Oktober 2024
4. Quartal 2024 privat remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 (noch zu definieren) Jan 01, 2025

Inhalt wie unten beschrieben. Ab drei Teilnehmern aus demselben Unternehmen besuchen Sie bitte unsere privaten Sitzungen.

Öffentlich online
Öffentlicher Workshop im Klassenzimmer
Wir werden Ihre E-Mail niemals an Dritte weitergeben.
Datum auswählen Datum Status Zugang Lieferung Standort Sprache Zeitzone Buchen bis
27. Mai 2024 öffentlich Klassenzimmer München Deutsch UTC+2 Mai 03, 2024
24. Juni 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 31. Mai 2024
19. August 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 26. Juni 2024
09. September 2024 öffentlich Klassenzimmer München Deutsch UTC+2 16. August 2024
21. Oktober 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 27. September 2024
18. November 2024 öffentlich Klassenzimmer München Deutsch UTC+2 25. Oktober 2024
16. Dezember 2024 öffentlich remote virtuell Deutsch/Englisch (noch zu definieren) UTC+2 22. November 2024

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.

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ür remote 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 Images | SDK-Erstellung | Tasks
  • Anpassung von Images (Intro | local.conf | IMAGE_FEATURES | benutzerdefinierte image 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 bestimmten task | cleansstate | Ungültig machen der stamp | 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 mit devicetree.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 einer package feed | die Installation eines Pakets mit opkg 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ügen layer | Finish | Ändern/Aktualisieren-Rezept | Bauen/Ausführen | Bauen: Image

Kursbroschüre (pdf)

Was die Kunden sagen