① Linux驱动子系统一般包含:设备控制器、设备、驱动、总线
可分为:
1、由总线架构的子系统:I2C、SPI、SDI、USB、CAN、PCI
2、无总线架构的子系统:Input子系统、帧缓冲子系统、MTD子系统
② 有总线架构的子系统需要的数据结构
1、与CPU相关的总线接口的设备控制器
2、与设备相关的设备描述
3、与设备驱动相关的设备描述
4、与通信(协议)方法相关
5、与通信数据相关
6、总线描述(I2C_BUS_TYPE,SPI_BUS_TYPE,MMC_BUS_TYPE)
③ 关于字符设备、块设备、网络设备在Linux驱动中的作用
1、在/dev下创建字符、块设备节点,为应用程序提供设备访问节点
2、在驱动中向Linux系统注册字符、块、网络设备,并且实现file_operations,blk_operations
注意:总线上的设备并不表示是设备节点
④设备驱动程序的编写步骤
1、对设备进行分类(字符、网络、块设备)
2、确定与设备通信的总线类型(I2C、SPI、USB、MMC)
3、确定设备的操作方法(读/写),最终实现对设备的读/写操作
4、利用Linux提供的子系统来编写设备的驱动程序