linux设备驱动的学习是一项浩大的工程,读者需要首先掌握以下基础:
1.良好的硬件基础,懂得SRAM,FLASH,SDRAM,硬盘的读写方式,UART,I2C,USB等设备接 口,轮询,中断,DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等.
2.良好的C语言基础,能灵活地运动C语言的结构指针,函数指针及内存动态申请和释放等.
3 .有一定的linux内核基础,至少要了解设备驱动与内核的接口,尤其是对于块设备,网络设备,FLASH设备,串口设备等复杂设备.
4.良好的多任务并发控制和同步的基础,应为在设备驱动中会大量使用自旋锁,互斥,信号量,等待队列等并发与同步机制,