HOME
   PRODUCTS  TRAINING    SERVICES  SOLUTIONS         CAREERS      COMPANY   
    Home / Training / Operating Systems / U304    
 
 

U304

 

U304: Linux Device Driver Programming - 3 Days

 

Who Should Attend:
System programmers, software engineers, system administrators, hardware engineers, and computer science students who are either involved in writing device driver code or who need to understand the working of a device driver in order to support the related hardware.

 

Prerequisites:
Participants are expected to at least have some working knowledge of Linux and preferably some knowledge of Linux system programming. Some prerequisites may be acquired by attending U101: Introduction To Linux, U201: Advanced Linux Workshop, and U306: Linux System and Network Programming.

 

Objectives:
This module is directed at individuals who need to write device drivers for various devices connected to the Linux operating systems. Through working examples, the issues related to the design and implementation of these important components of application programs are explained. Source code listings of device drivers will be handed out during the module.

 

Additional topics include: the interface between device driver and hardware; problems of concurrency; device driver interface with the kernel and hardware; examples of device drivers such as character drivers, block drivers, terminal drivers, and STREAMS drivers; and kernel configuration to install a new driver.

At the end of this module, participants should be familiar with writing device drivers for the Linux operating system, particularly for Linux and Solaris.

 

Contents:

Objectives: Types of Device Drivers; Device Driver Models; Block Device Drivers; Line Disciplines and Serial Drivers; STREAMS drivers.

 

Hardware Background: Hardware Basics; Device Registers; Device Interrupts; Data Transfer Mechanisms; Buses; Data Path and DMA; ISA/EISA/PCI and Autoconfiguration.

 

Building Linux Device Drivers: Modules versus Applications; Kernel Symbol Table; Error Handling; Usage Count; Automatic versus Manual Configuration.

 

Character Drivers: Characteristics of character devices; Major and Minor Numbers; Initialization and Cleanup; Read/Write Operations; Implementing lseek and ioctl.

 

Block Device Drivers: Characteristics of block devices; Blocking and Unblocking Data; Free and Busy List; Buffer Cache; Reading and Writing Data.

 

Timing and Memory Management: Time Intervals; Telling Current Time; Delaying Execution; Task Queues; Kernel Timers; Memory Management; Virtual Memory Allocation.

 

Hardware Management: Using I/O Ports; Parallel Port Example; Interrupt Handling; Installing Interrupt Handler; Probing for Interrupt Handler; Implementing Interrupt Handlers; Enabling and Disabling Interrupts; Race Conditions; Using Lock Variables; Bit Operations.

--------