新聞中心

USB枚舉過程

作者: 時間:2016-12-12 來源:網(wǎng)絡 收藏
主機對一個USB設備的識別是經(jīng)過一個枚舉的過程來完成的,主機的總線枚舉器隨時監(jiān)控必要的設備狀態(tài)變化。總線枚舉的過程如下:

(1)設備連接。USB設備經(jīng)USB總線連接主機。
(2)設備上電。USB設備可以自供電,也可以使用USB總線供電。
(3)主機檢測到設備,發(fā)出復位。主機通過檢測設備在總線的上拉電阻檢測到有新的設備連接,并獲釋設備是全速設備還是低速設備,然后向該端口發(fā)送一個復位信號。
(4)設備默認狀態(tài)。設備從總線上接收到一個復位信號后,才可以對總線的處理操作做出響應。設備接收到復位信號后,就暫時使用默認地址(00H)來響應主機的命令。
(5)地址分配。當主機接收到有設備對默認地址(00H)響應的時候,就分配給設備一個空閑的地址,以后設備就只對該地址進行響應。
(6)讀取USB設備描述符。主機讀取USB設備描述符,確認USB設備的屬性。
(7)設備配置。主機依照讀取的USB設備描述符來進行配置,如果設備所需的USB資源得以滿足,就發(fā)送配置命令給USB設備,表示配置完畢。
(s)掛起。如果使用總線供電,為了節(jié)省電源,當總線保持空閑狀態(tài)超過3ms以后,設備驅動程序就會進入掛起狀態(tài),在掛起狀態(tài)時,USB設備保留了包括其地址和配置信息在內的所有內部狀態(tài),設備的消耗電流不超過500uA。

USB設備的枚舉過程的具體說明如下:
USB總線驅動程序自動檢測新插入的USB設備。然后它讀取設備內的設備描述符以查明插入的是何種設備,描述符中的廠商和產(chǎn)品標識以及其它描述符一同決定具體安裝哪一個驅動程序。配置管理器調用驅動程序的AddDvecie函數(shù)。AddDvecie做以下工作:創(chuàng)建設備對象,把設備對象連接到驅動程序堆棧上,等等。最后,配置管理器向驅動程序發(fā)送一個即插即用請求IRP_MN_START_DEVICE。它通過調用一個名為StartDevice的輔助函數(shù)并傳遞一些參數(shù),這些參數(shù)描述了賦予設備的經(jīng)過轉換的和未經(jīng)轉換的I/O資源。實際上它們不用任何I/O資源。 USB使用了許多方法來幫助操作系統(tǒng)定位驅動程序,包括設備上的設備描述符、配置描述符,以及接口描述符。對于有廠商和產(chǎn)品標識的設備,配置管理器首先在注冊表中查找設備名稱,例如名為USBVID一0471&PID-0666的設備。如果注冊表中沒有這個表項,配置管理器將觸發(fā)“新硬件向導” 來尋找該設備的INF文件。新硬件向導向用戶詢問INF文件的位置,然后安裝驅動程序并填寫注冊表。一旦配置管理器找到了注冊表表項,它就可以動態(tài)地裝載驅動程序。StartDveiee的執(zhí)行過程大致如下,首先為設備選擇一個配置。如果你的設備像大多數(shù)設備一樣,應該僅有一種配置。選定了某個配置后,接著應該選擇配置中的一個或多個接口。選定了一個配置和一組接口后,你應該向總線驅動程序發(fā)送配置選擇URB。最后,總線驅動程序向設備發(fā)出命令確定能選定的配置和接口??偩€驅動程序負責創(chuàng)建管道和用于訪問管道的句柄,管道提供功能驅動程序與選定接口端點之間的通信,它同時還創(chuàng)建配置句柄和接口句柄。你可以從完成的URB中提取這些句柄,并保存為以后使用。至此,設備的枚舉過程全部結束。


關鍵詞: USB枚舉過

評論


技術專區(qū)

關閉