Free training materials and conference presentations from Bootlin, covering kernel, real-time, Android, embedded Linux system and device driver development.
License
All our documents are available under the terms of the Creative Commons Attribution-ShareAlike 3.0 license. This essentially means that you are free to download, distribute and even modify them, provided you mention us as the original authors and that you share these documents under the same conditions.
Complete training materials
- Embedded Linux system development course
- Linux kernel and driver development course
- Yocto Project and OpenEmbedded development course
- Buildroot development course
- Embedded Linux boot time reduction course
- Understanding the Linux graphics stack
- Real-time Linux with PREEMPT_RT
- Linux debugging, profiling, tracing and performance analysis
- Embedded Linux audio
Presentations at technical conferences
Here are the most recent versions of presentations we made at technical conferences.
Keynotes
Linux kernel, bootloaders and hardware support
- Multi-port and Multi-PHY Ethernet interfaces (2023)
- A tour of USB Device Controller (UDC) in Linux (video, 2023)
- A Current Overview of the DRM KMS Driver-Side APIs (video, 2023)
- Improving IEEE 802.15.4 MAC management support in the Linux kernel (2022)
- Basics of I2C on Linux (video, 2022)
- Walking Through the Linux-Based Graphics Stack (video, 2022)
- Advanced camera support on Allwinner SoCs with mainline Linux (video, 2022)
- PKCS#11 with OP-TEE (video, 2022)
- AMP on Cortex A9 with Linux and OpenAMP (2022)
- LLVM tools for the Linux kernel (video, 2022)
- OP-Tee: when Linux loses control (video, 2021)
- I3C in tomorrow’s designs (video, 2021)
- Device Tree 101 (video, 2021)
- Network Performance in the Linux Kernel, Getting the most out of the Hardware (video, 2021)
- An overview of the Linux kernel and user-space graphics stack (video, 2020)
- ASoC: Supporting Audio on an Embedded Board (video, 2020)
- From the camera sensor to the user: the journey of a video frame (video, 2020)
- Supporting hardware-accelerated video encoding with mainline Linux (video, 2020)
- Understand ECC support for NAND flash devices in Linux (video, 2020)
- Precision Time Protocol (PTP) and packet timestamping in Linux (video, 2020)
- Integrating HW-Accelerated Video Decoding with the Display Stack (video, 2019)
- Memory Technology Devices: what’s new? (2019)
- RTC subsystem, recent changes and where it is heading (video, 2019)
- Offloading Network Traffic Classification (video, 2019)
- Introduction to Linux kernel driver programming: device model (2019)
- Understand your NAND and drive it within Linux (video, 2018)
- Introduction to the DRM subsystem (video, 2017)
- Power Management Integrated Circuits: Keep the Power in Your Hands (video, 2017)
- A tour of the ARM architecture and its Linux support (video, 2017)
- Upstreaming hardware support in the Linux kernel: why and how? (2016)
- Supporting the Camera Interface on the C.H.I.P (video, 2016)
- Bringing display and 3D to the C.H.I.P computer (video, 2016)
- Your newer ARM64 SoC Linux check list! (video, 2016)
- Using DT overlays to support the C.H.I.P.’s capes (video, 2016)
- Porting Linux on an ARM board (2015)
- Supporting multi-function devices in the Linux kernel (video, 2015)
- Kernel maintainership: an oral tradition (video, 2015)
- An overview of the DMAEngine subsystem (video, 2015)
- Device Tree as a stable ABI: a fairy tale? (video, 2015)
- Two years of ARM SoC support mainlining: lessons learned (2014)
- Supporting a new ARM platform: the Allwinner example (video, 2014)
- The DRM/KMS subsystem from a newbie’s point of view (2014)
- SMP bring up on ARM SoCs (2014)
- Common clock framework: how to use it (video, 2013)
- ARM support in the Linux kernel (video, 2013)
- Your new ARM SoC Linux support check-list (video from earlier session, 2013)
- IIO, a new subsystem (2012)
Embedded Linux
- Keep your layer simple – and here’s how (video, 2023)
- How to Contribute to OpenEmbedded, Yocto, and Many Other Open Source Projects (video, 2023)
- Discover and understand Embedded Linux (2023)
- How to reduce power consumption with GNU/Linux (2023)
- Debugging with GDB and remote GDB (2023)
- Finding the Best Block Filesystem (video, 2023)
- Bitbaking SPDX SBoM (video, 2022)
- Implementing A/B System Updates with U-Boot (video, 2022)
- Yocto Project Autobuilders and the SWAT team (video, 2022)
- Buildroot – What’s new? (video, 2022)
- How do I start contributing to Yocto Project? (video, 2022)
- Embedded Linux nuggets found in Buildroot package eldorado (video, 2021)
- Security vulnerability tracking tools in Buildroot (video, 2021)
- Secure boot in embedded Linux systems (video, 2021)
- Device tree overlays and U-Boot extension board management (video, 2021)
- Getting started with RAUC (video, 2021)
- Understanding U-Boot Falcon mode (video, 2021)
- Embedded Linux from Scratch in 45 minutes, on RISC-V (video, 2021)
- OpenEmbedded and Yocto Project best practices (video, 2020)
- Building embedded Debian/Ubuntu systems with ELBE (video, 2020)
- Using Visual Studio Code for Embedded Linux Development (video, 2020)
- Getting started with Buildroot (2019)
- Timing boot time reduction techniques (2019)
- Introduction to Yocto Project and OpenEmbedded (2017)
- Understanding D-Bus (2016)
- Embedded Building a board farm: Continuous Integration and remote control (video, 2016)
- Anatomy of cross-compilation toolchains (video, 2016)
- Running UBI/UBIFS on MLC NAND (video, 2016)
- Buildroot vs. OpenEmbedded/Yocto Project: A Four Hands Discussion (video, 2016)
- GNU Autotools: a tutorial (video, 2016)
- Using Yocto Project for module manufacturers (2014)
- Buildroot: a deep dive into the core (2014)
- Introduction to Buildroot (2013)
- Buildroot: a nice, simple and efficient embedded Linux build system (2012)
- Qt for non-graphical applications (2012)
- Using Buildroot for real projects (video, 2011)
Android
Legacy documents
These documents are not actively maintained any more. Therefore, they are likely to contain obsolete parts.
Android
Kernel
- Linux serial drivers
- New features in Linux 2.6 (since 2.6.10)
- Linux PCI drivers
- Block device drivers
- Network device drivers
- USB drivers
- What’s new in Linux 2.6?
Architecture specific documents
Embedded Linux system development
- Accessing hardware from user-space
- Using the POSIX API – Threads, realtime and IPC
- Embedded Linux optimizations
- Porting U-boot to new hardware
- The udev device manager
- The GRUB bootloader
- The blob bootloader
- Introduction to uClinux
- Java in embedded Linux
- Audio in embedded Linux systems
- Multimedia in embedded Linux systems
- The Scratchbox development environment