一,linux内核设备驱动分三类
1,字符设备驱动:按字节来访问设备,字符驱动负责驱动字符设备,这样的驱动通常实现open,close,read,write系统调用。
特点:操作的硬件,按照字节流形式访问
例子:键盘(键值),LCD显示屏(显存),鼠标(相对坐标),UART接口(BT,GPS,GPRS),各种传感器,摄像头触摸屏(绝对坐标),EEPROM等
2, 块设备驱动:在unix下,块设备只能按照512字节或者1024,1536,2048等(以此类推)来访问,但在linux系统下,可以随意字节访问,也就是说,字符驱动和块设备驱动在linux系统下的差别仅仅在于驱动和内核接口的不同。
特点:操作的硬件,按照数据块访问,一次访问512B,4KB
例子:硬盘,U盘,SD卡,TF卡,Nand,NorFlash
3,网络设备驱动:任何网络事物都是通过一个网络接口来实行,这里有两个接口,大家平常见的也应该比较多,eth0,物理接口;lo(回环网络,就是自发自收的意思,这是一个软件接口)。
特点:操作的硬件就是网卡(有线和无线)需要配合网络协议栈,一般都是由网卡芯片厂家写好
二,SPI驱动体系架构: