USB設備的枚舉
此處摘錄一個,[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發(fā)送USB協議規(guī)定的Get_Device_Descriptor命令,以取得卻缺省控制管道所支持的最大數據包長度,并在有限的時間內等待USB設備的響應,該長度包含在設備描述符的bMaxPacketSize0字段中,其地址偏移量為7,所以這時主機只需讀取該描述符的前8個字節(jié)。注意,主機一次只能列舉一個USB設備,所以同一時刻只能有一個USB設備使用缺省地址0。
2,設置地址
主機通過發(fā)送一個Set_Address請求來分配一個唯一的地址給設備。設備讀取這個請求,返回一個確認,并保存新的地址。從此開始所有通信都使用這個新地址
3,獲取設備描述符
主機向新地址重新發(fā)送Get_Device_Descriptor命令,此次讀取其設備描述符的全部字段,以了解該設備的總體信息,如VID,PID。
4,獲取配置描述符
主機向設備循環(huán)發(fā)送Get_Device_Configuration命令,要求USB設備回答,以讀取全部配置信息。
5,獲取配置描述符其它內容
6再次獲取設備和配置描述符
7,主機發(fā)送Get_Device_String命令,獲得字符集描述(unicode),比如產商、產品描述、型號等等。這是可選項,如果設備有這些信息,主機將會彈出窗口,展示發(fā)現新設備的信息,產商、產品描述、型號等。本例中Device_Descriptor,Device_Configuration,Device_InterFace中有關字符串的字段都為0,因而沒有字符串描述,所以此處無此命令.
8,設置配置
根據Device_Descriptor和Device_Configuration應答,主機判斷是否能夠提供USB的Driver,一般主機能提供幾大類的設備,如鍵盤、鼠標、游戲操作桿、存儲、打印機、掃描儀等,該操作就在后臺運行。
如果主機不能提供驅動,此時將會彈出對話框,索要USB的Driver。
加載了USB設備驅動以后,主機發(fā)送Set_Configuration(x)命令請求為該設備選擇一個合適的配置(x代表非0的配置值)。如果配置成功,USB設備進入“配置”狀態(tài),并可以和客戶軟件進行數據傳輸。
至此,常規(guī)的USB完成了其必須進行的配置和連接工作。查看注冊表,能夠發(fā)現相應的項目已經添加完畢,至此設備應當可以開始使用。不過,USB協議還提供了一些用戶可選的協議,設備如果不應答,也不會出錯,但是會影響到系統(tǒng)的功能。
評論