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

          新聞中心

          USB技術(shù)入門

          作者: 時間:2013-11-14 來源:網(wǎng)絡(luò) 收藏

            USB驅(qū)動程序(USBD)位于UHCD之上。它提供驅(qū)動器級的接口,滿足現(xiàn)有設(shè)備驅(qū)動器設(shè)計的要求,USBD所實(shí)現(xiàn)的準(zhǔn)確細(xì)節(jié)隨不同操作系統(tǒng)環(huán)境而有所不同,但USBD在不同操作系統(tǒng)環(huán)境下完成的是一樣的工作。USBD以I/O請求包(IRPs)的形式提供數(shù)據(jù)傳輸構(gòu)架,它由通過特定管道(Pipe)傳輸數(shù)據(jù)的需求組成。此外,USBD使客戶端出現(xiàn)設(shè)備的一個抽象,以便于抽象和管理。作為抽象的一部分,USBD擁有缺省的管道。通過它可以訪問所有的USB設(shè)備以進(jìn)行標(biāo)準(zhǔn)的USB控制。該缺省管道描述了一條USBD和USB設(shè)備間通信的邏輯信道。

            在某些操作系統(tǒng)中,沒有提供USB系統(tǒng)軟件。這些軟件本來是用于向設(shè)備驅(qū)動程序提供配置信息和裝載結(jié)構(gòu)的。在這些操作系統(tǒng)中,設(shè)備驅(qū)動程序?qū)?yīng)用提供的接口而不是直接訪問USBDI結(jié)構(gòu)。

            客戶軟件位于軟件結(jié)構(gòu)的最高層,它負(fù)責(zé)處理特定USB設(shè)備的設(shè)備驅(qū)動器。客戶程序?qū)用枋隽怂兄苯幼饔糜谠O(shè)備的軟件入口。當(dāng)設(shè)備被系統(tǒng)檢測到,這些客戶程序?qū)⒅苯幼饔糜谕鈬布_@個共享的特性將USB系統(tǒng)軟件置于客戶和它的設(shè)備之間,也就是說,一個客戶程序不能直接訪問設(shè)備硬件,而是根據(jù)USBD在客戶端形成的設(shè)備映像由客戶程序?qū)λM(jìn)行處理。

            總體上說,主機(jī)各層有以下功能:

            檢測連接和移去的USB設(shè)備

            管理主機(jī)和USB設(shè)備間的數(shù)據(jù)流

            連接USB狀態(tài)和活動統(tǒng)計

            控制主控制器和USB設(shè)備間的電氣接口,包括限量能量供應(yīng)

            控制信息可能以帶內(nèi)方式或帶外方式在主機(jī)和設(shè)備間傳輸。帶內(nèi)方式將控制信息與數(shù)據(jù)混在一個管道內(nèi);帶外方式將控制信息與數(shù)據(jù)放在分離的管道內(nèi)。

            每一個連上的USB設(shè)備都有一個被稱為缺省管道的消息管道。為了像設(shè)備列舉和配置這樣的標(biāo)準(zhǔn)流控制,在USB設(shè)備和主機(jī)之間建立邏輯關(guān)聯(lián)。缺省管道為所有的設(shè)備提供了一個標(biāo)準(zhǔn)的接口。缺省信道也用于設(shè)備通信,由USBD作為中介,USBD擁有所有設(shè)備的缺省信道。

            特別的USB設(shè)備允許使用附加的消息管道傳輸具體設(shè)備的控制信息。這些管道使用相同的通信協(xié)議作為缺省信道,但傳輸?shù)男畔⒈仨毦唧w到特定的設(shè)備,而不被規(guī)范標(biāo)準(zhǔn)化。USBD支持其客戶共享它擁有和使用的缺省信道。它也可以訪問其它設(shè)備的控制管道。

            基于不同級別的抽象,HCD和USBD提供不同的軟件接口。他們被希望以某種特殊的方式一起工作來滿足所有USB系統(tǒng)的需求。USB系統(tǒng)的需求主要體現(xiàn)為對USBDI的需求。USBD和HCD間任務(wù)的區(qū)分沒有定義。然而,在特定的操作系統(tǒng)中支持多主控制器設(shè)備是HCDI必須滿足的需求。

          HCD提供了主控制器的抽象和通過USB傳輸?shù)臄?shù)據(jù)的主控制器視角的一個抽象。USBD提供了USB設(shè)備的抽象和USBD客戶與USB功能間數(shù)據(jù)傳輸?shù)囊粋€抽象??傊琔SB系統(tǒng)促進(jìn)客戶和功能間的數(shù)據(jù)傳輸,并作為USB設(shè)備的規(guī)范接口的一個控制點(diǎn)。USB系統(tǒng)提供緩沖區(qū)管理能力并允許數(shù)據(jù)傳輸同步與客戶和功能的需求。

            USB上的數(shù)據(jù)流傳輸

            主控制器負(fù)責(zé)主機(jī)和USB設(shè)備間數(shù)據(jù)流的傳輸。這些傳輸數(shù)據(jù)被當(dāng)作連續(xù)的比特流。每個設(shè)備提供了一個或多個可以和客戶程序通信的接口。每個接口由0個或多個管道組成,這些管道分別獨(dú)立地在客戶程序和設(shè)備的特定終端間傳輸數(shù)據(jù)。USBD為主機(jī)軟件的現(xiàn)實(shí)需求建立了接口和管道。當(dāng)提出配置請求時,主控制器基于主機(jī)軟件提供的參數(shù)提供服務(wù)。

            USB支持四種基本的數(shù)據(jù)傳輸模式:

            控制傳輸

            同步傳輸

            中斷傳輸

            數(shù)據(jù)塊傳輸

            每種傳輸模式應(yīng)用到具有相同名字的終端,具有不同的性質(zhì)??刂苽鬏旑愋椭С滞庠O(shè)與主機(jī)之間的控制、狀態(tài)、配置等信息的傳輸,為外設(shè)與主機(jī)之間提供一個控制信道。每種外設(shè)都支持控制傳輸類型,這樣主機(jī)PC與外設(shè)之間就可以傳送配置和命令/狀態(tài)信息。

            等時(Isochronous)傳輸類型支持有周期性、有限的時延和帶寬、且數(shù)據(jù)傳輸速率不變的外設(shè)與主機(jī)間的數(shù)據(jù)傳輸。該類型無差錯校驗(yàn),故不能保證正確的數(shù)據(jù)傳輸,支持像計算機(jī)-電話集成系統(tǒng)(CTI)和音頻系統(tǒng)與主機(jī)的數(shù)據(jù)傳輸。

            中斷傳輸類型支持像游戲棒、鼠標(biāo)和鍵盤等人機(jī)輸入設(shè)備,這些設(shè)備與主機(jī)間數(shù)據(jù)傳輸量小、無周期性,但對響應(yīng)時間敏感,要求馬上響應(yīng)。

            數(shù)據(jù)塊(Bulk)傳輸類型支持打印機(jī)、掃描儀、數(shù)字相機(jī)等外設(shè),這些外設(shè)與主機(jī)間傳輸?shù)臄?shù)據(jù)量很大,USB在滿足帶寬的情況下才進(jìn)行該類型的數(shù)據(jù)傳輸。

            USB采用分塊帶寬分配方案,若外設(shè)超過當(dāng)前帶寬分配或潛在的要求,則拒絕進(jìn)入該設(shè)備。同步和中斷傳輸類型的終端保留帶寬,并保證數(shù)據(jù)按一定的速率傳送。集中和控制終端按可用的最佳帶寬來傳輸數(shù)據(jù)。但是,10%的帶寬為批量處理和控制傳送而保留,數(shù)據(jù)塊傳輸僅在帶寬滿足要求的情況下才會出現(xiàn)。

          USB采用1ms幀時間框來傳輸數(shù)據(jù),主控制器通過產(chǎn)生框開始(SOF)來開始每幀的傳輸。

            SOF標(biāo)志擁有訪問總線的最高權(quán)限,在框結(jié)束(EOF)間隔串音電路與其它活動的傳輸器電氣地獨(dú)立,并為SOF傳輸提供空閑總線



          評論


          相關(guān)推薦

          技術(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); })();