Embedded System Driver Development


okay ! So, what is Driver development ?

Yes, Let's take wikipedia definition and analyse



DEVICE DRIVER BASICS AND TERMINOLOGY


  1. In computing,

    a device driver is a "computer program" that operates or controls a particular type of device that is attached to a computer or automaton.

  2. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used.
  3. A driver 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 (drives it). Once the device sends data back to the driver, the driver may invoke routines in the original calling program.
  4. Drivers are hardware dependent and operating-system-specific. They usually provide the interrupt handling required for any necessary asynchronous time-dependent hardware interface.

Terminology

Routine

a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.

Call

In computing, a system call (commonly abbreviated to syscall) is the programmatic way in which a computer program requests a service from the kernel of the operating system on which it is executed.


Types of Device drivers


  1. Kernal_mode_device_driver
  2. includes some generic hardware that loads with an operating system-eg.,BIOS, motherboard, processor
  3. User_mode_device_driver
  4. the user needs any plug and play action
  5. Virtual Device Driver
  6. Again, Drivers are hardware dependent and operating-system-specific. They usually provide the interrupt handling required for any necessary asynchronous time-dependent hardware interface.

Device Driver Protocols


In micro-controller application development, especially for peripheral sensor communications, we use some important communication protocols for data transfer which includes
1. SPI
2. I2C
3. uart