You’ll get a much better understanding of the Yocto Project® and how to use it.
Course Objectives
- We’ll give and thorough overview of the of the Yocto Project® and try to show it’s capabilities as well as how the puzzle pieces fit together.
- We’ll see, among other things how a BSP/framework maintainer would make use of the Yocto Project® as well as developers who might not even want/need to know that it’s Yocto Project® they operate underneath.
- Some hints about how a “professional grade” setup can be achieved will be given.
Description
This four-day training combines theory with hands-on exercises to introduce the Yocto Project®.
It answers frequently asked questions like:
- What is the Yocto Project® and what is the OpenEmbedded/Yocto Project® workflow?
- What is BitBake?
- What are Layers?
- Is it really necessary to use another version of the toolchain/libraries/packages for each Embedded Linux project and on top of that to follow a different workflow?
- 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 Yocto Project® help find out under what software licenses the packages you use are licensed?
- … and much more
Hands-on sessions are performed on the host, in a docker container, and on target hardware (e.g. i.mx6). The docker container is based on Ubuntu with all dependencies the Yocto Project® needs pre-installed. After the workshop, you will be able to download the docker container plus examples to work with the course material on your own. Please note that this is not an introductory course to Embedded Linux like the one we offer here. You should already know how Embedded Linux works and how to configure/build the Linux kernel and kernel drivers in order to follow certain advanced chapters.
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
- Basic knowledge of user/kernel space programming with Linux
- Intermediate C programming knowledge
- Ideally, you have basic experience with Embedded Linux (kernel, userspace, root file-system, tools) to follow this workshop. You should have attended ”Embedded Linux – From System Architecture to Real-Time (5 days)” or ”Introduction to Embedded Linux in Theory and Practice – a Crash Course (3 days)”. (highly recommended)
- except if you are already familiar with the material presented in those courses.
- It might be helpful if you attended ”Embedded Linux Kernel Internals and Device Drivers (5 days)”, but that’s not a prerequisite. It’s sufficient to know how to build the Linux kernel, in/out of tree kernel drivers, and the flattened device tree (fdt) to follow the board support package (BSP) and kernel chapters of this workshop.
- The sessions mentioned above can be delivered on-site and online. Feel free to ask for dates and pricing here.
Course Roadmap
Who should attend?
You already use 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 accommodated in the Yocto Project® and generally find the Yocto Project® rather complicated. Why do we need all this since up to now everything was (supposedly) much easier? After the class, you should be able to decide whether you need the Yocto Project® or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers, and other parties interested in the Yocto Project®, with a solid knowledge of Embedded Linux.
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 | …
Eval Board
- How does Linux boot on a PC and on the evaluation board? | See it booting
Yocto Introduction
- What is Linux? | What is a Linux distro? | What is Yocto? | What is the Yocto Project®? (features/challenges) | Some tools hosted/used by the Yocto Project® (Poky | BitBake | OpenEmbedded-Core | Metadata) | Why would you use the Yocto Project®?
How to become part of our Yocto Project® Community (optional)
- First steps | How to get in touch | Participate | Contribute | Social Media | Events
Development Environment
- What is needed for a Yocto Project® build? | Layer versions/dependencies | host dependencies | config files | host/kernel dependencies
The Yocto Project® Workflow
- Intro
- Workflow | OpenEmbedded architecture
- Configuration (User) | Metadata (Recipes) | Machine (BSP) |
Distribution
(Policy
) - Features | Recipe Versioning | Layers
- Sources
- Source fetching | Patching | Configure/Compile/Staging |
SSTATE
| Pseudo |recipetool
| Examples of Recipes |PACKAGECONFIG
| Packages and their contents | Output analysis/Packaging | How to generateImages
| SDK Generation |Tasks
- Customization of
Images
(Intro| local.conf | IMAGE_FEATURES |
customimage
recipes (.bb
files) | custom packagegroups)
Day 2
BitBake
- History
- Syntax (Variable Expansion | Variable Assignment |
Prepend
/Append
|Remove
|Variable Flags
| Conditional Syntax –OVERRIDES
) - BitBake Debugging (
debug level
| find recipes/images
/packagegroups
| BitBake environment/tasks
/logging
|force build
/force building a specifictask
| cleansstate |
How to invalidate thestamp
| devshell |
dependencies | packages | kill all BitBake instances | BitBake graphical wrapper) Cleaning
(gain disk space |rebuild
)
Layers
- Intro
| bitbake-layers
tool |dynamic layers
Board Support Package (BSP)
- Intro | System Development Workflow |
BSP Developer’s Guide
(bsp-tool
– ported to recent Poky versions) | BSP creation | non-mainline kernel patches
Kernel
- Intro | System Development Workflow |
Kernel Development Manual
(defconfig | defconfig
+ configuration fragment |in tree
kmod |out of tree
kmod | fdt classic | fdt withdevicetree.bbclass |
…)
Day 3
Software Development Kit
- Intro |
cross-development
Toolchain
| Sysroot| BBCLASSEXTEND |
Multilib | The QEMU Emulator | SDK-Eclipse Yocto Project® Plug-in (deprecated) | User Space Tools | Installing SDKs & toolchains - Cross-Toolchains/Software Development Kits
- Building a Cross-Toolchain installer
- Using the Standard Software Development Kit (Cross-Toolchain + Makefile/Autotools/Autotools lib + App | recipes)
- Building/Using the Extensible Software Development Kit
Libraries
.so
naming convention | What goes where (root file system/Software Development Kit)? | How to use an static library (autotools
)(.a
) with poky?
Eclipse (deprecated/optional)
- Intro | Application Development Workflow
- Working with Eclipse (root file system features | kernel + flattened device tree | root file system | install the Java Development Kit | install Eclipse | configure Eclipse | install Yocto Project® Plugin | Configure the Yocto Project® Plugin | Create “Autotooled Project” | Configuring the Cross-Toolchains | Build the Project)
Day 4
User Space Debugging
- Intro
| gdb | gdb
remote debugging|
(gdb
remote) Debugging with Eclipse|
(remote) Run from Eclipse
Profiling/Tracing
- Intro
| perf | gprof | gcov | strace | ftrace | systemtap |
LTTng + Eclipse (data visualization)| top | powertop | powerdebug
Package Management
- SW update vs. Package Management
|
Working with Packages| ipk |
creating apackage feed
|
installing a package withopkg
on the target system
Licensing
- Intro
|
Add custom license|
Add commercial license|
Firmware License|
Open Source License Compliance
Devtool
- Intro
|
Add recipe/Build/Deploy|
Create/Addlayer
|
Finish
|
Modify/Update-Recipe|
Build/Run
Build:|
Image
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)”
- ”Introduction to Embedded Linux & Real-Time, bird’s eye view of the Yocto Project (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)”