<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > USB枚舉過(guò)程

USB枚舉過(guò)程

作者: 時(shí)間:2016-12-12 來(lái)源:網(wǎng)絡(luò ) 收藏
主機對一個(gè)USB設備的識別是經(jīng)過(guò)一個(gè)枚舉的過(guò)程來(lái)完成的,主機的總線(xiàn)枚舉器隨時(shí)監控必要的設備狀態(tài)變化??偩€(xiàn)枚舉的過(guò)程如下:

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

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


關(guān)鍵詞: USB枚舉過(guò)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>