USB设备驱动实现流程
-
usb为什么能够支持热插拔?
热插拨脚本使用VID和PID来确定当一个特定的设备插入到系统时该自动执行哪一个驱动程序的Probe
-
设备与驱动的匹配
我们知道,一个驱动可以支持多个设备,通过usb_driver结构中的id_table成员就可以完成这个功能。id_table成员描述了一个USB驱动所支持的所有USB设备列表,它指向一个usb_device_id数组。usb_device_id结构体包含了USB设备的制造商ID、产品ID、产品版本、结构类信息。USB设备的EEPROM中的固件程序中就包含了这些信息。当USB设备中的信息和总线上驱动的id_table信息中的一项相同时,就将USB设备与驱动绑定,由于一个驱动可以适用于多个设备,所以id_table表项中可能有很多项。
注意:USB设备与驱动的匹配不是通过name成员来匹配的,而是通过usb_driver 结构体中的成员id_table来匹配
-
usb的识别与加载过程
1. 主机集线器监视着每个端口的信号电压( 集线器端口的两根信号线的每一根都有个15k下拉电阻, 而每一个设备在D+都有一个15k上拉电阻.当usb线将主机与设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到 )- 设备的usb接口,左右两端的电压脚要长一点,保证插入时先给设备上电,拔开时,先断信号线后断电源 - 每一次的通讯都是主机先发送请求
-
其他