http://www.omniscient-intl.com/devicedriver.html

Course Highlights:
This course examines the design of Device Drivers for embedded applications. It deals with issues important to engineers who need to structure and write drivers for input, output and network interfacing hardware devices.  Rather than focusing on the device driver requirements for a specific real-time operating system (RTOS), this course examines features and design similarities that are shared by device drivers in a variety of environments including those without an RTOS.

The course begins with a presentation of the basic structure of device drivers and device I/O supervisors.  This is followed by an in-depth discussion of fundamental issues in the design of device driver software or firmware, such as mutual exclusion, and synchronous vs. asynchronous execution. High-level design of device drivers is presented with emphasis on tailoring the structure of the driver to the characteristics of specific hardware devices and the nature of the data they carry. Interrupts, exception handling and DMA are discussed in detail.

Objective of the course
The primary goal of this course is to provide the participant with the knowledge and skills needed to design and develop device drivers for use with custom application specific hardware.  This is a very practical, results-oriented course that will provide knowledge and skills that can be applied immediately. This course covers the concepts and principles shared by device drivers in a wide variety of environments.

Who Should Attend:
This course is intended for real-time software development engineers, software system architects, project managers, and technical consultants who have the responsibility for designing and implementing  device driver software for real- time and embedded systems running on custom hardware containing application-specific I/O and network interfaces.
While the class will be most useful for engineers who need to design and code device drivers, it will also be very helpful for application software engineers who want to have a better understanding of underlying firmware and how it relates to their application software.

Course participants are expected to have a thorough familiarity with the C programming language and some software- hardware interface programming experience. Knowledge of at least one real-time operating system (RTOS) kernel is recommended. [This knowledge can also be gained by attending one of the prerequisite introductory courses "Introduction to Embedded Systems and Software" or "Introduction to Real-Time Operating Systems".]


Course Outline:

Device I/O Driver Design -  Basic Issues

What is a Device Driver ?
Low-Level "Bit-Bashing" Code ?
Device Driver API Design
Device I/O Supervisors
Mutual Exclusion Requirements
Synchronous vs. Asynchronous Drivers

Device Driver Interactions with Operating Systems

Quick Review: What you Get in an RTOS, and What you Don't Get
Mutual Exclusion Options: Semaphores, Mutexes, ...
Message Queueing for Device Drivers
Driver Memory Buffer Management

Some Device Driver Design Models

Synchronous Driver Models
Asynchronous Input Driver Models
Asynchronous Output Driver Models
Input Data Spoolers
Zero-Copy Spoolers
Output Data Spoolers: "Priming the Pump"

Device Interrupt Handling

Overview of Interrupts and Exceptions
Interrupts and Exceptions – Who Deals with What? (RTOS, Driver, Application)
DMA: Direct Memory Access

Detailed Design Extended Examples

Example: Synchronous Driver for Interrupt-Driven Input Device
Example: Printer Spooler Driver - Detailed Design

Device Driver Performance Analysis

Interrupt Latency
Basic Queueing Theory for Device Driver Developers
Queue Length and Delay Calculations for Sporadic Devices
Example: Printer Spooler Queue Length and Delay Calculations
Driver Responsiveness: Performance Analysis for Periodic and Sporadic Device Drivers

Final Examination.

Reply via email to