Linux Kernel Driver Development

Start date: TBC

Location: Virtual

Cost: 650E

Programme overview

This online course is an introduction to the development of device drivers in the Linux kernel. It introduces how to configure and build the Linux kernel for an embedded platform, and then dives into the world of Linux kernel driver development: kernel modules, device model, Device Tree, interacting with hardware through various busses, exposing the functionality of device drivers to Linux applications, memory management, interrupt handling, Linux kernel debugging, and more.

The course is structured around the development of two real and fully functionality Linux kernel drivers, which will be developed step by step, from scratch.

Trainees can opt to follow lab demonstrations done by the tutor or to order the demo board and replicate the labs themselves. There will be an optional extra day's session of 4 hours on 3 Dec, 1pm-5pm, depending on the number of questions and if help is required by any participants who opt to order the demo board and to do the practical labs themselves.

Who is the course for?

This course is intended at engineers who already have some experience in using Linux on embedded systems, but little to no Linux kernel driver development experience.

Learning Outcomes

At the end of this course, participants will be able to develop simple Linux kernel drivers, and will have reached a sufficient level of automony to start understanding more complex Linux kernel driver subsystems.


• Introduction to the Linux kernel
• Kernel source code
• Configuring, compiling and booting the kernel
• Linux kernel modules
• Device Tree
• Linux Device model and bus subsystems
• Character device drivers
• Linux driver subsystems
• Memory management and memory-mapped hardware
• Processes, scheduling, waiting for resources and interrupt management
• Locking
• Kernel debugging techniques
• Supporting a new hardware platform
• Power management
• Development and contribution process

Trainer Profile

Thomas Petazzoni joined Bootlin in 2008, became its CTO in 2013, and a co-owner in 2021. Thomas has been working on Linux system development since 2004, and has been teaching Bootlin training courses since 2008. Thomas has initially authored the Linux kernel driver development and Buildroot system development courses at Bootlin.

Thomas has contributed 900+ patches to the official Linux kernel, mainly around device drivers for ARM platforms.

In addition, Thomas is a co-maintainer of the Buildroot project, an open-source tool to build embedded Linux systems.

Thomas Petazzoni’s profile is available at:

To register your interest in this course or to make an enquiry please click below

Enquire Now