This paper will give an overview of device driver development for microcontrollers, and will discuss some common problems and solutions to them. Topics include controlling the silicon device, accessing the hardware from the C language as well as interrupt handling with its associated problems.