A basic overview of Embedded Linux, Real-Time Linux, plus the Yocto Project® from a bird’s-eye view.
Course Objectives
We’ll take a look at the following topics:
- What are the components needed to build an embedded Linux system?
- Where to get them from and how to configure/build/install them?
- Where to get help from?
- What about licenses?
- What’s the Yocto Project from a bird’s-eye view?
- How to add Real-Time to Linux?
Hands-on exercises provide you with the necessary practical experience to go ahead and configure/build an embedded Linux system with mainline components and real-time patches.
Description
This four-day training class uses hands-on exercises combined with instruction to illustrate some basic concepts of Embedded Linux.
Hands-on sessions are performed on the host with a Yocto Project® SDK and on some target hardware (e.g., i.mx8). The whole workshop is designed to bring you quickly up to speed. The concepts and commands necessary to make effective use of Embedded Linux are described through a combination of theory and hands-on exercises. Don’t reinvent the wheel, but learn from an experienced trainer and take the newly acquired knowledge of Embedded Linux and the ability to effectively integrate it into your own embedded development projects back home.
Prerequisites
- Basic familiarity with using a Linux system (e.g., Ubuntu) as an end user in user space
- Basic familiarity with a command-line shell
- Familiarity with embedded C concepts and programming
- The ability to develop software using C syntax
- Basic knowledge concerning embedded processors and development boards
- …and no fear to learn more of the above
Course Roadmap

Who should attend?
Project managers, software and hardware developers, systems engineers, technicians, and those interested in technology are trying to understand as quickly as possible how embedded Linux works. You have to use Linux or have the luxury to decide whether it makes sense to use it or not. You may already use Embedded Linux, but you are not quite sure if you do everything right. Perhaps you currently use another operating system and want to find out whether Linux would potentially be more cost-effective.
Course Outline
Day 1
Introduction
- History of Unix/Linux
|Licensing|Standards|Unix Philosophy
Embedded Specifics
- Linux on the desktop compared to Linux in an embedded system | cross-/native toolchains | pre-built toolchains | build systems | C libraries
Evaluation Board
- How does Linux boot on a PC and on the evaluation board?
|SD card partitions|See it booting.
Yocto Introduction
- What is Yocto?
|What is the Yocto Project®? (features/challenges)|Some tools under the Yocto Project® umbrella (Poky|BitBake|OE-Core|Metadata)|Why would you use the Yocto Project®?
The Yocto Project® Workflow
- Intro
- Workflow
|OE architecture - Configuration (User
|Metadata (Recipes)|Machine (BSP)|Distribution/Policy) - Features
|Recipe Versioning|Layers - Sources
- Build (Source fetching
|Patching|Configure/Compile/Staging|SSTATE|Pseudo|recipetool|Examples of Recipes|PACKAGECONFIG|Packages and their contents|Output analysis/Packaging|ImageGeneration|SDK Generation)|Tasks
Day 2
What’s needed on…
- host
Toolkit- The Yocto Project®
|The Yocto Project® build environment|Install the Yocto Project® SDK
- The Yocto Project®
- SD card preparation
|terminal emulationscreen|byobu|minicom
- servers
- DHCP
|tftp|NFS
- DHCP
- root file systems
- target system
- git
|u-boot- scripting
|fancy stuff|checkout|config|build|install
- scripting
- kernel
checkout|config:kconfig|build:kbuild|kernel modules|install
- Flat device tree (fdt)
- Let’s investigate the flat device tree
|build|install
- Let’s investigate the flat device tree
- git
Customizations (optional)
- Customizations: The system hangs
|pseudotty|getty|runlevel|static ip - Init: Sys-V
|Various options|systemd|bootgraph|bootchart
Day 3
Kernel Modules
init/exit|Licensing|taintedmodule/kernel|EXPORT_SYMBOL|out of tree.komakefile- module-init-tools
- Put module in kernel tree
- parameter passing
Character Driver
- Device Files
|Device Types|Device Nodes Major/Minor|Kernel Driver Interface - Device Driver: Intro
|Registration|Initialization|Open/Release Miscellaneous Character Drivers
User Space Debugging
- Simple tools
|Advanced tools|What’s a debugger? gdb:gdbon the target system|gdbremote debugging
Kernel Debugging (optional)
kgdb/kdb+agent-proxy|JTAG
Day 4
Profiling/Tracing
- Profiling/Tracing tools:
strace|system timers|gprof|gcov|ftrace/kernelshark|systemtap|perf|LTTng - top and similar tools:
top|latencytop|powertop|powerdebug crash:gdbon steroids
Real-Time
- prerequisites
interrupts|re-entrant code
- Real-Time Intro
- What is Real-Time?
|What is hard Real-Time?
- What is Real-Time?
- Real-Time Linux
- Hypervisor
|Dual kernel|Fully Preemptive Kernel
- Hypervisor
- Degrees of Real-Time behavior
- explicit/implicit
preemption points|real-time preemption patch|fully preemptive kernel|hard real-time extensions
- explicit/implicit
- Dual Kernel: Adeos/Xenomai
- Adeos patch
|Xenomai|patch/config/build kernel|test it on the target system
- Adeos patch
- Real-Time Myths
Course Brochure (pdf)
- ”Introduction to Embedded Linux & Real-Time, bird’s-eye view of the Yocto Project (4 days)”
Related Courses
- ”Embedded Linux – From System Architecture to Real-Time (5 days)”
- ”Refresher to Embedded Linux & Intro to the Yocto Project (5 days)”
- ”Embedded Linux Kernel Internals and Device Drivers (5 days)”
- ”The Yocto Project – A thorough Overview (4 days)”
- ”Introduction to Embedded Linux in Theory and Practice – a Crash Course (3 days)”
- ”(Embedded) Linux debugging (3 days)”
- ”FreeRTOS in Theory and Practice (3 days)”