Language | English (US) |
Version | 2.0.0 |
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 | This training does not require any development kits or additional hardware. By default, the exercises are executed in an emulated environment using QEMU. If necessary, and according to the contracting company’s requirements, the training can be adapted to run on any hardware platform supported by the Yocto Project |
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 our first contact with the Yocto Project by generating and testing a minimal GNU/Linux distribution using 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.
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, dynamic layers, bitbake-layers and yocto-check-layer tools.
Exercise: Creating layers - In this exercise, we will learn how to create and configure layers.
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.
Exercise: Developing recipes - In this exercise, we will learn how to develop recipes for 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, you will practice customizing recipes in the Yocto Project by creating .bbappend files, applying patches, enabling additional features, and resolving QA issues.
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, template files, enabling package management, tips for customization and layer management.
Exercise: Customizing images - In this exercise, we will learn how to generate customized images using the Yocto Project.
Presentation: BSP layers development, creating a BSP layer, machine configuration files, machine common variables, provides mechanism, U-Boot and kernel related variables, machine features, WIC images, formfactor files, creating bootloader recipes, creating kernel and kernel module recipes, applying patches and changing kernel configuration, advanced metadata (kernel cache).
Exercise: Developing and customizing BSPs - In this exercise, we will learn how to create and customize BSPs using 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.
Exercise: Generating and using SDKs - In this exercise, we will learn how to generate, install, and use the Yocto Project’s Extensible SDK.
Presentation: Additional tools and resources, license management, shared state cache, SBOM generation, CVE checker, build history, Toaster, recipetool, VSCode extension, build tools (build appliance, CROPS, Autobuilder).
Exercise: Exploring additional tools and resources - In this exercise, we will learn how to use some additional tools provided by the Yocto Project.
Presentation: Final considerations, study links and references, books, conclusion.