Einführung in Embedded Linux und Yocto

Einführung in Embedded Linux und Yocto

title-1

Kursziele

Nach einer kurzen Einführung in Embedded Linux (2 Tage), möchten wir Ihnen das Wesentliche zur Nutzung des Yocto Projekts (3 Tage) vermitteln. Nach der Einführung werden wir sehen, wie ein BSP/Framework-Betreuer das Yocto-Projekt verwenden würde, sowie Entwickler, die vielleicht nicht einmal wissen wollen, dass sie es verwenden.

Beschreibung

Dieses fünftägige Training kombiniert Theorie mit praktischen Übungen, um Embedded Linux und das Yocto-Projekt vorzustellen.
Es beantwortet häufig gestellte Fragen wie:

  • Was ist GNU/Linux?
  • Warum Upstream verwenden?
  • Woher bekommt man U-Boot/den Kernel? Wie konfiguriert/baut/installiert man das?
  • Wie funktioniert Interprozesskommunikation und was sollte man verwenden/vermeiden?
  • Ist es wirklich notwendig, für jedes GNU/Linux Projekt eine andere Version der Toolchain/Bibliotheken/Pakete zu verwenden, und dann auch noch bei jedem Projekt einem anderen Workflow zu folgen?
  • Können Sie sicherstellen, dass die Entwicklungsumgebung für alle Entwickler/Lieferanten identisch ist und dass man in 10+ Jahren immer noch die gleichen Builds wie heute reproduzieren kann?
  • Kann das YP dabei helfen herausfinden, unter welchen Softwarelizenzen die von Ihnen verwendeten Pakete lizenziert sind oder bevorzugen Sie stattdessen Bekanntschaft mit einem Copyright-Troll zu machen?
  • ... und vieles mehr

Auf der Zielhardware (z.B. phyBOARD-Mira i.MX 6 Quad - Full Featured) werden praktische Übungen durchgeführt. Nach dem Training können die Studenten für den Yoto spezifischen Teil ein Docker-Image mit Ubuntu 16.x und allen vorinstallierten Abhängigkeiten sowie die Beispiele herunterladen, um mit dem Kursmaterial in ihren eigenen Labors zu arbeiten. Bitte beachten Sie, dass die ersten zwei Tage Einführung in Embedded Linux möglicherweise nicht ausreichen, um dem Yocto-Training zu folgen. Vielleicht möchten Sie hier einen Blick drauf werfen. In den ersten beiden Tagen schauen wir uns kurz an, wie Embedded GNU/Linux funktioniert und konfigurieren/bauen unter anderem den Linux-Kernel.

Wer sollte teilnehmen?

Sie verwenden bereits GNU/Linux für Ihre Projekte und haben wahrscheinlich schon von dem Yocto Projekt gehört, haben es aber nicht gewagt, es näher zu betrachten oder hatten Schwierigkeiten damit. Sie wissen nicht, ob und wie Ihr täglicher Workflow in dem YP untergebracht werden kann und finden das YP im Allgemeinen ziemlich kompliziert. Warum brauchen wir all das, obwohl (angeblich) alles bisher viel einfacher war? Nach dem Training sollten Sie entscheiden können, ob Sie das YP brauchen oder nicht. Der Workshop richtet sich an Software-, Entwicklungs-, Systemingenieure, Tester, Administratoren, Ingenieure und andere an dem YP Interessierte, die minimale Kenntnisse von (Embedded) GNU/Linux haben.

Voraussetzungen

Welche Vortragsmethoden dürfen wir Ihnen anbieten?

Das Trainingsmaterial ist auf Englisch, aber die Präsentation kann sowohl auf Englisch als auch auf Deutsch gemacht werden, ganz wie Sie es wünschen und zwar welt- bzw. europaweit.

  • vor Ort (öffentliche Schulung oder in-house bei Ihnen) - mit Trainer *)
  • Online - mit Trainer **)
  • On-site/Online-Kombination - mit Trainer *)**)

Während des Trainings bieten wir Laptops *), Boards *) **), Arbeitshefte und Nachschlagewerke (in Englisch - elektronisch oder gedruckt) *) **), Fernzugriff auf Server und Boards **), Screen-Sharing **), Audio-Bridge * *) an. Wenn Sie genaueres zum Thema "Trainings Vortragsmethoden" wissen möchten schauen Sie bitte hier nach und/oder fragen Sie hier.

Die Bücher und Beispiele nehmen die Schulungsteilnehmer normalerweise nach der Schulung mit nach Hause.

Zeitplan

  • 5 Tage in Folge 09:00 bis 17:00 mit Pausen (Ihre Zeitzone - festzulegen)

Dozent

Kursinhalt

Einführung

  • Einführung
  • Geschichte

Eval Board

  • Eval Board
  • GNU/Linux auf einem PC booten
  • GNU / Linux auf einem eingebetteten System booten
  • Bootsequenz
  • SD-Kartenpartitionen

Was man so braucht

  • U-Boot
  • U-Boot: Schickes Zeug
  • U-Boot: Runterladen/Konfigurieren/Bauen/Installieren
  • U-Boot: Befehle
  • Fdt
  • Kernel
  • Kernel: Runterladen/kbuild
  • Kbuild
  • Kernel: Konfigurieren/Bauen/Installieren
  • Kernel: fdt
  • Kernel: Module

Kernel Module

  • ...können sein
  • init/exit
  • Lizenzierung
  • tainted Modul/Kernel
  • EXPORT_SYMBOL()
  • out of tree .ko Makefile
  • Modul-Init-Werkzeuge
  • Modul im Kernel Tree
  • Bauen und Installieren
  • Laden
  • Parameterübergabe
  • Zugriff auf TCB

Character Treiber

  • Gerätedateien
    • Einführung
    • Gerätetypen
    • major/minor
    • Architektur
  • Treiber-Kernel-Schnittstelle
  • Gerätetreiber
    • Einführung
    • Anmeldung
    • Initialisierung
    • Öffnen/Schließen
  • Misc. Char Treiber

User Space Fehlersuche/-behebung

  • Fehlersuche/-behebung: Einfache Tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Fehlersuche/-behebung: Fortgeschrittene Tools
    • Was ist ein Debugger?
    • gdb auf der Zielhardware
    • gdb Remote-Debugging

Kernel Fehlersuche/-behebung

  • Debugging-Intro
  • KGDB/KDB
  • JTAG

Prozess/Interprozesskommunikation

  • IPC-Einführung
    • Unix/Linux-Architektur
    • Was ist Betriebssystem?
    • Was ist ein Scheduler?
    • Linux-Scheduler
    • Linux-Prioritäten
    • Linux-Scheduler(s)
    • Linux Scheduling Klassen
    • Prozesse/Tasks/Threads
    • errno
    • fork()
    • Prozessbeendigung
    • Prozesszustände
    • Zombies
    • Mehr über Prozesse
    • Sehen wir uns einen Prozess an
  • Einfache Interprozesskommunikation
    • Shell-Umleitung
    • Shelling out
    • temporäre Dateien
  • Interprozesskommunikation generisch
  • Interprozesskommunikation
    • Nachrichtenübergabe(message passing) im Vergleich zu gemeinsam genutzter Speicher(shared memory)
  • Fortgeschrittene Interprozesskommunikation
    • Pipes
    • Signale
    • Unterbrochene System Calls
    • POSIX.4 Nachrichtenwarteschlangen (Message Queues)
    • Semaphoren Einführung
    • Mutex
    • Semaphoren
    • gemeinsam genutzten Speicher(Shared Memory)
    • Sockets
    • select
      • self-pipe Trick
    • Andere Interprozesskommunikations-Mechanismen
  • Interprozesskommunikations-Techniken die man vermeiden sollte

Echtzeit

  • Voraussetzungen
    • Kernel im Vergleich zu User Space
    • Toolchain
    • Program Sections
    • Interrupts
    • Reentrant Code
  • Echtzeit Einführung
    • Time/Utility Funktionen
    • Was ist Echtzeit?
    • Determinismus
    • Was ist harte Echtzeit?
  • Echtzeit-Linux
  • "Grade/Stufen" des Echtzeitverhaltens
  • Dual Kernel
    • Xenomai
    • Messergebnisse
  • Echtzeit-Mythen

Einführung in Yocto

  • Was ist Yocto?
  • Warum das YP benutzen?
  • Was ist das YP?
  • Einige Werkzeuge unter dem YP Schirm
    • Poky
    • BitBake
    • OE-Core
    • Metadaten

Der Yocto Autobuilder

  • Einführung
    • Was ist der Yocto Autobuilder?
    • Docker container (pull, container starten)
  • Yocto Build-Umgebung ohne Docker/Yocto Autobuilder

Der YP Workflow

  • Einführung
  • Arbeitsablauf (Workflow)
    • OE-Architektur
  • Konfiguration
    • Benutzer Konfiguration
    • Eigenschaften (Features)
      • Maschinen Eigenschaften (Machine Features)
      • Distro Eigenschaften (Distro Features)
      • Kombinierte Eigenschaften (Combined Features)
      • Image Eigenschaften (Image Features)
    • Recipe Versionierung
      • Einführung
      • Bindestriche
      • Basierend auf Versions Kontrollsystemen (Source Code Management)
      • Fallstricke
      • Entwicklungs-/Stabile Versionen
      • Overrides
    • Metadaten (Recipes)
    • Maschinen (BSP) Konfiguration
    • Distributions Policy
  • Sourcen
  • Bauen
    • Sources fetchen: do_fetch, do_unpack
    • Patchen
    • Konfigurieren/Kompilieren/Installieren
    • Pseudo
    • recipetool
    • Beispiele für Recipes
      • Paket von einer einzelnen .c Datei
      • Paket basierend auf Autotools
      • App. in mehrere Pakete aufgeteilt
    • Analyse der Ausgabe/Pakete (Packaging)
    • Generierung von Images
    • Generierung von SDKs
  • Images anpassen
    • Einführung
    • local.conf
    • IMAGE_FEATURES
    • Benutzerdefinierte .bb-Dateien - von core-image vererbt
    • Benutzerdefinierte .bb-Dateien - basierend auf core-image-minimal
    • Benutzerdefinierte packagegroups

BitBake

  • Geschichte
  • Syntax
    • Variable Erweiterung (Variable Expansion)
    • Variable Zuweisung (Variable Assignment)
    • Vor-/Anhängen (Pre-/Append)
    • Entfernen (Override Stil Syntax)
    • Variable Flag-Syntax
    • Bedingte (Conditional) Syntax (Overrides)
  • Fehlersuche/-behebung
    • BitBake Fehlersuche/-behebung
    • Recipes finden
    • Images finden
    • Packagegroups finden
    • BitBake Umgebung
    • BitBake logs
    • Noch mal BitBaken
      • das Bauen eines spezifischen Tasks erzwingen
      • cleansstate
      • Stamp ungültig machen
    • Devshell
    • Abhängigkeiten
    • Pakete
    • Killall Bitbake
    • BitBake mit Ncurses-Wrapper
    • Werkzeuge/Tweaks
  • Aufräumen
    • Aufräumen um Speicherplatz zu gewinnen
    • Aufräumen damit neu gebaut werden muss

Layer

  • Einführung
  • bitbake-layers Werkzeug
  • yocto-layer Werkzeug

BSP

  • Intro
  • Systementwicklungs-Workflow
  • BSP Entwicklungsanleitung
    • bsp-tool

Kernel

  • Intro
  • Systementwicklungs-Workflow
  • Kernel-Entwicklungsanleitung
    • defconfig + Konfigurationsfragmente
    • in tree kmod
    • out of tree kmod
    • fdt

Anwendungs/Software Entwicklungskit

  • Software-Entwicklungskit
    • Einführung
    • Cross-Entwicklungs Toolchain
    • Sysroot
    • Der QEMU-Emulator
    • Eclipse Yocto Plug-in
    • Werkzeuge zur Leistungsverbesserung
  • Installieren von SDKs und Toolchains
  • Cross-Toolchains/SDKs
    • Einführung
    • Erstellen eines Cross-Toolchain-Installers
    • Verwenden des Standard-SDKs
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Erweiterbares (Extensible) SDK

Paketverwaltung

  • Softwareaktualisierungen
  • Mit Paketen arbeiten
    • IPK
    • Einen package feed erstellen
    • Installieren eines Pakets mit opkg auf dem Zielsystem

Lizenzierung

  • Einführung
  • Fügen Sie dem YP eine benutzerdefinierte Lizenz hinzu
  • Erfüllung der Open-Source-Lizenz Bestimmungen mit dem YP

Devtool

  • Einführung
  • Ein Recipe hinzufügen/bauen/installieren
  • Einen Layer erstellen/hinzufügen
  • Finish
  • Ein Recipe Ändern/Aktualisieren
  • Bauen/Ausführen
  • Ein Image bauen

Bitte füllen Sie dieses Formular aus, falls Sie weitere Fragen zu diesem oder einem anderen Training haben und zögern Sie nicht, uns zu kontaktieren.

Public Intely

Introduction to Embedded Linux and Yocto

public, 5-day training class
book until: 22 Dec 2018
title-1
21 Jan 2019
Munich/Germany, in German

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

Hinweis: Alternativ dazu gibt es auch noch eine viertägige Yocto Schulung Das Yocto Projekt - Ein Überblick.