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 paricipant 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.
NOTE - While this course focuses on the Linux kernel at version 2.6, comparisons to the older 2.4 kernel are provided.
System programmers who require the skills needed to write device drivers for the Linux operating system.
Upon successful completion of this course, the student will be able to:
- Write device drivers for character and block devices in the Linux operating system.
- Have a basic understanding of Linux network device drivers.
LI-1020 Linux Internals Overview. Moderate to strong C programming skills and a working familiarity with the Linux kernel. This course also assumes that the participant is comfortable programming in the Unix environment and is skilled at navigating the Unix hierarchical
directory structure and using a Unix text editor such as vi or emacs.