A device driver is a hides the details of a particular peripheral and provides a slightly high-level programming interface to it. A device driver is typically specific to a given operating system. Device drivers allow application software to attach to, read and write data from, and change the behavior of the peripheral device.
Programming an embedded device driver requires a different skill set than computer software programming. The coding must be precise and succinct to meet memory constraints and specialized needs of the product that the embedded system resides in.