Agenda - Yocto Project

General information

Main topics Introduction to the Yocto Project, Poky and metadata, OpenEmbedded build system, creating and managing layers, recipe concepts, creating and maintaining recipes, image customization, BSP development, generating and using SDKs, additional tools and resources
Duration 3 days - 24 hours - 50% theory and 50% practice
Trainer Sergio Prado
Audience Students, engineers, developers and team leaders that work with software development for embedded systems
Prerequisites Basic knowledge of GNU/Linux command line tools (cat, find, grep, ps, vi, etc), embedded Linux architecture, C language, toolchain and build tools (gcc, make, autotools)
Training material The training material contains the slides and exercises documents, some reference guides and support files. All material is provided in electronic form at the beginning of the training
Development kit The training exercises can be executed on an emulator (QEMU) or on a development kit based on the Colibri iMX6 System-on-Module (ARM Cortex-A9) from Toradex. Development kits are loaned to students during training to carry out practical activities. If required by the contracting company, the training can be ported to other hardware platforms

Detailed schedule

Day 1 - Morning

Presentation: Embedded Linux architecture, introduction to the Yocto Project, project history and motivations, main features and basic architecture, Poky and its components, project documentation.

Presentation: Introduction to Poky, preparing the build machine, Poky repository, preparing the build directory, bblayers.conf and local.conf, processing an image recipe, output and generated images, generating an image for the emulator (QEMU).

Exercise: Getting started with Poky - In this exercise, we will have initial contact with the Yocto Project, generating and testing a minimal GNU/Linux distribution on QEMU.

Presentation: Introduction to the build system, BitBake and metadata, recipes, classes, configuration files, types of layers (BSP, distro, software), using BitBake, BitBake internals, tasks and dependency graph.

Day 1 - Afternoon

Exercise: Exploring the build system - In this exercise, we will explore the build system in more detail.

Presentation: Introduction to the concept of layers, creating a layer, file structure and directories of a layer, layer.conf variables, bitbake-layers and yocto-check-layer tools.

Exercise: Creating layers - In this exercise, we will learn how to create and configure layers with the Yocto Project.

Presentation: Introduction to recipes, recipes vs packages, structure of a recipe, main variables used in recipes, inheriting classes and implementing tasks, how a recipe is processed step-by-step, directory output and logs.

Day 2 - Morning

Exercise: Developing recipes - In this exercise, we will learn how to create recipes with the Yocto Project.

Presentation: Advanced recipe concepts, BitBake variable assignment syntax, overrides and variable flags, append files, PACKAGECONFIG, include and require directives, versioning and priority, debugging recipes, devshell, oe-pkgdata-util and other tools, QA checks.

Exercise: Customizing recipes - In this exercise, we will learn how to customize recipes with the Yocto Project.

Day 2 - Afternoon

Presentation: Customizing images, creating image recipes, package groups, image features, adding users and groups, configuring file and directory permissions, post-install scripts, changing the image format, creating distro configuration files, distribution variables, distro features, enabling package management, tips for customization and layer management.

Exercise: Customizing images - In this exercise, we will learn how to customize the images generated with the Yocto Project.

Day 3 - Morning

Presentation: BSP layers development, creating a BSP layer, machine configuration files, machine common variables, provides mechanism, U-Boot and kernel related variables, machine features, creating bootloader recipes, creating kernel and kernel module recipes, applying patches and changing kernel configuration, kernel advanced metadata.

Exercise: Developing and customizing BSPs - In this exercise, we will learn how to create machine configuration files and customize BSPs in the Yocto Project.

Presentation: Working with SDKs (Software Development Kits), components of an SDK (toolchain, sysroot, scripts and additional tools), toolchain types, generating SDKs, meta-toolchain, populate_sdk and populate_sdk_ext, installing and using SDKs, Extensible SDK (eSDK) and the devtool tool.

Day 3 - Afternoon

Exercise: Generating and using SDKs - In this exercise, we will learn how to compile, install and use the Yocto Project Extensible SDK.

Presentation: Additional tools and resources, license management, shared state cache, build history, Toaster, recipetool, build tools (build appliance, CROPS, Autobuilder).

Exercise: Exploring additional tools and resources - In this exercise, we will learn how to use some additional tools from the Yocto Project.

Presentation: Final considerations, study links and references, books, conclusion.