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.

Trainer und Dozenten

Robert Berger hat seit 1993 Praxis- und Führungserfahrung in der Industrie bei Design und Entwicklung von Software für Eingebettete Systeme mit und ohne harten Echtzeit Anforderungen. Er arbeitet seit dem Beginn des 21. Jahrhunderts mit GNU/Linux auch im Desktop/Server Bereich, aber hauptsächlich für Eingebettete Systeme (Automotive, Industrial Control, Robotics, Telecom, Consumer Electronics,...). Man trifft ihn regelmäßig bei internationalen Events wie z.B. Embedded World, Embedded Software Engineering Kongress;, Embedded Systems Conference, Embedded Linux Conference als Experten und Vortragenden. Seine Spezialitäten sind vorwiegend Schulungen aber auch Beratungen (auf Deutsch oder Englisch) weltweit und zwar von kleinsten Echtzeit Systemen (FreeRTOS) bis hin zu Systemen mit mehreren Prozessoren/Cores und Embedded GNU/Linux (User-, Kernel-Space, Device Drivers, Hardware Interfacing, Debugging, Multi-core, Yocto Project,...) mit Schwerpunkt Free- und Open Source Software. Robert ist ein Weltenbummler. Er ist CEO & Embedded Software Spezialist bei Reliable Embedded Systems (St. Barbara/Österreich) und wenn er keine Kundenbesuche macht ist er bei seiner Familie in Athen/Griechenland.

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

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.