Free training materials and conference presentations from Free Electrons, covering kernel, real-time, Android, embedded Linux system and device driver development.
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
About 500 slides, with practical labs
- Linux kernel and driver development course
About 500 slides, with practical labs
- Yocto Project and OpenEmbedded development course
About 250 slides, with practical labs
- Buildroot development course
About 300 slides, with practical labs
- Android system development course
About 400 slides, with practical labs
- Embedded Linux boot time reduction workshop
About 100 slides, with practical labs
Presentations at technical conferences
Here are the most recent versions of presentations we made at technical conferences.
- Linux kernel SoC mainlining: Some success factors (ELCE, Oct. 2015)
- Porting Linux on an ARM board (Captronic seminar in France, Dec. 2015)
220 slides: choosing the hardware, porting the bootloader, porting the Linux kernel, writing device drivers, board bringup tips.
- Supporting multi-function devices in the Linux kernel (video, ELCE, Oct. 2015)
A tour of the mfd, regmap and syscon APIs.
- Kernel maintainership: an oral tradition (video, ELCE, Oct. 2015)
Sharing experience working as maintainer in the Linux kernel
- An overview of the DMAEngine subsystem (video, ELC, Mar. 2015)
Understanding the DMAEngine subsystem in the Linux kernel
- Device Tree as a stable ABI: a fairy tale? (video, ELC, Mar. 2015)
Practical problems caused by trying to keep compatibility with old device trees in the Linux kernel.
- MLC/TLC NAND support: challenges for the MTD/NAND subsystem (video, ELC, Mar. 2015)
Challenges supporting MLC/TLC NAND flash storage in the Linux kernel and proposals.
- Two years of ARM SoC support mainlining: lessons learned (ELC, Apr. 2014)
Experience and advise for supporting ARM SoCs in the mainline Linux kernel
- Supporting a new ARM platform: the Allwinner example (video, Kernel Recipes, Sep. 2014)
Experience from supporting the Allwinner ARM SoCs in the mainline Linux kernel
- The DRM/KMS subsystem from a newbie’s point of view (ELCE, Oct. 2014)
Technical details about how DRM/KMS works and information about how to write a new display driver.
- Device Tree for dummies (video, ELC, Apr. 2014)
Understanding the Device Tree, now required on Linux for ARM.
- SMP bring up on ARM SoCs (ELC, Apr. 2014)
Details about adding SMP support in the Linux kernel for ARM SoCs
- Common clock framework: how to use it (video, ELCE, Oct. 2013)
Understanding the common clock framework in the Linux kernel and how to use it to support new boards and device drivers.
- ARM support in the Linux kernel (video, FOSDEM, Feb. 2013)
Details about support for ARM CPUs and boards in the Linux kernel
- Your new ARM SoC Linux support check-list (ELC, Feb. 2013, video from earlier session)
How to port the Linux kernel on a new ARM SoC.
- IIO, a new subsystem (FOSDEM, Feb. 2012)
Details about the new IIO subsystem in the Linux kernel.
- Tutorial: learning the basics of Buildroot (video, ELCE, Oct. 2015)
Tutorial to get started with Buildroot
- Using Yocto Project for module manufacturers (ELC, Apr. 2014)
Details about creating Yocto Project SDKs to support your own embedded modules
- Buildroot: a deep dive into the core (ELCE, Oct. 2014)
Details about how Buildroot works and advanced usage tips.
- Buildroot – What’s new? (ELC, Apr. 2014)
Highlights about the most recent developments in Buildroot.
- Update on boot time reduction techniques, with figures (ELC, Apr. 2014)
Highlighting a selection of techniques to reduce embedded Linux boot time.
- Introduction to Buildroot (ELC – Technical showcase, Feb. 2013)
Quick facts about Buildroot
- Buildroot: a nice, simple and efficient embedded Linux build system (Libre Software Meeting, Jul. 2012)
Detailed presentation about Buildroot, and how to build your own software with it.
- Qt for non-graphical applications (FOSDEM, Feb. 2012)
Sharing experience using the Qt framework to develop regular applications, taking advantage of its rich API.
- Using Buildroot for real projects (video, ELCE, Oct. 2011)
Buildroot presentation with advice for use in real production projects.
- Embedded Linux introduction (Captronic event, June 2011)
1/2 day seminar about embedded Linux.
- Introduction to Android and system bring-up (Captronic events, 2012)
These documents are not actively maintained any more. Therefore, they are likely to contain obsolete parts.
- 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
- 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
- Embedded Linux From Scratch… in 40 minutes!
- The Scratchbox development environment