After a “Refresher to Embedded Linux (2 days)” you’ll see “How the Yocto Project® works (3 days)”
- You already know the basics of (Embedded) Linux and just want to refresh your knowledge.
- After a short (2 days) “Introduction to Embedded Linux”, we will show you (3 days) how the “Yocto Project®” works.
- After the “refresher” we will see how BSP / Framework maintainers can use the “Yocto Project®”.
- We’ll also see how developers can use the SDK who may not even need to know they are using it.
This five-day class demonstrates the concepts of “Embedded Linux” and the “Yocto Project®” using practical exercises in combination with theory. The course is designed to get you up to speed quickly.
Frequently asked questions like those are answered:
- What is Linux?
- Where to get u-boot/the kernel from? configuration / build / install
- Why would you use upstream components?
- How does interprocess communication work and which mechanisms to use/avoid?
- 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 you with Open Source license audits or do you prefer a copyright troll instead?
- … and much more
Hands-on sessions are performed on the host, in a docker container, and on target hardware (e.g. i.mx6). After the workshop, you will be able to download a docker container based on Ubuntu with all dependencies pre-installed plus the examples to work with the course material on your own. Please note that for the first two days ”Refresher to Embedded Linux” it would be ideal if you already have some (Embedded) Linux experience. If not we’ll get you up to date in two days. This should enable you to follow the second part of the course dealing with the “Yocto Training”.
In case you search for an Embedded Linux beginner course, we’ll recommend “Embedded Linux – From Systems Architecture to Real-Time (5 days)” or “Introduction to Embedded Linux in Theory and Practice – a Crash Course (3 days)”.
- 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 training.
- It helps to be familiar with ”Embedded Linux – From Systems Architecture to Real-Time (5 days)” or ”Introduction to Embedded Linux in Theory and Practice – a Crash Course (3 days)” but even if you are not we’ll try to get you up to speed in the first two days.
- 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. We’ll have a look at this as well during the first two days.
Who should attend?
You think about using Linux for your embedded project or already use it for your projects. You have probably heard about the Yocto Project®, but did not dare to have a closer look into it, or had difficulties using it. Besides you want a refresher on Linux interprocess communication and real-time. 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 training, 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 basic knowledge of Embedded Linux who want to refresh their knowledge.
- Introduction | History
- How does Linux boot on a PC and on the evaluation board? | Boot sequence | SD card partitions | See it booting
- scripting | fancy stuff | checkout | config | build | install
kbuild |kernel modules | install
- Flat device tree (fdt)
- investigate | build | install
exit |Licensing |
| EXPORT_SYMBOL |
out of tree
- put the module in the kernel tree
- parameter passing
- Device Files | Device Types | Device Nodes major/minor | Kernel Driver Interface
- Device Driver: Intro | Registration | Initialization | Open/Release
Miscellaneous Character Drivers
- Simple tools
lsof | ltrace | strace | procfs | top | netstat | syslog |…
- Advanced tools
- What’s a debugger?
gdbon the target system
Kernel Debugging (optional)
- Debugging Intro
Process and Inter-Process Communication
- Linux architecture | operating system |
scheduler– priorities –
schedulingclasses | process,
| errno | fork |process termination | process states | zombies | watch processes | simple IPC
- shell redirection | shelling out | tmpfiles
- advanced IPC
pipes| signals | interrupted system calls |
message queues| semaphores | mutex |
| select | poll
- other IPC methods | IPC techniques which should be avoided
interrupts| re-entrant code
- Real-Time Intro
- What is Real-Time? | What is hard Real-Time?
- Real-Time Linux
- Hypervisor | Dual kernel | Fully Preemptive Kernel
- Degrees of Real-Time behavior
- explicit/implicit preemption points | real-time preemption patch | fully preemptive kernel | hard real-time extensions
- Dual Kernel: Adeos/Xenomai
- Adeos patch | Xenomai | patch/config/build kernel | test it on the target system
- Real-Time Myths
- 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
- What is needed for a Yocto Project® build? | Layer versions/dependencies | host dependencies | config files | host/kernel dependencies
The Yocto Project® Workflow
- Workflow | OpenEmbedded architecture
- Configuration (User) | Metadata (Recipes) | Machine (BSP) |
- Features | Recipe Versioning |
- Source fetching | Patching | Configure/Compile/Staging
| SSTATE |Pseudo
| recipetool |Examples of Recipes
| PACKAGECONFIG |Packages and their contents | Output analysis/Packaging | How to generate
| SDK Generation |
- Customization of
| local.conf | IMAGE_FEATURES |custom
imagerecipes (.bb files) | custom packagegroups)
- Syntax (Variable Expansion | Variable Assignment |
Variable Flags| Conditional Syntax –
- BitBake Debugging (debug
level| find recipes/
images/packagegroups | BitBake environment/
force build/force building a specific
| cleansstate |How to invalidate the
stamp | devshell |dependencies | packages | kill all BitBake instances | BitBake graphical wrapper)
Cleaning(gain disk space |
| bitbake-layerstool |
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
- Intro | System Development Workflow |
Kernel Development Manual(
defconfig | defconfig+ configuration fragment |
in treekmod |
out of treekmod | fdt classic | fdt with
Software Development Kit
- Intro |
| BBCLASSEXTEND |Multilib | The QEMU Emulator | SDK-Eclipse Yocto 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
- SW update vs. Package Management
|Working with Packages
| ipk |creating a
|installing a package with
opkgon the target system
|Add custom license
|Add commercial license
|Open Source License Compliance
- ”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 & 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)”