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
- 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
- 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)
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 Kurstagen gibt es bei uns ab 8 Uhr Frühstück.
Unsere Kurse beginnen um 9 Uhr und enden um 18 Uhr.
Neben den kleinen Pausen gibt es eine Stunde Mittagspause mit leckerem, frisch in unserer Küche zubereitetem Essen.
Nach der Schulung 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.