Embedded Linux kernel and driver development training

During the COVID-19 confinement measures, see our public and dedicated online training sessions.

Get familiar with device driver development for the Linux kernel

Course details

Contact: training@bootlin.com, phone: +33 484 258 097.

Public online sessions

Type Dates Time Duration Expected
trainer
Cost and registration
Linux kernel (agenda) Apr. 6, 7, 9, 14, 20, 21, 23 14:00 – 18:00 (Paris time) 28 h Grégory Clement 1090 EUR + VAT* + fees

See details about our online sessions.

* VAT: we should be able to grant VAT refunds for participants who are registered by businesses, provided we are given all the details we need for VAT exemption.

Dedicated online sessions

We can also propose dedicated online sessions. This way, you can choose the dates and times that best suit the needs and availabilities of your teams.

Public sessions

Dates Location Expected
trainer
Oral
language
Cost
(VAT not included)
Seats
available
Sep. 7-11, 2020 Avignon, France Michael Opdenacker English 2090 EUR Yes
Groups: ask us for a session on your own site
Individual: what other locations and dates would interest you?

On-site sessions

We can also send a trainer to train your engineers at your own location, anywhere in the world (we have taught classes on all continents). See how to register.

Objectives and target audience

This course targets engineers who wish to develop or improve device drivers in the Linux kernel, for projects on embedded platforms, or on the traditional PC platform. In five days, through theory and practical labs, the course makes you familiar with the essentials of kernel development: kernel architecture, the main APIs, integration of device drivers with other parts of the kernel and with user applications.

At the end of this course, you will be ready to work on Linux device driver development projects.

Outline

Here are the main topics that we cover:

  • training desktopIntroduction to the Linux kernel
  • Kernel source code
  • Configuring, compiling and booting the kernel
  • Linux kernel modules
  • Memory management and accessing hardware
  • Character device drivers
  • Processes, scheduling, waiting for resources and interrupt management
  • Locking
  • Kernel debugging techniques
  • mmap
  • Using DMA
  • Kernel architecture for device drivers. Illustration by many examples in the kernel code.
  • Kernel booting details
  • Porting the Linux kernel to a new hardware platform
  • Power management
  • Working with the community
  • Managing sources with git.

See the detailed agenda.

Training materials

All the training materials we use during this course are freely available. Before the session, you can then check that they correspond to your needs.

Practical labs

BeagleBone Black boardEach lecture in our course is followed by a practical implementation, representing 50% to 60% of the whole course time.

Labs are performed an embedded ARM board (BeagleBone Black). You will get familiar with the generic mechanisms and interfaces provided by the Linux kernel, through the implementation of device drivers for an I2C device (Nintendo Wii Nunchuk in our labs) and for the serial ports of the TI AM 335x CPU. This experience will help you to implement device drivers for any type of devices.

Prerequisites

Participants need to be familiar with the UNIX or Linux command line interface. Those who aren’t are asked to do some self training on the topic, for example by using our training materials. This way, they won’t waste time during practical labs because of issues using the operating system environment.

Participants must also have solid experience in programming in the C language. In particular, they must be familiar with creating and dealing with complex data types and structures, with pointers to such symbols, as well as with function pointers.

If you develop on embedded hardware and lack experience in embedded Linux development, we also recommend to take our Embedded Linux course first. This is not a prerequiste as you will be given all the instructions to operate your embedded Linux system, but it will help you to understand the environment you are using, allowing you to concentrate on kernel programming. In addition, you will need embedded Linux knowledge anyway if you are involved in the development of drivers for embedded products.

Customer feedback


The training has been very helpful in getting up to speed and getting hands-on experience with Linux Kernel development in general and Linux Driver development in particular. We found that the instructor was very knowledgeable and helpful when diving in to the lab sessions and when we were asking specific questions about problems that we have been facing in our own development tasks.

Steen Hegelund – Microchip Technology Inc


Bootlin has proven time and again that their expertise in Linux trainings is unparalleled. Not only were the already existing trainings invaluable for training of our personnel, but they were also willing to adapt and reintroduce new trainings, custom tailored for our needs.

Nikola Jelić – Zuehlke Engineering

By the way, you can also see evaluations from previous sessions. In the same way we are transparent with our training materials, we share all the evaluations that we collect, not only the best ones.

Further details about our courses