Detailed explanation of embedded LINUX device driver development