Linux Kernel Driver Development

Start date: 31 January 2022

Duration: 7 days, January 31, February 1, 2, 3, 4, 7, 8, 2022, 12:30 to 16:30

Location: Online

Certificate: N/A

Cost: Members € 500; Non-members € 750

Course code: N/A

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.

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.

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.


• 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

Grégory Clement is an embedded Linux, kernel and realtime engineer at Bootlin, which he joined in 2010. Gregory started using GNU / Linux in 1998. Since 2002, he has acquired vast on the field experience in porting and operating embedded Linux, in particular for industrial and transportation customers.

Grégory performed multiple training sessions of our Embedded Linux kernel and driver development course.

As a trainer, Grégory is always keen to ensure that everyone gets the best of their practical labs, and always gets very good evaluations from participants.

Grégory Clement’s profile is available at:

Email for bookings and queries