Introduction to Embedded Linux and Yocto


Reliable Embedded Systems provides trainings to help you create better embedded software!


Embedded Linux - From
Systems Architecture to Real-Time:

Our in-depth introduction to Embedded GNU/Linux.

Read more

Embedded GNU/Linux Kernel Internals and Device Drivers:
We describe processes, concepts and commands necessary to write GNU/Linux device drivers.

Read more

The Yocto Project - An Overview:
After the training you should have a much better overview about the Yocto Project and be able to decide whether you need it or not.

Read more

Introduction to Embedded Linux and the Yocto Project:
A quick introduction to Embedded Linux (2 days), essentials to utilize the Yocto Project (3 days).

Read more

Introduction to Embedded Linux in Theory and Practice - a Crash Course:
The aim of this crash course is to provide a basic overview of embedded GNU/Linux.

Read more

(Embedded) Linux Debugging:
We'll give you a basic overview of debugging/tracing/profiling facillitites available with (embedded) GNU/Linux kernel/user-space.

Read more

Embedded Linux Hardware Interfacing:
Is it really that hard to use digital I/O, Analog I/O(pwm), Sensors/Actors, IoT and friends with Linux?

Coming soon

FreeRTOS in Theory and Practice:
Take home a working knowledge of FreeRTOS and the ability to use it effectively in your own embedded development project.

Read more

The Zephyr Project - An Overview:
Take home a working knowledge of the Zephyr Project and the ability to use it effectively in your own embedded development project.

Coming soon

FlexNgage + Training:
Add trainings as you like to the various steps of your development process.

Read more

Custom Training:
Ask for a custom training e.g. by combining stuff from various trainings or something totally new.

Read more

3rd Party Training Material:
We customize/deliver your Embedded Linux training material in English/German.

Read more

Public Events

FreeRTOS in Theory and Practice

details in: en
private/remote, 3-day training class

03 Aug 2021
virtual/remote, in German, Timezone: UTC+2,

Refresher to Embedded Linux & Intro to the Yocto Project

details in: en
public, 5-day training class

23 Aug 2021
virtual/remote, in English, Timezone: UTC+2,

Introduction to Embedded Linux & Real-Time, bird’s eye view of the Yocto Project

details in: en
public or private/remote, 4-day training class
book until: 20 Aug 2021
30 Aug 2021
virtual/remote, in German/English (TBD), Timezone: UTC+2 (TBD), guaranteed to run from 3 subscribers

The Yocto Project - A thorough Overview

details in: en
public or private/remote, 4-day training class
book until: 03 Sep 2021
14 Sep 2021
virtual/remote, in German/English (TBD), Timezone: UTC+2 (TBD), guaranteed to run from 3 subscribers

Refresher to Embedded Linux & Intro to the Yocto Project

details in: en
public or private/remote, 5-day training class
book until: 27 Aug 2021
20 Sep 2021
virtual/remote, in German/English (TBD), Timezone: UTC+2 (TBD), guaranteed to run from 3 subscribers

ELC (virtual) 2021

Meet us at the
Embedded Linux Conference 2021

details: en
28 Sep 2021
Dublin, Ireland/virtual, in English, Timezone: UTC+1

FlexNgage + Training

you can add trainings as you like to the various steps of your development process

More Detail

Products & Services

We provide flexible engagement models to enable you to leverage exactly the capabilities you need. Although our expertise lies in the domains of Embedded Systems Software (Training) the options we can offer range from consulting to full turnkey engagements. We can bring you in touch with our worldwide network of experts. They either handle everything for you or just parts of your system. This enables you and Reliable Embedded Systems to focus on their core competencies.

  • our experts can help guide you
  • we can work with you
  • we can do it for you

First in time, first in line!

Please check for available days and/or just ask.

Available days


Course Objectives

After a quick introduction to Embedded Linux (2 days) to provide an understanding of the essentials to utilize the Yocto Project (3 days). After the introduction 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.


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

  • What is GNU/Linux?
  • Why use upstream?
  • Where to get u-boot/the kernel from? How to configure/build/install it?
  • How does interprocess communication work and what to use/avoid?
  • Is it really necessary to use another version of the tool-chain/libraries/packages for each and every GNU/Linux project and on top of that to follow a different work-flow each time?
  • 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 you with Open Source license audits or do you prefer a copyright troll instead?
  • ... 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 host dependencies pre-installed plus the examples in order to work with the course material in their own labs. Please note that the first two days Introduction to Embedded Linux might not be enough to follow the Yocto training. You might want to have a look at here. We'll have a quick look at how Embedded GNU/Linux works and configure/build the Linux kernel among other things.

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 minimal knowledge of Embedded GNU/Linux.


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.


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


Course Outline


  • Introduction
  • History

Eval board

  • Eval Board Introduction
  • Booting
    • How does Linux boot on a PC
    • How is an Embedded System different?
  • Booting the target
    • Boot Sequence
    • SD card partitions

Stuff needed

  • U-Boot
  • U-Boot: Fancy Stuff
  • U-Boot: Get/Configure/Build/Install
  • U-Boot: Commands
  • Fdt
  • Kernel
  • Kernel: Get/kbuild
  • Kbuild
  • Kernel: Configure/Build/Install
  • Kernel: fdt
  • Kernel: modules

Kernel modules

  • ...can be
  • init/exit
  • Licensing
  • tainted module/kernel
  • out of tree .ko makefile
  • module-init-tools
  • put module in kernel tree
  • build and install
  • load it
  • parameter passing
  • Access TCB

Character Driver

  • Device Files
    • Intro
    • device types
    • major/minor
    • Architecture
  • Driver Kernel Interface
  • Device Driver
    • Intro
    • Registration
    • Initialization
    • Open Release
  • Misc. Char Drivers

User Space Debugging

  • Debugging: Simple Tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Debugging: Advanced Tools
    • What’s a Debugger?
    • target gdb
    • gdb remote debugging

Kernel Debugging

  • Debugging Intro
  • JTAG

Process IPC

  • IPC Intro
    • Unix/Linux architecture
    • What’s on OS?
    • What’s a scheduler?
    • Linux scheduler
    • Linux priorities
    • Linux scheduler(s)
    • Linux scheduling classes
    • Process/Task/Thread
    • errno
    • fork()
    • Process termination
    • Process states
    • Zombies
    • More about Processes
    • Watch a process
  • Simple IPC
    • shell redirection
    • shelling out
    • tempfiles
  • IPC Generic
  • IPC
    • Message passing vs. shared memory
  • Advanced IPC
    • Pipes
    • Signals
    • Interrupted System Calls
    • POSIX.4 Message Queues
    • Semaphores Introduction
    • Mutex
    • Semaphores
    • Shared Memory
    • Sockets
    • select
      • self-pipe trick
    • Other IPC mechanisms
  • IPC techniques to avoid


  • Prerequisites
    • Kernel vs. User Space
    • Toolchain
    • Program Sections
    • Interrupts
    • Reentrant Code
  • Real-Time Intro
    • Time/Utility Functions
    • What is Real-Time?
    • Determinism
    • What is hard real-time?
  • Real-Time Linux
  • "Degrees" of real-time behavior
  • Dual kernel
    • Xenomai
    • Measurement results
  • Real-Time Myths

Yocto Introduction

  • What is Yocto?
  • Why use the YP?
  • What is the YP?
  • Some tools under the YP umbrella
    • Poky
    • BitBake
    • OE-Core
    • Metadata

The Yocto Autobuilder

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

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
    • custom .bb files - inherit core-image
    • custom .bb files - based on core-image-minimal
    • custom packagegroups


  • 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


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


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


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

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

Package Management

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


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


  • 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.

Note: Alternatively, there is also a four-day Yocto training The Yocto Project - An Overview.