Design of Device Drivers for Embedded Systems
Duration: 2 days
Number of participants: recommended optimum 15, maximum 25
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. 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.
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”.
The course is based on lectures, discussions, design examples, exercises.