It requires certain precautions to connect new device hardware to a Linux machine. Apart from the required hardware interfaces, additional code must be added to the Linux kernel to interface between the hardware and the generic kernel routines of the I/O-subsystem. In order to write a device driver detailed knowledge is required of the internal concepts of certain parts of the Linux kernel, of the way the Linux kernel communicates with the device driver (and vice versa) and of the way a device driver handles the physical device. In addition, experience is needed with various types of device drivers and the way a new device driver can be loaded into the kernel.
A step by step construction of an actual device driver is part of the course, adding features as their theoretical coverage progresses.
The specific details of USB drivers are a separate topic in this course.
Course attendees receive the following documentation:
- A practice book containing copies of the presentations, sample driver texts, exercises, answers to the exercises, and background information. In addition, the course documentation of the Linux Foundation course LFD430 is part of the handouts.
- Shortly after the course the student will receive a certificate as a proof of participation
- This course teaches the design and construction of a device driver for Linux systems. In-depth information about the interface between the device driver and the rest of the Linux kernel is an important part of the course.
This course is intended for experienced (system) programmers who have to design, develop and maintain device drivers for Linux.
Onderstaande voorkennis is vereist:
Students must be fluent in C programming. Furthermore, a general understanding of Linux system programming is preferred.
The specific hardware details of devices must be obtained from the documents of the hardware manufacturer.
Block and network drivers are extensively covered in the course handouts, but experience shows that students prefer character drivers to take up all course hours. Please contact us in time before the course if block and/or network drivers are important to you.
- Recapitulation of kernel mechanisms.
- General functionality of a driver: different types of drivers, physical I/O, major and minor numbers. Loadable versus static drivers.
- Driver entry points: character, block, network.
- General mechanisms: Sleep and wakeup (wait queues). Buffer allocation. Timer handling. Interrupt handling.
- Configuration and initialization: Error logging, debugging, the /sys and /dev file systems.
- Character drivers: Data transport between user mode and kernel mode, error codes, the ioctl interface.
- Block drivers: Buffer management, mount and unmount, request queues and the request-routine, interrupt and start routines.
- USB drivers: the USB-skeleton driver dissected, probe, release, including an extensive lab exercise using a hardware board available to each student in the class-room.
- De cursus Linux / UNIX deel 1
- De cursus Linux / UNIX deel 2
- De cursus Kubernetes Fundamentals (English course)
- De cursus Linux applicatiebeheer
- De cursus Linux / UNIX part 1 (English course)
- De cursus Linux / UNIX part 2 (English course)
- De cursus Kubernetes Fundamentals – CKA extension (English course)
- De cursus Linux systeembeheer
- De cursus Linux performance analysis and tuning (English course)
- De cursus Certified Kubernetes Administrator (CKA) examenvoucher