# Preface: Embedded Linux architecture
# Device Driver
A kernel device driver is the mechanism by which the underlying hardware faces the rest of the system. The system has some new hardware and must find a way to access them. One of the functions of the kernel is to encapsulate the many hardware interfaces of the computer system and connect them in a consistent way. Presented to user space programs. The kernel is designed with a framework that facilitates writing device drivers, which are pieces of code that mediate between the kernel above and the hardware below. A device driver may be written to control a physical device, such as a UART or MMC controller, or it may represent a virtual device, such as a null device (/dev/null) or a ramdisk. A driver can control multiple devices of the same type. Kernel device driver code runs at a high privilege level, as does the rest of the kernel. It has full access to the processor address space and hardware registers. It can handle interrupts and DMA transfers