1. Write Linux device driver, require engineers have a certain hardware foundation, know how SRAM, Flash, SDRAM, disk read and write,
The interface of UART, I²c, USB and other devices, polling, interrupt, DMA principle, PCI bus working mode and CPU memory management MMU.
2. Have a good C language Foundation, can flexibly use the structure, pointers, function pointers and memory dynamic application and release.
3. Have a certain Linux kernel base, at least understand the interface between the driver and the kernel,
4. Requires engineers to have very good multi-tasking concurrency control and synchronization basis, because in the drive will be used in a large number of spin locks, mutexes, semaphores, etc.
Wait for the queue and other concurrency and synchronization mechanisms.
5. The Linux-driven analysis method is entire areas, which puts the understanding of functions and data structures in the context of the entire framework.
Key and difficult points of Linux device drivers