Design of Device Drivers for Embedded Systems
|
|
|
| |
|
|
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.
INSTRUCTOR: Dr. David Kalinsky
Dr David Kalinsky has more than thirty years of experience in the design and construction of real-time and embedded
computer systems software. He is a popular lecturer and seminar leader on technologies for embedded software
development, appearing before audiences of professional engineers in North America, Europe and Israel. David
regularly presents classes at the Embedded Systems Conferences on topics such as "Architectural Design of Device
Drivers" and "Principles of High Availability Embedded Systems Design".
He has built and managed high-tech training programs on aspects of software engineering for the development of
real-time and embedded systems for a number of Silicon Valley companies. He has also been involved in the design
of many embedded medical and aerospace systems. In addition, he has in the past developed and taught training
courses on a number of major real-time operating systems (RTOSs), including VRTX, pSOS, VxWorks, OSEK / VDX,
Nucleus, OSE and others. With his broad experience, he has trained thousands of embedded systems software
engineers and architectural designers throughout the world.
For more details, please contact us:
enquiry@omniscient-intl.com
Tel: +65 68930233
|