In computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device. Device drivers take on a special role in the Linux kernel. They are distinct “black boxes” that make a particular piece of hardware respond to a well-defined internal programming interface; they hide completely the details of how the device works. User activities are performed by means of a set of standardized calls that are independent of the specific driver; mapping those calls to device-specific operations that act on real hardware is then the role of the device driver. This programming interface is such that drivers can be built separately from the rest of the kernel and “plugged in” at runtime when needed. This modularity makes Linux drivers easy to write, to the point that there are now hundreds of them available.
A driver typically communicates with the device through the computer bus or communications subsystem to which the hardware connects. When a calling program invokes a routine in the driver, the driver issues commands to the device. Once the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardware-dependent and operating-system-specific. They usually provide the interrupt handling required for any necessary asynchronous time-dependent hardware interface.
Device drivers literally drive everything you're interested in--disks, monitors, keyboards, modems--everything outside the computer chip and memory. And writing device drivers is one of the few areas of programming for the Linux operating system that calls for unique, Linux-specific knowledge. For years now, programmers have faced great challenge, in understanding the details of the devices for writing drivers. We provides all the information you'll need to write drivers for a wide range of devices.
Today Linux holds fast and the most rapidly growing segment of the computer market and continues to win over enthusiastic adherents in many application areas. With this increasing support, Linux is now absolutely mainstream, and viewed as a solid platform for embedded systems.
This course is designed to ensure that students of Engineering College with academic capabilities will have the skill set needed to deal with the challenges involved in real-world Embedded Technologies and device design to meet the needs of industries both today and in the future.
The course considers programming and device design techniques which can help to ensure that single-processor embedded systems are reliable.
We cover all the significant changes to Version 2.6 of the Linux kernel, which simplifies many activities, and contains subtle new features that can make a driver both more efficient and more flexible. Trainees will find new topics on important types of drivers not covered othrwise.
The course is taught mainly using the C programming language, System C, hardware design, drivers develpoed on Linux, and a PC emulated as an embedded device.
All you need is an understanding of the C programming language and some background in Unix system calls. And for maximum ease-of-use, the book uses full-featured examples that you can compile and run without special hardware.General understanding about Microprocessors, Operating System Concepts and C Programming Language is assumed.
Training Content: (any three of the below device drivers)
EmbLogic is an ISO 9001:2008(QMS) (Quality Management System) Certified Company