Yocto

Das Yocto Project - Ein Überblick

Ziel dieses Kurses ist es, die erforderlichen Grundlagen zu vermitteln das Yocto Projekt zu verwenden. Allerdings wird vorausgesetzt, dass Sie schon einiges an Wissen zum Thema Embedded GNU/Linux, dem Linux Kernel und Freunden mitbringen. Wir werden uns ansehen wie sowohl ein BSP oder Framework Betreuer das Yocto Projekt verwenden würde als auch ein Entwickler, der vielleicht gar nichts von dem YP zu wissen braucht bzw. auch nichts davon wissen will.

Voraussetzungen

  • Grundkenntnisse wie man ein GNU/Linux System (z.B. Ubuntu) im User Space verwendet
  • Grundkenntnisse mit dem Umgang der Command Line Shell
  • Grundkenntnisse von User/Kernel Space Programmierung unter GNU/Linux
  • Mittelmäßige C-Programmierkenntnisse
  • Sie sollten unsere Schulung Embedded Linux oder ähnliches besucht haben bzw. den Inhalt gut kennen. (dringend empfohlen!)
  • Es könnte für einige Kapitel auch hilfreich sein wenn Sie unsere Schulung Linux Kernel Treiber oder ähnliches besucht haben bzw. den Inhalt kennen.

Inhalt

Einführung

  • Geschichte von Unix/Linux, Lizenzen, Standards
  • Mit freier Software arbeiten
  • Die Unix Philosophie

Besonderheiten

Linux auf dem Desktop im Vergleich zu Linux auf einem Eingebetteten System, Cross-/Native Toolchains, schon vorgebaut, Build-Systeme, C-Bibliotheken, …

Eval Board

Wie booted es? Sehen Sie es booten

Yocto Einführung

Was ist das YP? Warum sollte man das YP verwenden?, Poky, BitBake, OE-Core, Metadata

Der Yocto Autobuilder

Was ist der YP Autobuilder?, Docker container (pull, start container)

Der YP Workflow

  • Einleitung
  • Konfiguration (Benutzer, Metadaten, Maschine, Distribution Policy)
  • Quellen
  • Bauen (Quellen fetchen, Patchen, Konfigurieren/Kompilieren/Installieren, Pseudo, Beispiele für Rezepte, Output-Analyse/Packaging, Erzeugen von Images, Erzeugen von SDKs)
  • Anpassen von Images (Intro, local.conf, IMAGE_FEATURES, kundenspezifische .bb files, kundenspezifische packagegroups)

BitBake

  • Geschichte
  • Syntax
  • Debugging (Debug Level, Rezepte/Images/Packagegroups finden, BitBake Umgebung/Tasks/Logging, build/spezifischen Task erzwingen, cleansstate, stamp für ungültig erklären, devshell, Abhängigkeits-Explorer, alle BitBake Instanzen töten, grafische Wrapper für BitBake )

Layers

Intro, bitbake-layers tool, yocto-layer tool

BSP

Intro, Systementwicklung Workflow, BSP-Entwicklerhandbuch (bsp-tool)

Kernel

Intro, Systementwicklung Workflow, Kernel-Entwicklerhandbuch (defconfig, defconfig + Konfigurationsfragment, in tree kmod, out of tree kmod, fdt,…)

Application Development Toolkit

  • Intro, Cross-Development Toolchain, Sysroot, ADT- Eclipse Yocto Plug-in, Der QEMU Emulator, User Space Wekzeuge
  • Installieren von ADT & Toolchains
    • Einen Cross-Toolchain tarball verwenden (Intro, den Cross-Toolchain tarball Bauen/Installieren, Cross-Toolchain + Makefile/Autotools/Autotools lib + App, recipes)
    • Den ADT Installer verwenden (Intro, Web Server, Image + ADT Installer bauen, ADT Installer konfigurieren und ausführen, den ADT Installer über einen Webserver zur Verfügung stellen, den ADT installer am Host ausführen)

Debugging

Intro, gdb, gdb Remote-Debugging, (gdb Remote) Debugging mit Eclipse, (remote) Ausführen mit Eclipse

Profiling/Tracing

Intro, perf, gprof, gcov, strace, ftrace, systemtap, oprofile, LTTng + Eclipse (Datenvisualisierung)

Paketverwaltung

mit Paketen arbeiten, IPK, die Schaffung eines Paket-Feeds, Installation eines Pakets mit opkg auf der Zielhardware

Lizenzierung

Intro, eine benutzerdefinierte Lizenz hinzufügen, Open-Source-Lizenz-Compliance

Devtool

Intro, devtool, Demonstration wie man einen meta-layer für ein richtiges Projekt meta-cfengine erstellt