Linux Device Driver Programming

Training Summary
Perhaps the most challenging job for a Linux programmer is to write a device driver, for it requires not only a strong C programming background, but also intimate knowledge of some aspects of the Linux kernel as well as a familiarity with the characteristics of the hardware for which the device driver is to be written. This hands-on course provides detailed information of the workings of the Linux kernel that are essential to support device drivers, such as file system structures, memory management, timing functions and kernel building and debugging. It also helps the participant in understanding those aspects of various hardware devices that come in to play with the device drivers, such as interrupt handling for both block and character devices. There are many lab exercises that reinforce the learning experience. This course also provides a brief explanation of Linux network device drivers. It is assumed that the participant already possesses the programming skills.There is vast amount of open information about the Linux operating system. This course helps the participant locate information about device drivers for unique or unusual device types. While this course focuses on devices for the PC environment, the basic knowledge gained is essential for writing device drivers for any hardware platform. This course focuses on the Linux kernel at version 2.6.
Students should have moderate to strong C programming skills and having attended Linux Internals Overview. This course also assumes that the participant is comfortable programming in the Linux environment and is skilled at navigating the Linux hierarchical directory structure and using a text editor such as vi or emacs.
5 Days/Lecture & Lab
This course is designed for system programmers who require the skills needed to write device drivers for the Linux operating system.
Course Topics
  • A Review of the Linux Kernel
  • Creating Linux Modules
  • Creating a Character Device Driver
  • Managing Hardware Resources
  • Programming with ioctl( )
  • Cross Memory Copying
  • Utilities for Linux Device Drivers
  • Interrupt Handling
  • Mapped I/O
  • Creating a Block Device Driver
  • Kobjects

Related Scheduled Courses