page header

course: Linux Device Drivers

This course is specific to the Linux system

Devices

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.

Sample course material

We are proud to present a sample chapter from the course handouts, in PDF-format. This material is a proprietary AT Computing development.

Target audience

  • This course is intended for experienced (system) programmers who have to design, develop and maintain device drivers for Linux.

Objectives

This course provides a theoretical overview of the structure of device drivers, in-depth information about the interface between the device driver and the rest of the Linux kernel, and various practical exercises to develop and test device drivers in a Linux environment.

The specific hardware details of devices can be obtained from the documents of the hardware manufacturer.

Prerequisite knowledge

Student must be fluent in C programming. Furthermore, a general understanding of Linux system programming is preferred.

Technical content of the course

The course will cover:

  • Recapitulation of kernel mechanisms.
  • General function of the device driver: Types of device drivers, physical I/O, major and minor numbers. Loadable versus static drivers.
  • Device driver types: Character drivers, block drivers and network drivers.
  • General mechanisms: Sleep and wakeup (wait queues). Buffer allocation. Timer handling. Interrupt handling.
  • Configuration and initialization: Error logging, debugging, the /proc and /dev filesystems.
  • 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.
  • Network drivers: Packet management, socket handling.

Documentation

Course attendees receive the following documentation:
  • The text book "Linux Device Drivers" (Rubini, Corbett, Kroah-Hartman) of the O'Reilly series.
  • A practice book containing copies of the presentaties, a 100 page extract from the O'Reilly book, sample driver texts, exercises, answers to the exercises, and background information.
  • A copy of the "Linux Device Driver Development Kit" CD-ROM (by Greg Kroah-Hartman).

Certificate

Shortly after the course the student will receive a certificate as a proof of participation.

Duration and cost

This is a three day course.

The price is € 1.390 plus 19% VAT in 2008. The price is € 1.495 plus 19% VAT in 2009.

Scheduled dates

This course is part of our regular programme, and scheduled once or twice yearly. The course material is in English, and the teaching language will be English unless the attendants prefer the Dutch language unanimously.

Currently scheduled dates are: December 10, 11, 12 2008 in our location in Utrecht.

Valid XHTML 1.0 Strict   Valid CSS2   Best viewed with any browser