The Yocto Project - An Overview

title-1

Course Objectives

To provide an understanding of the essentials to utilize the Yocto Project on top of your firm knowledge about Embedded GNU/Linux, the GNU/Linux kernel and friends. We’ll see how a BSP/framework maintainer would use the Yocto Project as well as developers who might not even want/need to know they are using it.

Introduction

This four day training combines theory with hands-on exercises in order to introduce the Yocto Project.
It answers frequently asked questions like:

  • Is it really necessary to use another version of the tool-chain/libraries/packages for each and every GNU/Linux project and an top of that to follow a different work-flow?
  • Can you ensure that the development environment is identical for all developers/suppliers and that you can still produce identical builds like today in 10+ years from now?
  • Can the YP help find out under what software licenses the packages you use are licensed?
  • ... and much more

Hands-on sessions are performed on target hardware (e.g. phyBOARD-Mira i.MX 6 Quad - Full Featured). After the training the students will be able to download a docker image with Ubuntu 16.x and all dependencies pre-installed plus the examples in order to work with the course material in their own labs. Please note that this is not an introductory course to Embedded GNU/Linux like the one we offer here. You should already know how Embedded GNU/Linux works and maybe you even configured/built the Linux kernel for some of your projects.

Who should attend?

You already use GNU/Linux for your projects and have probably heard about the Yocto Project, but did not dare to have a closer look into it, or had difficulties using it. You don’t know whether and how your daily workflow can be accomodated in the YP and generally find the YP rather complicated. Why do we need all this since up to know everything was (supposedly) much easier? After the training you should be able to decide whether you need the YP or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers and other parties interested in the YP, with a solid knowledge of Embedded GNU/Linux.

Prerequisites

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish.

  • on-site - instructor driven *)
  • on-line - instructor driven **)
  • on-site/on-line combination - instructor driven *)**)

We’ll provide laptops*), boards*)**), workbooks and reference books (in English)*)**), remote access to servers and boards **), screen-sharing **), audio-bridge **). For possible training delivery options check here and/or ask here.

The work- and reference books typically stay with the students after the training.

Timetable

  • 4 days in a row 09:00 until 17:00 with breaks (your timezone - TBD)

Trainer

Course Outline

Day 1

Introduction

  • Introduction
  • History
  • Licensing
  • Standards
  • The Unix Philosophy

Embedded Specifics

  • What’s an Embedded System?
  • Embedded vs. Desktop Linux
  • Software Release
  • Build for your Target
  • Toolchains
  • C-libraries

Eval board

  • Eval Board
  • Booting GNU/Linux on a PC
  • Booting GNU/Linux on an Embedded System
  • Boot Sequence
  • SD card partitions

Yocto Introduction

  • What is Yocto?
  • Why use the YP?
  • What is the YP?
  • Poky
  • BitBake
  • OE-Core
  • Metadata

The Yocto Autobuilder

  • What is the Yocto Autobuilder?
  • Docker container (pull, launch container)
  • Yocto build environment without Docker/Yocto Autobuilder

Day 2

The YP Workflow

  • Intro
  • Workflow
    • OE architecture
  • Configuration
    • User Configuration
    • Features
      • Machine Features
      • Distro Features
      • Combined Features
      • Image Features
    • Recipe Versioning
      • Intro
      • Hyphens
      • SCM-based
      • Pitfalls
      • Devel/Stable
      • Overrides
    • Metadata (Recipes)
    • Machine (BSP) Configuration
    • Distribution Policy
  • Sources
  • Build
    • Source fetching: do_fetch, do_unpack
    • Patching
    • Configure/Compile/Install
    • Pseudo
    • recipetool
    • Examples of Recipes
      • Single .c File Package
      • Autotooled Package
      • Splitting App. in Multiple Packages
    • Output Analysis/Packaging
    • Image Generation
    • SDK Generation
  • Customizing Images
    • Intro
    • local.conf
    • IMAGE_FEATURES
    • custom .bb files - inherit core-image
    • custom .bb files - based on core-image-minimal
    • custom packagegroups

BitBake

  • History
  • Syntax
    • Variable Expansion
    • Variable Assignment
    • Pre-/Append
    • Removal (Override Style Syntax)
    • Variable Flag Syntax
    • Conditional Syntax (Overrides)
  • Debugging
    • BitBake debugging
    • find recipes
    • find images
    • find packagegroups
    • BitBake Environment
    • BitBake logs
    • Re-BitBake stuff
      • force build/specific task
      • cleansstate
      • invalidate stamp
    • Devshell
    • Dependencies
    • Packages
    • Killall Bitbake
    • BitBake with ncurses wrapper
    • Tools/Tweaks
  • Cleaning
    • Cleaning to gain disc space
    • Cleaning to rebuild

Day 3

Layers

  • Intro
  • bitbake-layers tool
  • yocto-layer tool

BSP

  • Intro
  • System Development Workflow
  • BSP Developer’s Guide
    • bsp-tool

Kernel

  • Intro
  • System Development Workflow
  • Kernel Development Manual
    • defconfig + configuration fragment
    • in tree kmod
    • out of tree kmod
    • fdt

Application/Software Development Kit

  • Software Development Kit
    • Intro
    • Cross-Development Toolchain
    • Sysroot
    • The QEMU Emulator
    • Eclipse Yocto Plug-in
    • Performance Enhancing tools
  • Installing SDKs & Toolchains
  • Cross-Toolchains/SDKs
    • Intro
    • Building a Cross-Toolchain installer
    • Using the Standard SDK
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Extensible SDK

Eclipse

  • Intro
  • Application Development Workflow
  • Working with Eclipse
    • rootfs features, kernel + fdt, rootfs
    • install JDK
    • install Eclipse
    • configure Eclipse
    • install Yocto Plugin
    • Configure the Yocto Plugin
    • Create Autotooled Project
    • Configuring the Cross-Toolchains
    • Build the Project

Day 4

User Space Debugging

  • Intro
  • gdb
    • target gdb
    • gdb remote debugging
    • gdb remote debugging with Eclipse
    • remote run from Eclipse

Profiling/Tracing

  • Yocto Tracing tools
    • perf
    • gprof
    • gcov
    • strace
    • ftrace
    • systemtap
    • oprofile
    • LTTng
  • top an friends
    • top
    • latencytop
    • powertop
    • powerdebug
  • crash

Package Management

  • Software updates
  • Working with packages
    • IPK
    • creating a package feed
    • installing a package with opkg on the target

Licensing

  • Intro
  • Add custom license to the YP
  • Open Source License Compliance with the YP

Devtool

  • Intro
  • Add recipe/Build/Deploy
  • Create/Add layer
  • Finish
  • Modify/Update-Recipe
  • Build/Run
  • Build Image

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.

Public Yocto

The Yocto Project - An Overview

public, 4-day training class
title-1
09 Jan 2018
Regensburg/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
16 Jan 2018
Munich/Germany

Pick a Training

private, 5 day training class
title-1
22 Jan 2018
Austria, German

The Yocto Project - An Overview

public, 4-day training class
title-1
06 Feb 2018
Munich/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
20 Feb 2018
Essen-Horst/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
13 Mar 2018
Munich/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
17 Apr 2018
Munich/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
24 Apr 2018
Mainz/Germany

The Yocto Project - An Overview

public, 4-day training class
title-1
15 May 2018
Munich/Germany

Note: For in-house trainings companies like to prepend this course with Introduction to Embedded Linux - a short Crash Course to get their engineers quickly up to speed with Embedded GNU/Linux.