新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > USB枚舉過程

        USB枚舉過程

        作者: 時間:2016-12-12 來源:網絡 收藏
        主機對一個USB設備的識別是經過一個枚舉的過程來完成的,主機的總線枚舉器隨時監控必要的設備狀態變化。總線枚舉的過程如下:

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

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


        關鍵詞: USB枚舉過

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 体育| 余姚市| 平远县| 互助| 淄博市| 子长县| 台州市| 永靖县| 穆棱市| 筠连县| 建昌县| 钟山县| 库车县| 九龙县| 沾益县| 阜城县| 财经| 同德县| 双桥区| 宁阳县| 临漳县| 新宾| 凭祥市| 偃师市| 玉龙| 武城县| 新疆| 苍溪县| 阳山县| 交城县| 得荣县| 阳城县| 名山县| 沛县| 贵港市| 永宁县| 沁源县| 博爱县| 青神县| 茌平县| 新干县|