<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          USB枚舉過程

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

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

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


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

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();