We teach what we know ... Software!
303.377.6176
Linux Driver Writing Training

Course Description  
This course provides a general introduction to Linux device driver development. Students gain a clear practical understanding of the way drivers are designed, interfaced with the kernel, implemented, and tested.

Course Length: 3 Days
Course Tuition: $990 (US)
Prerequisites
Linux Internals is recommended. Strong C programming skills and intermediate knowledge of UNIX/Linux shell commands are required. Experience with the data structures and basic functions used in the Linux kernel is necessary. Proficiency at configuring and installing a new Linux kernel on a system is assumed.
Course Outline  

Introduction to Linux Driver Development
Introduction and environmental setup
Kernel versions and compatibility
Components of the Kernel
Aims of driver development
Steps associated with the development of a driver
How device drivers work
Stability and security issues

Device Drivers
Elements of a driver
Benefits and drawbacks
Classes of drivers

Linux Kernel Facilities
System calls
Data structures
Functions

Modules
Benefits of using modules
Module-related tools
Compiling, loading, and unloading
Module implementation
Automatic module loading

Character Devices
Accessing the device
File and inode structure
File operations
Reading and writing
IOCTLs
Example of a character device

Hardware Aspects
Accessing memory
Direct Memory Access
I/O Management
PCI and ISA

Block Drivers
Registration
The blk.h header
Requests and Mounting
 Networks
Layer model
Network communications
Implementation of the TCP/IP stack
Data structures
Socket
sk_buff
Inet socket
proto
ARP and IP Protocols
IP Filters
UDP and TCP

Network Devices
Integration in the kernel
Ethernet Devices
SLIP and PPP
Loopback
Dummy devices
Loading network drivers
Transmitting and receiving packets
Device configuration
Statistics

SCSI Subsystem
Architecture overview
Names and conventions
Upper level
Block devices (hard disks, CD-ROM)
Character devices (Tape)
Generic drivers
Mid level (boot parameters, proc interface)
Lower (hardware) level and pseudo drivers

Device Drivers Debugging
Printing with printk
Queries
/proc entries
Tracing and debuggers

Contact us for course schedules or more information.


Let's Have Fun

Training can be conducted in a number of different ways outside of a classroom setting. To that end, we offer some free on line tutorials which we will update extensively in the very near future. We also offer mentoring services to help design, integrate and develop large scale complicated systems.
Some of the places where we have taught >>
  • New York City
  • Los Angeles, California
  • Chicago, Illinois
  • Houston, Texas
  • Philadelphia, Pennsylvania
  • Pittsburgh, Pennsylvania
  • Phoenix, Arizona
  • San Antonio, Texas
  • San Diego, California
  • Dallas, Texas
  • San Jose California
  • Buffalo, New York
  • Toronto, Canada
  • Montreal, Canada
  • Detroit, Michigan
  • Indianapolis, Indiana
  • Jacksonville, Florida
  • San Francisco, California
  • Columbus, Ohio
  • Austin, Texas
  • Memphis, Tennessee
  • Baltimore, Maryland
  • Fort Worth, Texas
  • Charlotte, North Carolina
  • El Paso, Texas
  • Milwaukee, Wisconsin
  • Seattle, Washington
  • Boston, Massachusetts
  • Denver, Colorado
  • Louisville, Kentucky
  • Washington DC
  • Nashville, Tennessee
  • Las Vegas, Nevada
  • Portland, Oregon
  • Oklahoma City, Oklahoma
  • Tucson, Arizona
  • Albuquerque, New Mexico
  • Long Beach, California
  • Atlanta, Georgia
  • Fresno, California
  • Sacramento, California
  • New Orleans, Louisiana
  • Cleveland, Ohio
  • Kansas City, Kansas
  • Boulder, Colorado
  • Virginia Beach, Virginia
  • Omaha, Nebraska
  • Oakland, California
  • Miami, Florida
  • Tulsa, Oklahoma
  • Honolulu, Hawaii
  • Minneapolis, Minnesota
  • Colorado Springs, Colorado
©2012 The Hartmann Software Group, Independence Plaza, B-180 1001 16th Street, Denver, Colorado 80265