Axian Software Consulting and Training

Linux Device Drivers

 

Custom Classes:

Axian specializes in customizing our classes to meet your specific needs.  Please call or e-mail us with your requirements.

Axian, Inc.

4800 S.W. Griffth Dr., Suite 202, Beaverton, OR 97005

Phone: (503) 644-6106

Fax: (503) 643-8425

info@axian.com

www.axian.com


Call 644-6106, ext. 107

or

e-mail Axian training

for course registration or more information


Course Files and Links:

 

 

 


COURSE OBJECTIVES

Linux Device Drivers is designed to teach experienced programmers how to develop device drivers for Linux systems. Upon completion of the course, students will understand the Linux architecture, hardware and memory management, modularization, and the layout of the kernel source.

Students will learn:

  • An Introduction to the Linux Kernel
  • Building and Running Modules
  • Character and Block Drivers
  • Debugging Techniques
  • Hardware Management
  • Interrupt Handling
  • Judicious Use of Data Types
  • Kerneld and Advanced Modularization
  • Network Drivers
  • Physical Layout of the Kernel Source

TEXTS

  • Linux Device Drivers by Allesandro Rubini; published by O’Reilly

INSTRUCTIONAL APPROACH

This course will be taught in a classroom with computers available installed with the Red Hat 5.2 Linux distribution. The emphasis will be on hands-on programming, with the time divided between lecture and workshops.

The class is divided into 16 sessions. The lectures are intended to be interactive and will include review of the lab assignments. The sessions range are presented over a period of 4 days.

PREREQUISITES


LINUX DEVICE DRIVERS

Course Outline


  • SESSION 1: AN INTRODUCTION TO THE LINUX KERNEL
    Topics:
    • The Role of Driver Drivers and How They Fit in Linux
    • Structure of the Kernel
    • Classes of Devices and Modules
    • Security Issues

  • SESSION 2: PHYSICAL LAYOUT OF THE KERNEL SOURCE
    Topics:
    • Directory Structure
    • Networking, Drivers and Architecture Dependencies

  • SESSION 3: BUILDING AND RUNNING MODULES
    Topics:
    • Booting the Kernel
    • Before Booting
    • The Init Process
    • Compiling and Loading
    • Initialization and Shutdown
    • Automatic and Manual Configuration

  • SESSION 4: CHARACTER AND BLOCK DRIVERS
    Topics:
    • Major and Minor Numbers
    • File Operations
    • The file structure

  • SESSION 5: ENHANCED CHARACTER DRIVERS IN DETAIL
    Topics:
    • Ioctl
    • Blocking I/O
    • Seeking a Device

  • SESSION 6: DEBUGGING TECHNIQUES
  • Topics:

    • Printing
    • Querying
    • Watching
    • System Faults
    • Using a Debugger

  • SESSION 7: TIME MANAGEMENT IN THE KERNEL
    Topics:
    • Task Queues
    • Kernel Timers

  • SESSION 8: MEMORY MANAGEMENT
    Topics:
    • Kmalloc
    • get-free-page and Friends
    • Direct Memory Access

  • SESSION 9: HARDWARE MANAGEMENT
    Topics:
    • Accessing Memory on Device Boards
    • Using I/O Ports

  • SESSION 10: INTERRUPT HANDLING
    Topics:
    • Interrupt-Driven I/O
    • Implementing a Handler

  • SESSION 11: LOADING MODULES ON DEMAND
    Topics:
    • Version Control in Modules
    • Persistent Storage Across Unload/Load

  • SESSION 12: BLOCK DRIVERS Part 2
    Topics:
    • Registering the Driver
    • The Header File blk.h
    • Handling Requests
    • Removable Devices
    • Partitionable Devices
    • Interrupt-Driven Block Drivers

  • SESSION 13: THE STREAMS MECHANISM
    Topics:
    • Structure of streams
    • Queuing messages
    • Delayed processing

  • SESSION 14:  NETWORK DRIVERS
    Topics:
    • The device Structure in Detail
    • Packet Transmission and Reception
    • The Socket Buffers
    • Load-Time Configuration

  • SESSION 15:  OVERVIEW OF PERIPHERAL BUSES
    Topics:
    • The PCI Interface
    • A Look Back: ISA
    • Other PC Buses
    • Sbus

  • SESSION 16: MOVING FROM 32 BIT TO 64 BIT SYSTEMS
    Topics:
    • ILP32 to LP64
    • 64 Bit OS with 32 Bit Cards

LINUX DEVICE DRIVERS

(c) COPYRIGHT AXIAN, INC. 1999