Detailed explanation of embedded Linux device driver development