一,枚举是怎么进行的
此处摘抄一个,[12]中的关于windows下USB枚举的进程的总结:
1. The host or hub detects the connection of a new device via the devices pull
up resistors on thedata pair. The host waits for at least 100ms allowing for
the plug to be inserted fully and for power to stabilise on the device.
2. Host issues a reset placing the device is the default state. The device may
now respond to the default address zero.
3. The MS Windows host asks for the first 64 bytes of the Device Descriptor.
4. After receiving the first 8 bytes of the Device Descriptor, it immediately issues
another bus reset.
5. The host now issues a Set Address command, placing the device in the
addressed state.
6. The host asks for the entire 18 bytes of the Device Descriptor.
7. It then asks for 9 bytes of the Configuration Descriptor to determine the
overall size.
8. The host asks for 255 bytes of the Configuration Descriptor.
9. Host asks for any String Descriptors if they were specified.
At the end of Step 9, Windows will ask for a driver for your device. It is
then common to see it request all the descriptors again before it issues a Set
Configuration request.
以上大约的意义如下
二,枚举的进程
1,获取设备描绘符
主机向address 0发送USB协议规则的Get_Device_Descriptor指令,以取得却缺省操控管道所支撑的最大数据包长度,并在有限的时间内等候USB设备的呼应,该长度包含在设备描绘符的bMaxPacketSize0字段中,其地址偏移量为7,所以这时主机只需读取该描绘符的前8个字节。留意,主机一次只能罗列一个USB设备,所以同一时间只能有一个USB设备运用缺省地址0。
2,设置地址
主机经过发送一个Set_Address恳求来分配一个仅有的地址给设备。设备读取这个恳求,回来一个承认,并保存新的地址。从此开端一切通讯都运用这个新地址
3,获取设备描绘符
主机向新地址从头发送Get_Device_Descriptor指令,此次读取其设备描绘符的悉数字段,以了解该设备的整体信息,如VID,PID。
4,获取装备描绘符
主机向设备循环发送Get_Device_Configuration指令,要求USB设备答复,以读取悉数装备信息。
5,获取装备描绘符其它内容
6再次获取设备和装备描绘符
7,主机发送Get_Device_String指令,取得字符集描绘(unicode),比方产商、产品描绘、类型等等。这是可选项,假如设备有这些信息,主机将会弹出窗口,展现发现新设备的信息,产商、产品描绘、类型等。本例中Device_Descriptor,Device_Configuration,Device_InterFace中有关字符串的字段都为0,因此没有字符串描绘,所以此处无此指令.
8,设置装备
依据Device_Descriptor和Device_Configuration应对,主机判别是否能够供给USB的Driver,一般主机能供给几大类的设备,如键盘、鼠标、游戏操作杆、存储、打印机、扫描仪等,该操作就在后台运转。
假如主机不能供给驱动,此刻将会弹出对话框,索要USB的Driver。
加载了USB设备驱动今后,主机发送Set_Configuration(x)指令恳求为该设备挑选一个适宜的装备(x代表非0的装备值)。假如装备成功,USB设备进入“装备”状况,并能够和客户软件进行数据传输。
至此,惯例的USB完成了其有必要进行的装备和衔接作业。检查注册表,能够发现相应的项目现已增加结束,至此设备应当能够开端运用。不过,USB协议还供给了一些用户可选的协议,设备假如不应对,也不会犯错,可是会影响到体系的功用。