Linux Kernel, Board Support and Driver Development training – Online

All you need to know to use make the Linux kernel support your own hardware.

Overview

Michael Opdenacker showing how to run the latest kernels on your Linux distribution. Can be useful for contributing to kernel sources.

Everything you need to know to make the Linux kernel boot on your new embedded board and write drivers for its specific hardware devices. Learn how to describe your hardware with the device tree, and debug the kernel code (written by yourself or by the community).

Also learn how to contribute changes back to the upstream version of Linux, to reduce your own maintenance costs, make support for your hardware ubiquitous and enjoy contributions from the Linux kernel developer community.

Using progressive but challenging practical labs and varied techniques to make the learning always stimulating and fun, and above all to make it stick. At least 75% of the time is dedicated to practical activities. Learn by doing!

Description

TypeOnline
Mix25% theory – 75% practical activities – Learn by doing!
LanguageEnglish
Max participants8
Duration32 hours (8 sessions of 4 hours)
HardwareBeaglePlay board with TI Sitara AM625 SoC (ARM64)
Linux kernel version6.12 (LTS) used in practical labs
PrerequisitesFamiliarity with the Linux command line

Upcoming sessions (in-person and online)

TrainerDatesCostRegister
Michael OpdenackerJun 9-13, Avignon, France
40 hours – 9:00 to 18:00
Seats left
2,990 EUR or 3,190 USD
+ 20% V.A.T. 3
Join now button
Michael OpdenackerJul 15-18, 22-25, online
15:00 to 19:00 UTC+2
Seats left
2,490 EUR or 2,690 USD 1, 2Join now button

1 Individuals (all countries, not paying through a company) are subject to + 20% V.A.T. However, we offer a discount on the base cost to cancel the impact of V.A.T. and keep the same total price.
2 Only for French companies: + 20% V.A.T.
3 + 20% V.A.T. is mandatory for everyone attending a public course in France. See 1 for individuals.

Available discounts

The below discounts can be combined, up to a limit of 400 EUR / 440 EUR per participant.

  • 200 EUR / 220 USD returning participant discount for any extra course taken by the same participant at most 12 months after another one.
  • 200 EUR / 220 USD early bird discount for any registration at least 2 months before the session dates.
  • 200 EUR / 220 USD extra participant discount for each participant from the same entity (same invoicing address) in addition to the first one.

If V.A.T. is applicable, it applies to the amounts before V.A.T.

Agenda

Part 1: Configuring, building, booting and kernel modules

  • Demo: Build a Linux kernel for a different board and boot it.
  • Big picture: bootloader, kernel and user-space.
  • Get a cross-compiling toolchain.
  • Retrieve Linux kernel sources. Understand the Linux release process and choose a version for your project.
  • Configure the Linux kernel. Guided tour of most interesting options.
  • Cross-compile the kernel. Speed up this build.
  • Boot the kernel from the bootloader. Device Tree and kernel command line
  • Kernel coding constraints. Writing a kernel module.

Part 2: Device model – Bus, drivers and devices

  • How the kernel abstracts and binds busses, devices and drivers.
  • Case of busses supporting device enumeration: USB and PCI
  • Platform devices and drivers.
  • Device Tree: how to describe hardware that cannot be detected.
  • Example: the I2C bus.
  • Pin multiplexing.
  • Writing an I2C device driver – Exchange your first bytes with the hardware.
  • Device tree validation

Part 3: Kernel frameworks, memory and I/O

  • Character driver operations: read, write, ioctl(). Exchanging data with user-space.
  • Kernel frameworks: abstracting devices in user-space.
  • Example: the input subsystem.
  • Completing the I2C driver: exposing device data to userspace.
  • Kernel memory allocation – Understanding memory usage statistics.
  • Reserving and mapping I/O memory (registers).
  • Application: write data to board serial ports.

Part 4: Interrupts, deferring work, locking

  • Application: allow user space to write to serial ports.
  • Processes and scheduling. Waiting for a condition.
  • Support for interrupts to process hardware events.
  • Application: read data received on the serial ports.
  • Managing concurrency issues. Lock based and lock-less primitives. Debugging locks.
  • Torture the serial driver using full kernel preemption. Expose bugs due to concurrency issues and fix them through locking.
  • Direct Memory Access (DMA): illustration on a network driver

Part 5: Board support, debugging, testing and contribution

  • How to support a new board. How SoCs are supported.
  • Available techniques for kernel debugging.
  • Debug and fix a broken kernel driver with multiple issues.
  • Kernel testing.
  • Performance analysis with perf and ftrace.
  • Kernel development best practices: error handling, coding conventions, using the checkpatch.pl script.
  • Locate specific issue by bisecting kernel code.
  • How to contribute to the upstream Linux kernel.
  • Add your name to kernel history by submitting your first patch(es).
  • Getting involved: ideas for kernel contribution.
  • Conferences and useful resources.
  • Q&A session.
BeaglePlay with Adafruit Gamepad

What’s special in our online courses

Real labs, not just demos: unlike in some other offerings, each participant has time to do the practical labs during the course hours, with support from the trainer. The number of participants is limited to 8 to make sure that the instructor has enough time to support everyone.

Daily slots are just 4 hours long, allowing to continue working on regular projects, and to finish the labs with support from the trainer. We provide a Matrix channel to get support outside official hours, and even after the course is over. The timing also allows for participants from North America.

Video recordings of the lectures from the trainer are provided. This can come in handy to review the details of a particular topic after the course. Note that these videos are for your own use only, and that participants won’t be recorded for privacy reasons.

Majority of practical activities, representing at least 75% of learning time.

Short lectures only: sequences of theory never exceed 30 minutes, and are interleaved with quick or longer practice. Too long series of lectures are hard to digest, especially in an online setting.

Technical and teaching experience: courses taught by an industry veteran with more than 20 years of experience in embedded Linux and 30 years using and advocating for Free and Open Source Software.

See also: Why choose Root Commit courses?

Practical details

Registration

To register to one of our sessions (in-person or on-line), please send us an e-mail mentioning:

  • Which session(s) you are interested in
  • The name(s) of people to register
  • Your company name (unless paying by yourself)
  • An invoicing address
  • An EU VAT number (if working for a company in the European Union)

If you have more than 4 people to register, you may consider ordering an on-site, in-person training session. Just ask us.

Required hardware

PC running Linux

For this session, you will need a laptop computer running a native installation of Linux, with one of the distributions currently supported by the Yocto Project. This way, you can practice with your preferred distribution, as you would do in your real job. We suggest Ubuntu 24.04 if you don’t have any preference yet.

If you haven’t installed Linux on your laptop yet, most Linux distributions will allow you to install Linux alongside Windows, after making enough free space. Note that we don’t support the use of Virtual Machines (to run Linux from inside another operating system), as from our experience, connecting the Linux VM to the board and other devices is an endless source of distractions. Using VMs also causes a substantial loss of compiling performance.

This laptop should have at least 8 GB of RAM, a CPU with at least 4 physical cores and at least 50 GB of free disk space (100 GB for the Yocto course). It should also be equipped with a micro-SD card reader (internal or external).

The PC should also be equipped with a webcam a microphone. Another possibility would be to connect to the video-conference through another device, like another computer, a smartphone or tablet, while you are running your practical labs on the Linux PC. However, the Linux PC should work better for sharing your screen or screenshots with the instructor.

electronic board and accessories

You will need to get your hands on the BeaglePlay ARM64 board and a few accessories.

Note that those are provided by Root Commit for in-person sessions.

What is provided?

In-person public sessionsIn-person private sessionsOnline public sessions
Electronic board and all its required accessories, for the duration of the course
Lunch, morning and afternoon breaks
Electronic copies of the lecture and practical lab materials.
Solutions to practical labs
Video recordings of the lectures from the trainer.
Electronic training certificate, after successful completion of the course, which can be shared on your LinkedIn profile and on other social media.

FAQ

Q: Will I get solutions to the practical labs?
A: Yes, C code and Device Tree solutions are shared at the end of each lab.

See also our FAQ for all types of courses and our sustainability efforts.