![USB20協(xié)議深入解讀課件_第1頁(yè)](http://file4.renrendoc.com/view/dd368a0e636cef62aed8044d9d28d051/dd368a0e636cef62aed8044d9d28d0511.gif)
![USB20協(xié)議深入解讀課件_第2頁(yè)](http://file4.renrendoc.com/view/dd368a0e636cef62aed8044d9d28d051/dd368a0e636cef62aed8044d9d28d0512.gif)
![USB20協(xié)議深入解讀課件_第3頁(yè)](http://file4.renrendoc.com/view/dd368a0e636cef62aed8044d9d28d051/dd368a0e636cef62aed8044d9d28d0513.gif)
![USB20協(xié)議深入解讀課件_第4頁(yè)](http://file4.renrendoc.com/view/dd368a0e636cef62aed8044d9d28d051/dd368a0e636cef62aed8044d9d28d0514.gif)
![USB20協(xié)議深入解讀課件_第5頁(yè)](http://file4.renrendoc.com/view/dd368a0e636cef62aed8044d9d28d051/dd368a0e636cef62aed8044d9d28d0515.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
USB協(xié)議簡(jiǎn)介USB是一種協(xié)議總線(xiàn),即主機(jī)與設(shè)備之間的通信需要遵循一系列約定。協(xié)議內(nèi)容較多,這里僅作一些簡(jiǎn)單介紹,深入學(xué)習(xí),可參看USB規(guī)范(WWW.usb.org)。為了理解協(xié)議中的名稱(chēng),先看圖10.32。該圖突出了主機(jī)上的客戶(hù)軟件和USB邏輯設(shè)備(編程涉及的設(shè)備)之間的通信流(CommunicationFlow),該通信流跨越了USB驅(qū)動(dòng)程序USBD、主控制器驅(qū)動(dòng)程序UHCD、主控制器等硬件接口及其連接。端點(diǎn)(Endpoints)是USB設(shè)備的惟一可識(shí)別的部分,是主機(jī)和設(shè)備之間通信流的終點(diǎn)。每一個(gè)邏輯設(shè)備有若干個(gè)獨(dú)立端點(diǎn),每一個(gè)端點(diǎn)在設(shè)計(jì)時(shí)被分配一個(gè)惟一的由設(shè)備確定的標(biāo)識(shí)符,稱(chēng)之為端點(diǎn)號(hào)。如圖10.32所示,將用于通信流流動(dòng)的通道稱(chēng)為管道(Pipe),這是忽略了許多中間環(huán)節(jié)的很形象的稱(chēng)呼,對(duì)于理解USB系統(tǒng)中的信息傳輸很有幫助。圖中把3個(gè)端點(diǎn)看成了一個(gè)接口,關(guān)于接口的說(shuō)明安排在后面。2023/7/231.USB2.0協(xié)議2023/7/232.(一)USB2.0的背景COMPAQ、HewlettPackard、Intel、Lucent、Microsoft、NEC和PHILIPS這7家廠(chǎng)商聯(lián)合制定了USB2.0接口標(biāo)準(zhǔn)USB2.0規(guī)范是由USB1.1規(guī)范演變而來(lái)的,USB2.0將設(shè)備之間的數(shù)據(jù)傳輸速度增加到480Mbps,折算為MB為60MB/S,比USB1.1標(biāo)準(zhǔn)快40倍左右.USB2.0與USB1.1可以互相兼容,USB2.0設(shè)備可以工作在USB1.1接口上,USB1.0設(shè)備也可以工作在USB2.0接口,USB1.1設(shè)備的速度不會(huì)因?yàn)榘惭b在USB2.0接口上而有任何提高,同樣安裝在USB1.1接口上的USB2.0設(shè)備的速度也會(huì)被限制在12mbps(1.5MB/S)以下.USB2.0和USB1.1使用的連接電纜及端口均相同.2023/7/233.(二)USB2.0協(xié)議規(guī)范目的USB2.0規(guī)范描述了總線(xiàn)屬性,協(xié)議定義,處理類(lèi)型,總線(xiàn)管理和編程接口,以滿(mǎn)足設(shè)計(jì)和構(gòu)建符合該標(biāo)準(zhǔn)的系統(tǒng)和外設(shè)的要求.USB2.0規(guī)范的主要目標(biāo)用戶(hù)是外設(shè)開(kāi)發(fā)者和系統(tǒng)OEM.USB2.0規(guī)范的目標(biāo)是使不同廠(chǎng)商的器件可以在開(kāi)放的結(jié)構(gòu)中相互操作2023/7/234.(三)USB應(yīng)用分類(lèi)符合USB1.1規(guī)范的標(biāo)志符合USB2.0規(guī)范的標(biāo)2023/7/235.(四)USB2.0的結(jié)構(gòu)體系USB系統(tǒng)物理層接口電源總線(xiàn)協(xié)議健壯性系統(tǒng)配置數(shù)據(jù)流類(lèi)型USB設(shè)備USB主機(jī)-----硬件和軟件體系結(jié)構(gòu)的擴(kuò)展2023/7/236.USB2.0系統(tǒng)USB2.0系統(tǒng)主要被定義為三個(gè)部分:1.USB的互連;2.USB的設(shè)備;3.USB的主機(jī)USB的互連是指USB設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作,主要包括以下幾方面:1.總線(xiàn)的拓?fù)浣Y(jié)構(gòu):USB設(shè)備與主機(jī)之間的各種連接方式;2.內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB的任務(wù)被分配到系統(tǒng)的每一個(gè)層次;3.數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過(guò)USB從產(chǎn)生方到使用方的流動(dòng)方式;4.USB的調(diào)度:
USB提供了一個(gè)共享的連接。對(duì)可以使用的連接進(jìn)行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級(jí)判別的開(kāi)銷(xiāo).
2023/7/237.1.USB2.0的主機(jī)在任何USB系統(tǒng)中,只有一個(gè)主機(jī)。USB和主機(jī)系統(tǒng)的接口稱(chēng)作主機(jī)控制器,主機(jī)控制器可由硬件、固件和軟件綜合實(shí)現(xiàn)。根集線(xiàn)器是由主機(jī)系統(tǒng)整合的,用以提供更多的連接點(diǎn).2.USB2.0的設(shè)備USB的設(shè)備如下所示:1.網(wǎng)絡(luò)集線(xiàn)器,向USB提供了更多的連接點(diǎn);
2.功能器件,為系統(tǒng)提供具體功能,如ISDN的連接,數(shù)字的游戲桿或揚(yáng)聲器;USB設(shè)備提供的USB標(biāo)準(zhǔn)接口的主要依據(jù):1.對(duì)USB協(xié)議的運(yùn)用;2.對(duì)標(biāo)準(zhǔn)USB操作的反饋,如設(shè)置和復(fù)位;3.標(biāo)準(zhǔn)性能的描述性信息;
2023/7/238.USB2.0總線(xiàn)布局技術(shù)
USB連接了USB設(shè)備和USB主機(jī),USB的物理連接是有層次性的星型結(jié)構(gòu)。每個(gè)網(wǎng)絡(luò)集線(xiàn)器是在星型的中心,每條線(xiàn)段是點(diǎn)點(diǎn)連接。從主機(jī)到集線(xiàn)器或其功能部件,或從集線(xiàn)器到集線(xiàn)器或其功能部件.
2023/7/239.USB2.0的物理接口USB的物理接口分為總線(xiàn)的電氣規(guī)范和機(jī)械特性.1.電氣特性USB在一條4線(xiàn)的電纜上傳輸信號(hào)和電源.信號(hào)在兩條點(diǎn)對(duì)點(diǎn)連接線(xiàn)上傳輸.USB2.0支持3種數(shù)據(jù)數(shù)率:.USB高速信號(hào)位速率是480Mb/s.USB全速信號(hào)位速率是12Mb/s.USB低速信號(hào)位速率是1.5Mb/sUSB2.0主機(jī)控制器和集線(xiàn)器提供了一種性能,使全速和低速數(shù)據(jù)可以在主機(jī)控制器和HUB之間高速傳輸,而HUB和設(shè)備之間以全速或低速傳輸,這種性能將全速和低速設(shè)備對(duì)高速設(shè)備可用帶寬的影響減到最小.低速模式用于支持例如鼠標(biāo)等數(shù)量有限的低寬帶設(shè)備,因?yàn)槭褂锰噙@種設(shè)備將降低總線(xiàn)的利用率.時(shí)鐘與差動(dòng)數(shù)據(jù)一起編碼傳送,時(shí)鐘是以帶位填充的NRZI方式編碼,以保證有足夠的跳變沿.接收器用每個(gè)包前面的SYNC場(chǎng)同步它們的位恢復(fù)時(shí)鐘.每段電纜還有向設(shè)備提供電源的VBUS和GND線(xiàn).VBUS在源極的標(biāo)稱(chēng)值是+5V.通過(guò)選擇適當(dāng)?shù)膶?dǎo)線(xiàn)規(guī)格來(lái)匹配指定的IRdrop和其它一些特性,如設(shè)備能源預(yù)算和電纜適應(yīng)度.為了保證足夠的輸入電壓和終端阻抗。重要的終端設(shè)備應(yīng)位于電纜的尾部。在每個(gè)端口都可檢測(cè)終端是否連接或分離,并區(qū)分出高速,或低速設(shè)備.2023/7/2310.USB電纜2023/7/2311.2023/7/2312.2.機(jī)械特性電纜和連接器的機(jī)械特性將在機(jī)械特性章節(jié)詳述。所有設(shè)備都有一個(gè)上行的連接。上行連接器和下行連接器是不可簡(jiǎn)單的互換,這樣就避免了集線(xiàn)器間的非法的循環(huán)往復(fù)的連接,電纜中有四根導(dǎo)線(xiàn):一對(duì)互相纏繞的標(biāo)準(zhǔn)規(guī)格線(xiàn),一對(duì)符合標(biāo)準(zhǔn)的電源線(xiàn),連接器有四個(gè)方向,具有屏蔽層,以避免外界干擾,并有易拆裝的特性。2023/7/2313.USB2.0電源主要包括兩方面:
·電源分配:即USB的設(shè)備如何通過(guò)USB分配得到由主計(jì)算機(jī)提供的能源;
·電源管理:即通過(guò)電源管理系統(tǒng),USB的系統(tǒng)軟件和設(shè)備如何與主機(jī)協(xié)調(diào)工作.1.電源分配每個(gè)USB單元通過(guò)電纜只能提供有限的能源。主機(jī)對(duì)那種直接相連的USB設(shè)備提供電源供其使用。并且每個(gè)USB設(shè)備都可能有自己的電源。那些完全依靠電纜提供能源的設(shè)備稱(chēng)作“總線(xiàn)供能”設(shè)備.相反,那些可選擇能源來(lái)源的設(shè)備稱(chēng)作“自供電”設(shè)備.而且,集線(xiàn)器也可由與之相連的USB設(shè)備提供電源。受一定布局限制的帶有“總線(xiàn)供能”集線(xiàn)器的體系結(jié)構(gòu)將在集線(xiàn)器部分討論。在圖中,鍵盤(pán),輸入筆和鼠標(biāo)均為“總線(xiàn)供能”設(shè)備.2023/7/2314.2023/7/2315.2.電源管理
USB主機(jī)與USB系統(tǒng)有相互獨(dú)立的電源管理系統(tǒng)。USB的系統(tǒng)軟件可以與主機(jī)的能源管理系統(tǒng)結(jié)合共同處理各種電源子件如掛起、喚醒,并且有特色的是,USB設(shè)備應(yīng)用特有的電源管理特性,可讓系統(tǒng)軟件和控制其電源管理.
USB的電源分配和電源管理特性使之可以被設(shè)計(jì)在電源傳感系統(tǒng)中,如采用電池的筆記本電腦.典型USB外設(shè)的電源供應(yīng)
2023/7/2316.USB2.0總線(xiàn)協(xié)議USB總線(xiàn)屬一種輪訊方式的總線(xiàn),主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸.每一總線(xiàn)執(zhí)行動(dòng)作最多傳送三個(gè)數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開(kāi)始時(shí),主機(jī)控制器發(fā)送一個(gè)描述傳輸運(yùn)作的種類(lèi)、方向,USB設(shè)備地址和終端號(hào)的USB數(shù)據(jù)包,這個(gè)數(shù)據(jù)包通常稱(chēng)為標(biāo)志包(tokenpacket)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當(dāng)位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機(jī)到設(shè)備就是從設(shè)備到主機(jī)。在傳輸開(kāi)始時(shí),由標(biāo)志包來(lái)標(biāo)志數(shù)據(jù)的傳輸方向,然后發(fā)送端開(kāi)始發(fā)送包含信息的數(shù)據(jù)包或表明沒(méi)有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個(gè)握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機(jī)和設(shè)備的端口之間,可視為一個(gè)通道。存在兩種類(lèi)型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒(méi)有USB所定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類(lèi)型,端口特性(如方向和緩沖區(qū)大?。┯嘘P(guān)。多數(shù)通道在USB設(shè)備設(shè)置完成后即存在。USB中有一個(gè)特殊的通道——缺省控制通道,它屬于消息通道,當(dāng)設(shè)備一啟動(dòng)即存在,從而為設(shè)備的設(shè)置、查詢(xún)狀況和輸入控制信息提供一個(gè)入口。
事務(wù)預(yù)處理允許對(duì)一些數(shù)據(jù)流的通道進(jìn)行控制,從而在硬件級(jí)上防止了對(duì)緩沖區(qū)的高估或低估,通過(guò)發(fā)送不確認(rèn)握手信號(hào)從而阻塞了數(shù)據(jù)的傳輸速度。當(dāng)不確認(rèn)信號(hào)發(fā)過(guò)后,若總線(xiàn)有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機(jī)制允許靈活的任務(wù)安排,可使不同性質(zhì)的流通道同時(shí)正常工作,這樣多種流通??稍诓煌g隔進(jìn)行工作,傳送不同大小的數(shù)據(jù)包。2023/7/2317.USB2.0健壯性USB健壯性的特征在于:
·使用差分的驅(qū)動(dòng)接收和防護(hù),以保證信號(hào)完整性;
·在數(shù)據(jù)和控制信息上加了循環(huán)冗余碼(CRC);
·對(duì)裝卸的檢測(cè)和系統(tǒng)級(jí)資源的設(shè)置;
·對(duì)丟失或損壞的數(shù)據(jù)包暫停傳輸、利用協(xié)議自我恢復(fù);
·對(duì)流數(shù)據(jù)進(jìn)行控制,以保證同步信號(hào)和硬件緩沖管理的安全;
·數(shù)據(jù)和控制通道的建立,使功能部件的相互不利的影響?yīng)毩㈤_(kāi),消除了負(fù)作用.1.錯(cuò)誤檢測(cè)USB傳輸介質(zhì)產(chǎn)生的錯(cuò)誤率是與自然界的異?,F(xiàn)象的概率相吻合,是瞬時(shí)一現(xiàn)的,因此就要在每個(gè)數(shù)據(jù)包中加入檢測(cè)位來(lái)發(fā)現(xiàn)這些瞬時(shí)的錯(cuò)誤,并且提供了一系列硬件和軟件設(shè)施來(lái)保證數(shù)據(jù)的正確性。
協(xié)議中對(duì)每個(gè)包中的控制和數(shù)據(jù)位都提供了循環(huán)冗余碼校驗(yàn),若出現(xiàn)了循環(huán)冗余碼的錯(cuò)誤則被認(rèn)為是該數(shù)據(jù)包已被損壞,循環(huán)冗余碼可對(duì)一位或兩位的錯(cuò)誤進(jìn)行100%的修復(fù)。2.錯(cuò)誤處理協(xié)議在硬件或軟件級(jí)上提供對(duì)錯(cuò)誤的處理。硬件的錯(cuò)誤處理包括匯報(bào)并重新進(jìn)行上一次失敗的傳輸、傳輸中若遇到錯(cuò)誤,USB主機(jī)控制器將重新進(jìn)行傳輸,最多可再進(jìn)行三次。若錯(cuò)誤依然存在,則對(duì)客戶(hù)端軟件報(bào)告錯(cuò)誤,客戶(hù)端軟件可用一種特定的方法進(jìn)行處理2023/7/2318.USB2.0系統(tǒng)配置USB設(shè)備可以隨時(shí)的安裝和折卸,因此,系統(tǒng)軟件在物理的總線(xiàn)布局上必須支持這種動(dòng)態(tài)變化.
1.
USB設(shè)備的安裝所有的USB設(shè)備都是通過(guò)端口接在USB上,網(wǎng)絡(luò)集線(xiàn)器知道這些指定的USB設(shè)備,集線(xiàn)器有一個(gè)狀態(tài)指示器指明在其某個(gè)端口上,USB設(shè)備是否被安裝或拆除了,主機(jī)將所有的集線(xiàn)器排成隊(duì)列以取回其狀態(tài)指示。在USB設(shè)備安裝后,主機(jī)通過(guò)設(shè)備控制通道激活該端口并以預(yù)設(shè)的地址值給USB設(shè)備.
主機(jī)對(duì)每個(gè)設(shè)備指定唯一的USB地址。并檢測(cè)這種新裝的USB設(shè)備是集線(xiàn)器還是功能部件。主機(jī)為USB設(shè)備建立了控制通道,使用指定的USB的地址和零號(hào)端口.
如果安裝的USB設(shè)備是集線(xiàn)器,并且USB設(shè)備連在其端口上,那上述過(guò)程對(duì)每個(gè)USB設(shè)備的安裝都要做一遍.
如果安裝的設(shè)備是功能部件,那么主機(jī)中關(guān)于該設(shè)備的軟件將因設(shè)備的連接而被引發(fā).
2023/7/2319.2.USB設(shè)備的拆卸當(dāng)USB設(shè)備從集線(xiàn)器的端口拆除后,集線(xiàn)器關(guān)閉該端口,并且向主機(jī)報(bào)告該設(shè)備已不存在。USB的系統(tǒng)軟件將準(zhǔn)確進(jìn)行處理,如果去除的USB設(shè)備上集線(xiàn)器,USB的系統(tǒng)軟件將對(duì)集線(xiàn)器反連在其上的所有設(shè)備進(jìn)行處理3.總線(xiàn)標(biāo)號(hào)總線(xiàn)標(biāo)號(hào)就是對(duì)連接在總線(xiàn)上的設(shè)備指定唯一的地址的一種動(dòng)作,因?yàn)閁SB允許USB設(shè)備在任何時(shí)刻從USB上安裝或拆卸,所以總線(xiàn)標(biāo)號(hào)是USB的系統(tǒng)軟件始終要作的動(dòng)作,而且總線(xiàn)標(biāo)號(hào)還包括對(duì)拆除設(shè)備的檢測(cè)和處理2023/7/2320.數(shù)據(jù)流種類(lèi)
數(shù)據(jù)和控制信號(hào)在主機(jī)和USB設(shè)備間的交換存在兩種通道:?jiǎn)蜗蚝碗p向。USB的數(shù)據(jù)傳送是在主機(jī)軟件和一個(gè)USB設(shè)備的指定端口之間。這種主機(jī)軟件和USB設(shè)備的端口間的聯(lián)系稱(chēng)作通道??偟膩?lái)說(shuō),各通道之間的數(shù)據(jù)流動(dòng)是相互獨(dú)立的。一個(gè)指定的USB設(shè)備可有許多通道。例如,一個(gè)USB設(shè)備存在一個(gè)端口,可建立一個(gè)向其它USB設(shè)備的端口,發(fā)送數(shù)據(jù)的通道,它可建立一個(gè)從其它USB設(shè)備的端口接收數(shù)據(jù)的通道.USB的結(jié)構(gòu)包含四種基本的數(shù)據(jù)傳輸類(lèi)型:
·控制數(shù)據(jù)傳送:在設(shè)備連接時(shí)用來(lái)對(duì)設(shè)備進(jìn)行設(shè)置,還可對(duì)指定設(shè)備進(jìn)行控制,如通道控制;
·批量數(shù)據(jù)傳送:大批量產(chǎn)生并使用的數(shù)據(jù),在傳輸約束下,具有很廣的動(dòng)態(tài)范圍;
·中斷數(shù)據(jù)的傳送:用來(lái)描述或匹配人的感覺(jué)或?qū)μ卣鞣磻?yīng)的回饋。
·同步數(shù)據(jù)的傳送:由預(yù)先確定的傳送延遲來(lái)填滿(mǎn)預(yù)定的USB帶寬。
對(duì)于任何對(duì)定的設(shè)備進(jìn)行設(shè)置時(shí)一種通道只能支持上述一種方式的數(shù)據(jù)傳輸,數(shù)據(jù)流模式的更多細(xì)節(jié)在數(shù)據(jù)流模型章節(jié)中詳述2023/7/2321.1
控制數(shù)據(jù)傳送當(dāng)USB設(shè)備初次安裝時(shí),USB系統(tǒng)軟件使用控制數(shù)據(jù)對(duì)設(shè)備進(jìn)行設(shè)置,設(shè)備驅(qū)動(dòng)程序通過(guò)特定的方式使用控制數(shù)據(jù)來(lái)傳送,數(shù)據(jù)傳送是無(wú)損性的.2
批量數(shù)據(jù)傳送批量數(shù)據(jù)是由大量的數(shù)據(jù)組成,如使用打印機(jī)和掃描儀時(shí),批量數(shù)據(jù)是連續(xù)的。在硬件級(jí)上可使用錯(cuò)誤檢測(cè)可以保證可靠的數(shù)據(jù)傳輸,并在硬件級(jí)上引入了數(shù)據(jù)的多次傳送。此外根據(jù)其它一些總線(xiàn)動(dòng)作,被大量數(shù)據(jù)占用的帶寬可以相應(yīng)的進(jìn)行改變.3
中斷數(shù)據(jù)傳輸中斷數(shù)據(jù)是少量的,且其數(shù)據(jù)延遲時(shí)間也是有限范圍的。這種數(shù)據(jù)可由設(shè)備在任何時(shí)刻發(fā)送,并且以不慢于設(shè)備指定的速度在USB上傳送。
中斷數(shù)據(jù)一般由事件通告,特征及座標(biāo)號(hào)組成,只有一個(gè)或幾個(gè)字節(jié)。匹配定點(diǎn)設(shè)備的座標(biāo)即為一例,雖然精確指定的傳輸率不必要,但USB必須對(duì)交互數(shù)據(jù)提供一個(gè)反應(yīng)時(shí)間的最低界限.2023/7/2322.4
同步傳輸同步數(shù)據(jù)的建立、傳送和使用時(shí)是連續(xù)且實(shí)時(shí)的,同步數(shù)據(jù)是以穩(wěn)定的速率發(fā)送和接收實(shí)時(shí)的信息,同步數(shù)據(jù)要使接收者與發(fā)送者保持相同的時(shí)間安排,除了傳輸速率,同步數(shù)據(jù)對(duì)傳送延遲非常敏感。所以同步通道的帶寬的確定,必須滿(mǎn)足對(duì)相關(guān)功能部件的取樣特性。不可避免的信號(hào)延遲與每個(gè)端口的可用緩沖區(qū)數(shù)有關(guān)。
一個(gè)典型的同步數(shù)據(jù)的例子是語(yǔ)音,如果數(shù)據(jù)流的傳送率不能保持,數(shù)據(jù)流是否丟失將取決于緩沖區(qū)的大小和損壞的程度。即使數(shù)據(jù)在USB硬件上以合適的速率傳送,軟件造成的傳送延遲將對(duì)那些如電話(huà)會(huì)議等實(shí)時(shí)系統(tǒng)的應(yīng)用造成損害。
實(shí)時(shí)的傳送同步數(shù)據(jù)肯定會(huì)發(fā)生潛在瞬時(shí)的數(shù)據(jù)流丟失現(xiàn)象,換句話(huà)說(shuō),即使許多硬件機(jī)制,如重傳的引入也不能避免錯(cuò)誤的產(chǎn)生。實(shí)際應(yīng)用中,USB的數(shù)據(jù)出錯(cuò)率小到幾乎可以忽略不計(jì)。從USB的帶寬中,給USB同步數(shù)據(jù)流分配了專(zhuān)有的一部分以滿(mǎn)足所想得到的傳速率,USB還為同步數(shù)據(jù)的傳送設(shè)計(jì)了最少延遲時(shí)間2023/7/2323.5
指定USB帶寬
USB的帶寬分配給各個(gè)通道,當(dāng)一個(gè)通道建立后,USB就分配給它一定的帶寬,USB設(shè)備需要提供一些數(shù)據(jù)緩沖區(qū)。若USB提供了更多帶寬,則需更多的緩沖區(qū)。USB的體系要保證緩沖引導(dǎo)的硬件的延遲限定在幾毫秒內(nèi)。
USB的帶寬容量可以容納多種不同的數(shù)據(jù)流,因此保證USB上可以連接大量設(shè)備,如可以容納從1B+D直到T1速率范圍的電信設(shè)備。同時(shí)USB支持在同一時(shí)刻不同設(shè)備具有不同比特率,并具有一個(gè)動(dòng)態(tài)變動(dòng)的范圍.
USB規(guī)范對(duì)總線(xiàn)的每類(lèi)轉(zhuǎn)輸規(guī)定的具體的原則.2023/7/2324.USB設(shè)備
USB設(shè)備分為諸如集線(xiàn)器、分配器或文本設(shè)備等種類(lèi)。集線(xiàn)器類(lèi)指的是一種提供USB連接點(diǎn)的設(shè)備(詳見(jiàn)USB集線(xiàn)器),USB設(shè)備需要提供自檢和屬性設(shè)置的信息,USB設(shè)備必須在任何時(shí)刻執(zhí)行與所定義的USB設(shè)備的狀態(tài)相一致的動(dòng)態(tài).1
設(shè)備特性
當(dāng)設(shè)備被連接、編號(hào)后,該設(shè)備就擁有一個(gè)唯一的USB地址。設(shè)備就是通過(guò)該USB地址被操作的,每一個(gè)USB設(shè)備通過(guò)一個(gè)或多個(gè)通道與主機(jī)通訊。所有USB設(shè)備必須在零號(hào)端口上有一指定的通道,每個(gè)USB設(shè)備的USB控制通道將與之相連。通過(guò)此控制通道,所有的USB設(shè)備都列入一個(gè)共同的準(zhǔn)入機(jī)制,以獲得控制操作的信息。
在零號(hào)端口上,控制通道中的信息應(yīng)完整的描述USB設(shè)備、此類(lèi)信息主要有以下幾類(lèi):
·標(biāo)準(zhǔn)信息:這類(lèi)信息是對(duì)所有USB設(shè)備的共同性的定義,包括一些如廠(chǎng)商識(shí)別、設(shè)備種類(lèi)、電源管理等的項(xiàng)目。設(shè)備設(shè)置、接口及終端的描述在此給出。關(guān)于這些具體的描述信息在第九章給出;
·類(lèi)別信息:此類(lèi)信息給出了不同USB的設(shè)備類(lèi)的定義,主要反映其不同點(diǎn)。
·USB廠(chǎng)商信息:USB設(shè)備的廠(chǎng)商可自由的提供各種有關(guān)信息,其格式不受該規(guī)范制約。此外,每個(gè)USB設(shè)備均提供USB的控制和狀態(tài)信息。2023/7/2325.2
設(shè)備描述
主要分為兩種設(shè)備類(lèi):集線(xiàn)器和功能部件。只有集線(xiàn)器可以提供更多的USB的連接點(diǎn),功能部件為主機(jī)提供了具體的功能.1
集線(xiàn)器
在即插即用的USB的結(jié)構(gòu)體系中,集線(xiàn)器是一種重要設(shè)備.從用戶(hù)的觀(guān)點(diǎn)出發(fā),集線(xiàn)器極大簡(jiǎn)化了USB的互連復(fù)雜性,而且以很低的價(jià)格和高易用性提供了設(shè)備的健壯性。
集線(xiàn)器串接在集中器上,可讓不同性質(zhì)的設(shè)備連接在USB上,連接點(diǎn)稱(chēng)作端口。每個(gè)集線(xiàn)器將一個(gè)連接點(diǎn)轉(zhuǎn)化成許多的連接點(diǎn)。并且該體系結(jié)構(gòu)支持多個(gè)集線(xiàn)器的連接。
每個(gè)集線(xiàn)器的上游端口向主機(jī)方向進(jìn)行連接。每個(gè)集線(xiàn)器的下游端口允許連接另外的集線(xiàn)器或功能部件,集線(xiàn)器可檢測(cè)每個(gè)下游端口的設(shè)備的安裝或拆卸,并可對(duì)下游端口的設(shè)備分配能源,每個(gè)下游端口都具有獨(dú)立的能力,不論高速或低速設(shè)備均可連接。集線(xiàn)器可將低速和高速端口的信號(hào)分開(kāi)。
一個(gè)集線(xiàn)器包括兩部分:集線(xiàn)控制器(Controller)和集線(xiàn)放大器(Repeater)。集線(xiàn)放大器是一種在上游端口和下游端口之間的協(xié)議控制開(kāi)關(guān)。而且硬件上支持復(fù)位、掛起、喚醒的信號(hào)。集線(xiàn)控制器提供了接口寄存器用于與主機(jī)之間的通信、集線(xiàn)器允許主機(jī)對(duì)其特定狀態(tài)和控制命令進(jìn)行設(shè)置,并監(jiān)視和控制其端口.2023/7/2326.2
功能部件
功能部件是一種通過(guò)總線(xiàn)進(jìn)行發(fā)送接收數(shù)據(jù)和控制信息的USB設(shè)備,通過(guò)一根電纜連接在集線(xiàn)器的某個(gè)端口上,功能設(shè)備一般是一種相互無(wú)關(guān)的外設(shè)。然而一個(gè)物理單元中可以有多個(gè)功能部件和一個(gè)內(nèi)置集線(xiàn)器,并利用一根USB電纜,這通常被稱(chēng)為復(fù)合設(shè)備,即一個(gè)集線(xiàn)器連向主機(jī),并有一個(gè)或多個(gè)不可拆卸的USB設(shè)備連在其上。
每個(gè)功能設(shè)備都包含設(shè)置信息,來(lái)描述該設(shè)備的性能和所需資源。主機(jī)要在功能部件使用前對(duì)其進(jìn)行設(shè)置。設(shè)置信息包括USB帶寬分配,選擇設(shè)備的設(shè)置信息等。
下機(jī)列舉了一些功能部件:
·定位設(shè)備:如鼠標(biāo)或光筆;
·輸入設(shè)備:如鍵盤(pán);
·電信適配器:如ISDN.2023/7/2327.USB主機(jī):硬件和軟件
USB的主機(jī)通過(guò)主機(jī)控制器與USB設(shè)備進(jìn)行交互。主機(jī)功能如下:
·檢測(cè)USB設(shè)備的安裝和拆卸
·管理在主機(jī)和USB設(shè)備之間的控制流;
·管理在主機(jī)和USB設(shè)備之間的數(shù)據(jù)流;
·收集狀態(tài)和動(dòng)作信息;
·提供能量給連接的USB設(shè)備。
主機(jī)上USB的系統(tǒng)軟件管理USB設(shè)備和主機(jī)上該設(shè)備軟件之間的相互交互,USB系統(tǒng)軟件與設(shè)備軟件間有三種相互作用方式:
·設(shè)備編號(hào)和設(shè)置;
·同步數(shù)據(jù)傳輸;
·異步數(shù)據(jù)傳輸;
·電源管理
·設(shè)備和總線(xiàn)管理信息。
只要可能,USB系統(tǒng)軟件就會(huì)使用目前的主機(jī)軟件接口來(lái)管理上述幾種方式.2023/7/2328.USB2.0體系結(jié)構(gòu)的擴(kuò)充
USB的體系結(jié)構(gòu)包含主機(jī)控制驅(qū)動(dòng)器和USB驅(qū)動(dòng)器之間的接口的擴(kuò)展,使多個(gè)主機(jī)控制器和主機(jī)控制驅(qū)動(dòng)器的使用成為可能.2023/7/2329.(五)USB數(shù)據(jù)流模型USB提供了在一臺(tái)主機(jī)和若干臺(tái)附屬的USB設(shè)備之間的通信功能,從終端用戶(hù)的角度看到的USB系統(tǒng),可簡(jiǎn)單地用下圖表示2023/7/2330.
實(shí)際上的USB通信分為以下四個(gè)部分:·USB物理設(shè)備(USBPhysicalDevice):USB上的一種硬件,可運(yùn)行一些用戶(hù)程序。·客戶(hù)軟件(clientsoftware):為一個(gè)特定的USB設(shè)備而在主機(jī)上運(yùn)行的軟件。這種軟件由USB設(shè)備的提供者提供,或由操作系統(tǒng)提供?!SB系統(tǒng)軟件(USBsystemsoftware):此軟件用于在特定的操作系統(tǒng)中支持USB,它由操作系統(tǒng)提供。與具體的USB設(shè)備無(wú)關(guān),也獨(dú)立于客戶(hù)軟件。·USB主機(jī)控制器(USBHostController):總線(xiàn)在主機(jī)方面的接口,是軟件和硬件的總和。用于支持USB設(shè)備通過(guò)USB連到主機(jī)上。這四個(gè)USB系統(tǒng)的組成部分在功能上存在相互重疊的部分。為了支持主機(jī)與客戶(hù)之間的堅(jiān)固可靠的通信.USB的實(shí)際應(yīng)用領(lǐng)域如下圖所示:2023/7/2331.2023/7/2332.USB2.0的總線(xiàn)拓?fù)?/p>
總線(xiàn)拓樸結(jié)構(gòu)包括四個(gè)重要的組成部分。
·主機(jī)和設(shè)備:USB系統(tǒng)的基礎(chǔ)組成部分。
·物理拓樸結(jié)構(gòu):描述USB系統(tǒng)中的各組成部分是如何連接起來(lái)的。
·邏輯拓樸結(jié)構(gòu):描述USB系統(tǒng)中各種組成部分的地位和作用,以及描述從主機(jī)和設(shè)備的角度觀(guān)察到的USB系統(tǒng)。
·客戶(hù)軟件層與應(yīng)用層的關(guān)系:描述從客戶(hù)軟件層看到的應(yīng)用層的情況,以及從應(yīng)用層看到的客戶(hù)軟件層的情況。
2023/7/2333.主機(jī)和設(shè)備
1.主機(jī)主機(jī)的邏輯結(jié)構(gòu)如圖包括:·USB主機(jī)控制器(USBHostController)·USB系統(tǒng)軟件集合:USB驅(qū)動(dòng)程序,主機(jī)控制器的驅(qū)動(dòng)程序,主機(jī)軟件·客戶(hù)軟件USB主機(jī)在USB系統(tǒng)中是一個(gè)起協(xié)調(diào)作用的實(shí)體,它不僅占有特殊的物理位置,而且對(duì)于USB以及連到USB上的設(shè)備來(lái)說(shuō),還負(fù)有特殊責(zé)任。主機(jī)控制所有的對(duì)USB的訪(fǎng)問(wèn)。一個(gè)USB設(shè)備想要訪(fǎng)問(wèn)總線(xiàn)必須由主機(jī)給予它使用權(quán)。主機(jī)還負(fù)責(zé)監(jiān)督USB的拓樸結(jié)構(gòu)。2023/7/2334.USB設(shè)備一個(gè)USB設(shè)備的邏輯結(jié)構(gòu)如圖所示,包括·USB總線(xiàn)接口·USB邏輯設(shè)備·應(yīng)用層USB設(shè)備用于向主機(jī)提供一些額外的功能。USB設(shè)備提供的功能是多種多樣的,但面向主機(jī)的接口卻是一致的。所以,對(duì)于所有這些設(shè)備,主機(jī)可以用同樣的方式來(lái)管理它們與USB有關(guān)的部分。為了幫助主機(jī)辨認(rèn)及確定USB設(shè)備,這些設(shè)備本身需要提供用于確認(rèn)的信息。在某一些方面的信息,所有設(shè)備都是一樣的;而另一些方面的信息,由這些設(shè)備具體的功能決定。信息的具體格式是不定的,由設(shè)備所處的設(shè)備級(jí)決定.2023/7/2335.
總線(xiàn)的物理拓樸結(jié)構(gòu)
USB系統(tǒng)中的設(shè)備與主機(jī)的連接方式采用的是星形連接,如圖.圖中的Hub是一類(lèi)特殊的USB設(shè)備,它是一組USB的連接點(diǎn),主機(jī)中有一個(gè)被嵌入的Hub叫根Hub(rootHub)。主機(jī)通過(guò)根Hub提供若干個(gè)連接點(diǎn)。為了防止環(huán)狀連接,采用星形連接來(lái)體現(xiàn)層次性,如圖4-5。這種連接的形狀很像一棵樹(shù)。用于提供具體功能的設(shè)備叫應(yīng)用設(shè)備。許多不同功能的設(shè)備放在一起被看作一個(gè)整體,叫包。例如,鍵盤(pán)和軌跡球可以被視作一個(gè)整體,在它的內(nèi)部,提供具體功能的設(shè)備被永久地
接到Hub上,而這個(gè)Hub被接到USB上。所有這些設(shè)備及這個(gè)Hub被看作一個(gè)復(fù)合設(shè)備,而這個(gè)Hub又被看作這個(gè)復(fù)合設(shè)備的內(nèi)部Hub。在主機(jī)看來(lái),這個(gè)復(fù)合設(shè)備和一個(gè)帶著若干設(shè)備的單獨(dú)Hub是一樣的。圖中也標(biāo)出了一個(gè)復(fù)合設(shè)備.2023/7/2336.
集線(xiàn)器在高速系統(tǒng)中扮演特殊的角色,集線(xiàn)器將全速/低速的信號(hào)環(huán)境和高速信號(hào)環(huán)境隔離開(kāi)來(lái).如圖所示的是支持高速設(shè)備,并在高速下工作的集線(xiàn)器.集線(xiàn)器允許連接和操作全速/低速下的USB1.1集線(xiàn)器和其他只能進(jìn)行全速/低速操作的設(shè)備.主機(jī)控制器也直接支持連接那些只能進(jìn)行全速/低速操作的設(shè)備.每個(gè)高速運(yùn)行的集線(xiàn)器可增加一條(或多條)額外的全速/低速總線(xiàn),即每個(gè)集線(xiàn)器都支持額外的(任意多條)12Mb/sUSB全速/低速寬帶.這允許連接更多全速/低速總線(xiàn),而不需要額外地增加主機(jī)控制器.盡管可以連接幾條12MB/S的全速/低速總線(xiàn),但是一臺(tái)主機(jī)控制器最多只能連接127臺(tái)USB設(shè)備.2023/7/2337.USB邏輯總線(xiàn)的拓?fù)浣Y(jié)構(gòu)在物理結(jié)構(gòu)上,設(shè)備通過(guò)Hub連到主機(jī)上。但在邏輯上,主機(jī)是直接與各個(gè)邏輯設(shè)備通信的,就好像它們是直接被連到主機(jī)上一樣。這個(gè)邏輯關(guān)系如圖5-7所示。與之對(duì)應(yīng)的物理結(jié)構(gòu)就是圖4-5中的結(jié)構(gòu)。Hub也是邏輯設(shè)備,但在圖5-7中,為了簡(jiǎn)化起見(jiàn),未被畫(huà)出,雖然USB系統(tǒng)中的工作都是從邏輯角度來(lái)看待的,但主機(jī)必須對(duì)物理結(jié)構(gòu)有個(gè)了解。例如,在處理Hub被移去的情況時(shí),當(dāng)一個(gè)Hub被移出,通過(guò)它與主機(jī)相連的設(shè)備也應(yīng)一起被移去,這是由其物理結(jié)構(gòu)決定的.2023/7/2338.客戶(hù)軟件層與應(yīng)用層的關(guān)系
USB系統(tǒng)的物理上、邏輯上的拓樸結(jié)構(gòu)反映了總線(xiàn)的共享性。操縱USB應(yīng)用設(shè)備的客戶(hù)軟件只關(guān)心設(shè)備上與它相關(guān)的接口,客戶(hù)軟件必須通過(guò)USB軟件編程接口來(lái)操縱應(yīng)用設(shè)備。這與另一些總線(xiàn)如PCI,EISA,PCMCIA等不同,這些總線(xiàn)是直接訪(fǎng)問(wèn)內(nèi)存或I/O的。在運(yùn)行中,客戶(hù)軟件必須獨(dú)立于USB上的其它設(shè)備。這樣,設(shè)備和客戶(hù)軟件的設(shè)計(jì)者就可以只關(guān)心該設(shè)備與主機(jī)硬件的相互作用和主機(jī)軟件的相互作用的細(xì)節(jié)問(wèn)題。圖5-8說(shuō)明了在圖5-7的邏輯結(jié)構(gòu)下,一個(gè)設(shè)備設(shè)計(jì)者看到的客戶(hù)軟件與相應(yīng)應(yīng)用的關(guān)系的視圖.2023/7/2339.USB總線(xiàn)的通信數(shù)據(jù)流
USB是為主機(jī)軟件和它的USB應(yīng)用設(shè)備間的通信服務(wù)的,對(duì)客戶(hù)與應(yīng)用間不同的交互,USB設(shè)備對(duì)數(shù)據(jù)流有不同的要求。USB為此提供了更好的overall總線(xiàn)使用,它允許各種不同的數(shù)據(jù)流相互獨(dú)立地進(jìn)入一個(gè)USB設(shè)備。每種通信流都采取了某種總線(xiàn)訪(fǎng)問(wèn)方法來(lái)完成主機(jī)上的軟件與設(shè)備之間的通信。每個(gè)通信都在設(shè)備上的某個(gè)端點(diǎn)結(jié)束.不同設(shè)備的不同端點(diǎn)用于區(qū)分不同的通信流.圖5-9是詳盡地描述了USB系統(tǒng),支持了邏輯設(shè)備層和應(yīng)用層間的通信流.
·主機(jī)控制器的驅(qū)動(dòng)程序(HCD):它位于USB主機(jī)控制器與USB系統(tǒng)軟件之間。主機(jī)控制器可以有一系列不同的實(shí)現(xiàn),而系統(tǒng)軟件獨(dú)立于任何一個(gè)具體實(shí)現(xiàn)。一個(gè)驅(qū)動(dòng)程序可以支持不同的控制器,而不必特別了解這個(gè)具體的控制器。一個(gè)USB控制器的實(shí)現(xiàn)者必須提供一個(gè)支持它自己的控制器的主機(jī)控制器驅(qū)動(dòng)器(HCD)實(shí)現(xiàn).·USB驅(qū)動(dòng)程序(USBD):USB系統(tǒng)軟件與客戶(hù)軟件之間的接口,提供給客戶(hù)軟件一些方便的使用USB設(shè)備的功能。一個(gè)USB邏輯設(shè)備對(duì)USB系統(tǒng)來(lái)說(shuō)就是一個(gè)端點(diǎn)集合。端點(diǎn)可以根據(jù)它們實(shí)現(xiàn)的接口來(lái)分類(lèi)。USB系統(tǒng)軟件通過(guò)一個(gè)缺省的控制通道來(lái)管理設(shè)備。而客戶(hù)軟件用通道束管理接口。通道束的一端為端點(diǎn),一端為緩沖區(qū)??蛻?hù)軟件要求通信數(shù)據(jù)在主機(jī)上的一個(gè)緩沖和USB設(shè)備上的一個(gè)端點(diǎn)之間進(jìn)行。主機(jī)控制器或USB設(shè)備(取決于數(shù)據(jù)傳送方向)將數(shù)據(jù)打包后在USB上傳。由主機(jī)控制器(HC)協(xié)調(diào)何時(shí)用總線(xiàn)訪(fǎng)問(wèn)在USB上傳遞數(shù)據(jù).2023/7/2340.2023/7/2341.圖5-10說(shuō)明了數(shù)據(jù)如何在主機(jī)側(cè)中的內(nèi)存緩沖和設(shè)備中的端點(diǎn)中傳送。在后面,將逐步介紹端點(diǎn)、通道和通信流。主機(jī)上的軟件通過(guò)一系列的通信流與邏輯設(shè)備進(jìn)行通信。這一系列的通信流是由USB設(shè)備的軟件和硬件設(shè)計(jì)者選擇的,使設(shè)備能傳送由USB提供的字符.
2023/7/2342.CYPRESS核管道端點(diǎn)設(shè)定界面2023/7/2343.USB設(shè)備端點(diǎn)
一個(gè)端點(diǎn)是一個(gè)可唯一識(shí)別的USB設(shè)備的Portion,它是主機(jī)與設(shè)備間通信流的一個(gè)結(jié)束點(diǎn)。一系列相互獨(dú)立的端點(diǎn)在一起構(gòu)成了USB邏輯設(shè)備。每個(gè)邏輯設(shè)備有一個(gè)唯一的地址,這個(gè)地址是在設(shè)備連上主機(jī)時(shí),由主機(jī)分配的,而設(shè)備中的每個(gè)端點(diǎn)在設(shè)備內(nèi)部有唯一的端點(diǎn)號(hào)。這個(gè)端點(diǎn)號(hào)是在設(shè)備設(shè)計(jì)時(shí)被給定的。每個(gè)端點(diǎn)都是一個(gè)簡(jiǎn)單的連接點(diǎn),或者支持?jǐn)?shù)據(jù)流進(jìn)設(shè)備,或者支持其流出設(shè)備,兩者不可得兼。一個(gè)端點(diǎn)的特性決定了它與客戶(hù)軟件進(jìn)行的傳送的類(lèi)型。一個(gè)端點(diǎn)有以下特性:
·端點(diǎn)的總線(xiàn)訪(fǎng)問(wèn)頻率要求·端點(diǎn)的總線(xiàn)延遲要求·端點(diǎn)的帶寬要求·端點(diǎn)的端點(diǎn)號(hào)·對(duì)錯(cuò)誤處理的要求·端點(diǎn)能接收或發(fā)送的包的最大長(zhǎng)度·端點(diǎn)的傳送類(lèi)型出·端點(diǎn)與主機(jī)的數(shù)據(jù)傳送方向端點(diǎn)號(hào)不為0的端點(diǎn)在被設(shè)置前處于未知狀態(tài),是不能被主機(jī)訪(fǎng)問(wèn)的.2023/7/2344.對(duì)0號(hào)端點(diǎn)的要求所有USB設(shè)備都需要實(shí)現(xiàn)一個(gè)缺省的控制方法。這種方法將端點(diǎn)0作為輸入端點(diǎn),同時(shí)也將端點(diǎn)0作為輸出端點(diǎn)。USB系統(tǒng)用這個(gè)缺省方法初始化及一般地使用邏輯設(shè)備(即設(shè)置此設(shè)備)。缺省控制通道支持了對(duì)控制的傳送,一旦設(shè)備接上,并加電,且又收到一個(gè)總線(xiàn)復(fù)位命令,端點(diǎn)0就是可訪(fǎng)問(wèn)的了.能在高速下工作的USB設(shè)備必須能在全速下工作,當(dāng)設(shè)備連接到集線(xiàn)器并以全速工作時(shí),設(shè)備必須:
1.能成功地在全速下復(fù)位;2.能成功地響應(yīng)標(biāo)準(zhǔn)請(qǐng)求,如設(shè)備和配置描述符的set_address,set_configuration,get_descriptor,并返回正確的信息.高速設(shè)備在全速下運(yùn)行時(shí)可能或不支持這種功能.對(duì)非0號(hào)端點(diǎn)的要求設(shè)備可以有除0以外的其它端點(diǎn),這取決于這些設(shè)備的實(shí)現(xiàn)。低速設(shè)備在0號(hào)輸入及輸出端點(diǎn)外,只能有2個(gè)額外的可選端點(diǎn)。而高速設(shè)備可具有的額外端點(diǎn)數(shù)僅受限于協(xié)議的定義(協(xié)議中規(guī)定,最多15個(gè)額外的輸入端點(diǎn)和最多15個(gè)額外的輸出端點(diǎn))。除缺省控制通道的缺省端點(diǎn)外,其它端點(diǎn)只有在設(shè)備被設(shè)置后才可使用,對(duì)設(shè)備的設(shè)置是設(shè)備設(shè)置過(guò)程的一部分.
2023/7/2345.USB總線(xiàn)數(shù)據(jù)通道
一個(gè)USB通道是設(shè)備上的一個(gè)端點(diǎn)和主機(jī)上軟件之間的聯(lián)系。體現(xiàn)了主機(jī)上緩存和端點(diǎn)間傳送數(shù)據(jù)的能力,有兩不同的且互斥的通道通信格式。
·流(Stream):指不具有USB定義的格式的數(shù)據(jù)流?!は?Message):指具有某種USB定義的格式的數(shù)據(jù)流。USB不解釋在通道中傳送的數(shù)據(jù)的內(nèi)容。消息通道要求數(shù)據(jù)組織USB定義的格式,但它的內(nèi)容,USB是不管的。特別地,有下列概念與通道相關(guān):
·對(duì)USB總線(xiàn)訪(fǎng)問(wèn)的申請(qǐng)(claim),帶寬的使用情況·傳送類(lèi)型·與通道相連的端點(diǎn)的特性,例如:端點(diǎn)的數(shù)據(jù)傳送方向,最大數(shù)據(jù)凈負(fù)荷區(qū)的長(zhǎng)度。數(shù)據(jù)凈負(fù)荷是指在總線(xiàn)處理事務(wù)(transaction)中,數(shù)據(jù)包中數(shù)據(jù)區(qū)的數(shù)據(jù)。由兩個(gè)0號(hào)端點(diǎn)組成的通道叫缺省控制通道。一旦設(shè)備加電并復(fù)位后,此通道即可使用。其它通道只在設(shè)備被設(shè)置后才存在。USB系統(tǒng)軟件在決定設(shè)備身份、設(shè)置要求和設(shè)置設(shè)備時(shí)使用缺省控制通道。當(dāng)設(shè)備被設(shè)置后,這個(gè)設(shè)備的特定軟件還可使用該通道。USB系統(tǒng)軟件保留缺省控制通道的擁有權(quán),協(xié)調(diào)其它客戶(hù)軟件對(duì)通道的使用。2023/7/2346.一個(gè)客戶(hù)軟件一般都通過(guò)I/O請(qǐng)求包(IRP)來(lái)要求數(shù)據(jù)傳送。然后,或者等待,或者當(dāng)傳送完成后被通知。IRP的細(xì)節(jié)是由操作系統(tǒng)來(lái)指定的??蛻?hù)軟件提出與設(shè)備上的端點(diǎn)建立某個(gè)方向的數(shù)據(jù)傳送的請(qǐng)求,IRP就可簡(jiǎn)單地理解為這個(gè)請(qǐng)求。一個(gè)客戶(hù)軟件可以要求一個(gè)通道回送所有的IRP。當(dāng)關(guān)于IRP的總線(xiàn)傳送結(jié)束時(shí),無(wú)論它是成功地完成,還是出現(xiàn)錯(cuò)誤,客戶(hù)軟件都將獲得通知說(shuō)IRP完成了。如果通道上沒(méi)有正在傳送的數(shù)據(jù),也沒(méi)有數(shù)據(jù)想使用此通道,這個(gè)通道就處于閑置狀態(tài)。主機(jī)控制器對(duì)它不采取任何動(dòng)作,也就是說(shuō),這個(gè)通道的端點(diǎn)會(huì)發(fā)現(xiàn)沒(méi)有任何的總線(xiàn)動(dòng)作是沖它而來(lái)的。只有當(dāng)有數(shù)據(jù)在通道上時(shí),該通道才能發(fā)現(xiàn)總線(xiàn)對(duì)它的動(dòng)作.如果一個(gè)非同步通道遇到一個(gè)迫使它給主機(jī)發(fā)STALL的情況(參見(jiàn)第7章),或者在任一個(gè)IRP中發(fā)現(xiàn)3個(gè)總線(xiàn)錯(cuò)誤。這個(gè)IRP將被中止。其它所有突出的IRP也一同被中止。通道不再接收任何IRP,直到客戶(hù)軟件從這個(gè)情況中恢復(fù)過(guò)來(lái)(恢復(fù)的方式取決于軟件的實(shí)現(xiàn)),而且承認(rèn)這個(gè)中止或出現(xiàn)的錯(cuò)誤,并發(fā)一個(gè)USBDCall來(lái)表明它已承認(rèn)。一個(gè)合適的狀態(tài)信息將通知客戶(hù)軟件IRP的結(jié)果———出錯(cuò)或中止。
2023/7/2347.一個(gè)IRP可能會(huì)需要多個(gè)數(shù)據(jù)凈荷區(qū)來(lái)傳遞數(shù)據(jù)。這些數(shù)據(jù)區(qū)除最后一個(gè)外,都具有數(shù)據(jù)凈荷區(qū)的最大長(zhǎng)度,最后一個(gè)數(shù)據(jù)區(qū)包含了這個(gè)IRP中剩下的數(shù)據(jù).對(duì)這樣的一個(gè)IRP,短包(也就是說(shuō)未達(dá)到最大長(zhǎng)度的數(shù)據(jù)區(qū))在數(shù)據(jù)輸入時(shí)無(wú)法填完IRP數(shù)據(jù)緩沖區(qū)。這可能會(huì)有二種不同解釋?zhuān)蕾?lài)于客戶(hù)軟件的情況:·如果該客戶(hù)軟件可以接受變長(zhǎng)的IRP,那么,IRP數(shù)據(jù)緩沖區(qū)未被填滿(mǎn),可以看作一個(gè)分限,說(shuō)明一個(gè)IRP已成功結(jié)束,主機(jī)控制器可以準(zhǔn)備接收下一個(gè)IRP了。·如果該客戶(hù)軟件只收定長(zhǎng)的IRP。那么,我們認(rèn)為發(fā)生了一個(gè)錯(cuò)誤,這IRP將被中止,通道也會(huì)被阻塞,通道上的數(shù)據(jù)都中止。因?yàn)閷?duì)這兩種情況,主機(jī)控制器會(huì)有不同的反應(yīng),而且采取何種措施不由控制器決定,所以對(duì)每個(gè)IRP都必須說(shuō)明客戶(hù)軟件的具體要求。通道的端點(diǎn)可以用NAK信號(hào)來(lái)通知主機(jī)自己正忙,NAK不能作為向主機(jī)反還IRP的中止條件。在一個(gè)給定的IRP處理過(guò)程中,可以遇到任意多個(gè)NAK,NAK不構(gòu)成錯(cuò)誤,而且不作為上面所說(shuō)的3種錯(cuò)誤之一.2023/7/2348.流通道流通道中的數(shù)據(jù)是流的形式,也就是該數(shù)據(jù)的內(nèi)容不具有USB要求的結(jié)構(gòu)。數(shù)據(jù)從流通道一端流進(jìn)的順序與它們從流通道另一端流出時(shí)的順序是一樣的,流通道中的通信流總是單方向的。對(duì)于在流通道中傳送的數(shù)據(jù),USB認(rèn)為它來(lái)自同一個(gè)客戶(hù)。USB系統(tǒng)軟件不能夠提供使用同一流通道的多個(gè)客戶(hù)的同步控制。在流通道中傳送的數(shù)據(jù)遵循先進(jìn)先出原則。流管流只能連到一個(gè)固定號(hào)碼的端點(diǎn)上,或者流進(jìn),或者流出。(這個(gè)號(hào)碼是由協(xié)議層決定的)而具有這個(gè)號(hào)碼的另一個(gè)方向的端點(diǎn)可以被分配給其它流通道。消息通道消息通道與端點(diǎn)的關(guān)系同流通道與端點(diǎn)的關(guān)系是不同的。首先,主機(jī)向USB設(shè)備發(fā)出一個(gè)請(qǐng)求;接著,就是數(shù)據(jù)的傳送;最后,是一個(gè)狀態(tài)階段。為了能夠容納請(qǐng)求/數(shù)據(jù)/狀態(tài)的變化,消息通道要求數(shù)據(jù)有一個(gè)格式,此格式保證了命令能夠被可靠地傳送和確認(rèn)。消息通道允許雙方向的信息流,雖然大多數(shù)的通信流是單方向的。特別地,缺省控制通道也是一個(gè)消息通道。USB系統(tǒng)軟件不會(huì)讓多個(gè)請(qǐng)求同時(shí)要求同一個(gè)消息通道。一個(gè)設(shè)備的每個(gè)消息通道在一個(gè)時(shí)間段內(nèi),只能為一個(gè)消息請(qǐng)求服務(wù),多個(gè)客戶(hù)軟件可以通過(guò)缺省控制通道發(fā)出它們的請(qǐng)求,但這些請(qǐng)求到達(dá)設(shè)備的次序是按先進(jìn)先出的原則的。設(shè)備可以在數(shù)據(jù)傳送階段和狀態(tài)階段控制信息流,這取決于這些設(shè)備與主機(jī)交互的能力。正常情況下,在上一個(gè)消息未被處理完之前,是不能向消息通道發(fā)下一個(gè)消息的。但在有錯(cuò)誤發(fā)生的情況下,主機(jī)會(huì)取消這次消息傳送,并且不等設(shè)備將已收的數(shù)據(jù)處理完,就開(kāi)始下一次的消息傳送。在操作通道的軟件看來(lái),一個(gè)IRP中的錯(cuò)誤,使這個(gè)IRP被取消,并且所有正排隊(duì)等待的IRP一同也被取消。申請(qǐng)這個(gè)IRP的客戶(hù)被通知IRP結(jié)束,且有出錯(cuò)提示。消息通道后有兩個(gè)相同號(hào)碼的端點(diǎn),一個(gè)用于輸入,一個(gè)用于輸出。兩個(gè)號(hào)碼必須相同.2023/7/2349.傳送類(lèi)型
USB通過(guò)通道在主機(jī)緩沖區(qū)與設(shè)備端點(diǎn)間傳送數(shù)據(jù)。在消息通道中傳遞的數(shù)據(jù)具有USB定義的格式,它的數(shù)據(jù)凈荷區(qū)中包含的數(shù)據(jù)允許具有設(shè)備指定的格式。USB要求任何在通道上傳送的數(shù)據(jù)均被打包,數(shù)據(jù)的解釋工作由客戶(hù)軟件和應(yīng)用層軟件負(fù)責(zé)。USB提供了多種數(shù)據(jù)格式,使之盡可能滿(mǎn)足客戶(hù)軟件和應(yīng)用軟件的要求。一個(gè)IRP需要一個(gè)或多個(gè)總線(xiàn)處理事務(wù)來(lái)完成。每個(gè)傳送類(lèi)型在以下的幾個(gè)傳送特征上會(huì)有不同:
·USB規(guī)定的數(shù)據(jù)格式·信息流的方向·數(shù)據(jù)包的長(zhǎng)度限制·總線(xiàn)訪(fǎng)問(wèn)的限制·延時(shí)的限制·要求的數(shù)據(jù)順序·出錯(cuò)處理2023/7/2350.
USB設(shè)備的設(shè)計(jì)者可以決定設(shè)備上每個(gè)端點(diǎn)的能力。一旦為這個(gè)端點(diǎn)建立了一個(gè)通道,這個(gè)通道的絕大多數(shù)傳送特征也就固定下來(lái)了,一直到這個(gè)通道被取消為止。也有部分傳送特征可以改變,對(duì)這樣的特征,將會(huì)在介紹每個(gè)傳送類(lèi)型時(shí)作出說(shuō)明.USB定義了4種傳送類(lèi)型:1.控制傳送:可靠的、非周期性的、由主機(jī)軟件發(fā)起的請(qǐng)求或者回應(yīng)的傳送,通常用于命令事務(wù)和狀態(tài)事務(wù).2.同步傳送:在主機(jī)與設(shè)備之間的周期性的、連續(xù)的通信,一般用于傳送與時(shí)間相關(guān)的信息。這種類(lèi)型保留了將時(shí)間概念包含于數(shù)據(jù)中的能力。但這并不意味著,傳送這樣數(shù)據(jù)的時(shí)間總是很重要的,即傳送并不一定很緊急。3.中斷傳送:小規(guī)模數(shù)據(jù)的、低速的、固定延遲的傳送。4.批傳送:非周期性的,大包的可靠的傳送。典型地用于傳送那些可以利用任何帶寬的數(shù)據(jù),而且這些數(shù)據(jù)當(dāng)沒(méi)有可用帶寬時(shí),可以容忍等待.2023/7/2351.一個(gè)(微型)幀包含的最大處理數(shù)的表舉例:每張表包含以下內(nèi)容:指定傳輸類(lèi)型(和速度)要求的協(xié)議開(kāi)銷(xiāo)對(duì)某些采樣數(shù)據(jù)有效負(fù)載大小為-在這種情況可能保持的最大寬度;-每個(gè)處理要求的(微型)幀百分比;-在特定情況下,(微型)幀中的最大處理數(shù);-在特定情況下,(微型)幀中不要求的剩余字節(jié);-在特定情況下,在單個(gè)(微型)幀傳輸?shù)目偟臄?shù)據(jù)字節(jié)數(shù);典型的特殊傳輸類(lèi)型處理要求多個(gè)包,每種處理的協(xié)議開(kāi)銷(xiāo)包括:每個(gè)包的SYNC場(chǎng)為8位(全速/低速)或32位(高速);每個(gè)包的PID字節(jié)包括PID和PID取反(校驗(yàn))位;每個(gè)包的EOP為3位(全速/低速)或8位(高速);在令牌中還包括端點(diǎn)號(hào),設(shè)備地址,和CRC場(chǎng)(共16位);數(shù)據(jù)包包括CRC16場(chǎng)(共16位);數(shù)據(jù)包可以包含任意數(shù)量的數(shù)據(jù)場(chǎng)(每字節(jié)8位);2023/7/2352.對(duì)于多包的處理,要求有包間間隙或總線(xiàn)轉(zhuǎn)向時(shí)間在這些計(jì)算中假設(shè)沒(méi)有位填充的要求,用低速中斷OUT作為例子,它在處理中共有5個(gè)包:-一個(gè)PRE專(zhuān)用包;-一個(gè)令牌包;-一個(gè)PRE專(zhuān)用包;-一個(gè)數(shù)據(jù)包;-一個(gè)握手包;其中,在數(shù)據(jù)和握手之間有個(gè)總線(xiàn)轉(zhuǎn)向.因此,協(xié)議開(kāi)銷(xiāo)包括:5個(gè)SYNC,5個(gè)PID,端點(diǎn)+CRC5,CRC16,5個(gè)EOP和包間延時(shí)(一總線(xiàn)轉(zhuǎn)向,包間的延時(shí)和2個(gè)集線(xiàn)器建立時(shí)間)2023/7/2353.控制傳送
控制傳送允許訪(fǎng)問(wèn)一個(gè)設(shè)備的不同部分??刂苽魉陀糜谥С衷诳蛻?hù)軟件和它的應(yīng)用之間的關(guān)于設(shè)置信息、命令信息、狀態(tài)信息的傳送??刂苽魉陀梢韵聨讉€(gè)事務(wù)組成:(1)建立聯(lián)系,把請(qǐng)求信息從主機(jī)傳到它的應(yīng)用設(shè)備;(2)零個(gè)或多個(gè)數(shù)據(jù)傳送事務(wù),按照(1)事務(wù)中指明的方向傳送數(shù)據(jù);(3)狀態(tài)信息回傳。將狀態(tài)信息從應(yīng)用設(shè)備傳到主機(jī)。當(dāng)端點(diǎn)成功地完成了被要求的操作時(shí),回傳的狀態(tài)信息為“success”.USB設(shè)備必須實(shí)現(xiàn)缺省控制通道,并將它實(shí)現(xiàn)成一個(gè)消息通道。這個(gè)通道由USB系統(tǒng)軟件使用。USB設(shè)備的確認(rèn)信息、狀態(tài)信息以及控制信息由該通道傳送。如果需要的話(huà),一個(gè)應(yīng)用設(shè)備可以為端點(diǎn)實(shí)現(xiàn)額外的控制通道。USB設(shè)備框架定義了標(biāo)準(zhǔn)的,設(shè)備級(jí)的或由銷(xiāo)售商提供的請(qǐng)求,這些請(qǐng)求可操作設(shè)備的狀態(tài)。USB設(shè)備框架又定義了一些描述器(descriptor),用于存放USB設(shè)備的各種信息??刂茩C(jī)制提供訪(fǎng)問(wèn)設(shè)備描述器和請(qǐng)求操作設(shè)備的機(jī)制??刂苽魉椭荒芡ㄟ^(guò)消息通道進(jìn)行。所以,使用控制傳送的數(shù)據(jù)必須具有USB定義的數(shù)據(jù)格式。應(yīng)用層和相應(yīng)的客戶(hù)軟件不能為控制傳送指定總線(xiàn)訪(fǎng)問(wèn)頻率和帶寬。這由USB系統(tǒng)軟件從全局優(yōu)化角度加以決定。USB系統(tǒng)軟件會(huì)限制設(shè)備要求的訪(fǎng)問(wèn)頻率和帶寬.2023/7/2354.1控制傳送類(lèi)型的數(shù)據(jù)格式Setup包的數(shù)據(jù)格式屬于一個(gè)命令集,這個(gè)集合能保證主機(jī)和設(shè)備之間正常通信。這個(gè)格式也允許一些銷(xiāo)售商對(duì)設(shè)備命令的擴(kuò)展。Setup包后的數(shù)據(jù)傳送也具有USB定義的格式,除非這個(gè)數(shù)據(jù)是銷(xiāo)售商提供的信息?;貍鞯臓顟B(tài)信息仍然具有USB定義的格式。
2控制傳送的方向控制傳送使用的是消息通道上的雙向信息流。所以,一旦一個(gè)控制通道被確認(rèn)之后,這個(gè)通道就使用了具有某個(gè)端點(diǎn)號(hào)的兩個(gè)端點(diǎn),一個(gè)輸入,一個(gè)輸出。
3控制傳送包的大小的限制控制傳送的端點(diǎn)決定了它所能接收或發(fā)送的最大數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度。USB為高速設(shè)備定義的最大數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度為8、16、32或64字節(jié),低速設(shè)備的數(shù)據(jù)凈負(fù)荷區(qū)的長(zhǎng)度只能是8字節(jié)。Setup后的所有數(shù)據(jù)包都要遵守這個(gè)規(guī)定,這個(gè)規(guī)定是針對(duì)這些數(shù)據(jù)包中的數(shù)據(jù)凈負(fù)荷區(qū)的,不包括包中的協(xié)議要求的額外信息,Setup包實(shí)際上也是8字節(jié)??刂仆ǖ?包括缺省控制通道)總是使用wMaxPacketSize的值。端點(diǎn)在自己的設(shè)置信息中報(bào)告自己允許的最大凈負(fù)荷區(qū)長(zhǎng)度。USB不要求數(shù)據(jù)凈負(fù)荷區(qū)必須達(dá)到最大長(zhǎng)度,當(dāng)長(zhǎng)度不夠時(shí),不必填充到最大長(zhǎng)度。2023/7/2355.
主機(jī)控制器對(duì)高速設(shè)備的控制通道端點(diǎn)支持8、16、32、64字節(jié)的最大長(zhǎng)度,對(duì)低速設(shè)備支持8字節(jié)的長(zhǎng)度。它不能支持更大的或更小的其它長(zhǎng)度。對(duì)于缺省控制通道的最大數(shù)據(jù)區(qū)長(zhǎng)度,USB系統(tǒng)軟件要從設(shè)備描述器的頭8個(gè)字節(jié)中讀出,設(shè)備將這8個(gè)字節(jié)放在一個(gè)包中發(fā)出,其中的七個(gè)字包含了缺省通道的wMaxPacketSize。對(duì)其它的控制端點(diǎn)來(lái)說(shuō),USB系統(tǒng)軟件在它們被設(shè)置后,獲得此長(zhǎng)度,然后USB系統(tǒng)軟件就會(huì)保證數(shù)據(jù)凈負(fù)荷區(qū)不會(huì)超長(zhǎng)。另外,主機(jī)總是認(rèn)為數(shù)據(jù)凈負(fù)荷區(qū)的最大長(zhǎng)度至少為8。端點(diǎn)所傳的數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度必須小于或等于其wMaxPacketSize,當(dāng)一個(gè)數(shù)據(jù)區(qū)不能容納所傳數(shù)據(jù)時(shí),就分幾個(gè)區(qū)來(lái)傳。除最后一個(gè)區(qū)外,其它區(qū)都應(yīng)達(dá)到最大長(zhǎng)度。最后一區(qū)包含最后剩下的數(shù)據(jù)。當(dāng)端點(diǎn)做了以下兩件事時(shí),控制傳送的數(shù)據(jù)階段可被認(rèn)為結(jié)束:·已傳了由Setup階段指定的數(shù)據(jù)量?!髁艘粋€(gè)數(shù)據(jù)包,它的長(zhǎng)度為0或它的數(shù)據(jù)區(qū)長(zhǎng)度小于最大長(zhǎng)度。數(shù)據(jù)階段結(jié)束后,主機(jī)控制器進(jìn)入狀態(tài)階段,而不是開(kāi)始另一個(gè)數(shù)據(jù)傳誦。如果它不這樣做,端點(diǎn)會(huì)認(rèn)為通道脫線(xiàn)而中止通道(通道脫線(xiàn)見(jiàn)4.3.2)。如果主機(jī)在狀態(tài)階段時(shí),主機(jī)收到一個(gè)大于最大長(zhǎng)度的數(shù)據(jù)區(qū),那么請(qǐng)求這次傳送的IRP將被中止。當(dāng)數(shù)據(jù)全部傳完,主機(jī)與端點(diǎn)之間的控制傳送的數(shù)據(jù)階段結(jié)束。如果其間,端點(diǎn)收到了超過(guò)最大長(zhǎng)度的數(shù)據(jù)區(qū),它將中止通道。2023/7/2356.控制傳送的總線(xiàn)訪(fǎng)問(wèn)的限制
無(wú)論低速設(shè)備還是高速設(shè)備都可以使用控制通道。端點(diǎn)沒(méi)法指明控制通道對(duì)總線(xiàn)訪(fǎng)問(wèn)頻率的要求。USB權(quán)衡所有控制通道的總線(xiàn)訪(fǎng)問(wèn)頻率和正等待的IRP,從全局優(yōu)化,提供一個(gè)“最佳”傳送方案。USB要求數(shù)據(jù)幀中的一部分被留給控制傳送使用?!と绻灰l(fā)的控制傳送(引發(fā)方式由實(shí)現(xiàn)決定)只用了數(shù)據(jù)幀的不到10%的時(shí)間,則剩余的時(shí)間留給批傳送?!と绻粋€(gè)控制傳送被引發(fā)又被中止,則它的中止可在本次的幀內(nèi),也可在以后的幀內(nèi)。也就是說(shuō),引發(fā)和中止不必在同一個(gè)幀內(nèi)?!と绻艚o控制傳送的時(shí)間不夠用,但恰好有一些同步和中斷傳送的幀時(shí)間未用,則主機(jī)控制器利用這些時(shí)間進(jìn)行額外的控制傳送?!と绻麑?duì)可用的幀時(shí)間有太多的控制傳送在等待,那么就對(duì)它們進(jìn)行排序然后傳送?!と绻鱾€(gè)控制傳送申請(qǐng)的是不同的端點(diǎn),主機(jī)控制器根據(jù)公平訪(fǎng)問(wèn)原則決定它們的訪(fǎng)問(wèn)順序。公平訪(fǎng)問(wèn)原則的具體內(nèi)容決定于主機(jī)控制器的實(shí)現(xiàn)?!と绻粋€(gè)控制傳送事務(wù)頻繁地被中止,不能認(rèn)為給它的總線(xiàn)訪(fǎng)問(wèn)時(shí)間是不公平的。這些要求使得控制傳送一般可以在總線(xiàn)上進(jìn)行規(guī)則地、最優(yōu)化地傳送。
2023/7/2357.
高速控制端點(diǎn)必須支持OUT處理的PING流控制協(xié)議
對(duì)某個(gè)端點(diǎn)的控制傳送的速率是可以變化的,USB系統(tǒng)軟件控制這些離散的變化。端點(diǎn)和其客戶(hù)軟件不能想當(dāng)然的認(rèn)為其有一個(gè)固定的傳送速率,端點(diǎn)可能發(fā)現(xiàn)在一幀內(nèi)有零個(gè)或若干個(gè)傳送。一個(gè)端點(diǎn)和它相應(yīng)的客戶(hù)軟件可占用的總線(xiàn)時(shí)間會(huì)因?yàn)槠渌O(shè)備進(jìn)入或退出系統(tǒng)或者本設(shè)備上的其它端點(diǎn)進(jìn)入或退出系統(tǒng)而改變。總線(xiàn)頻率和幀定時(shí)決定于一個(gè)幀內(nèi)可傳送的控制傳送的最大個(gè)數(shù)。在任一個(gè)USB系統(tǒng)內(nèi),一個(gè)幀內(nèi)的8字節(jié)高速數(shù)據(jù)區(qū)須少于29個(gè),8字節(jié)低速數(shù)據(jù)區(qū)須少于4個(gè)。對(duì)于高速總線(xiàn),控制傳輸數(shù)量限制為每個(gè)微型幀小于32個(gè)高速的64字節(jié)數(shù)據(jù)有效負(fù)載.表是關(guān)于不同規(guī)格的高速的控制傳送的情況,以及在一幀內(nèi)可能的最大的傳送數(shù)目。這張表有兩個(gè)默認(rèn)的前提,即控制傳送有一個(gè)數(shù)據(jù)傳送階段而且這個(gè)數(shù)據(jù)傳送階段有一個(gè)長(zhǎng)度為0狀態(tài)階段,表還指出了出現(xiàn)兩個(gè)數(shù)據(jù)區(qū)都達(dá)不到最大長(zhǎng)度的情況,表中不包括用于位填充的一些額外的位。2023/7/2358.2023/7/2359.2023/7/2360.
因?yàn)橐粋€(gè)幀內(nèi)只留10%的時(shí)間給非周期性傳送,所以當(dāng)一個(gè)系統(tǒng)的總線(xiàn)時(shí)間被排滿(mǎn)的時(shí)候,這個(gè)系統(tǒng)內(nèi)的所有控制傳送只能去競(jìng)爭(zhēng)每個(gè)幀內(nèi)的三個(gè)控制傳送名額。因?yàn)槌丝蛻?hù)軟件會(huì)要求控制傳送外,USB系統(tǒng)要用控制傳送來(lái)傳送設(shè)置信息,所以對(duì)某個(gè)客戶(hù)和它的應(yīng)用就不能指望它們的控制傳送像它們想的一樣進(jìn)行。主機(jī)控制器可以自由地決定如何將某個(gè)具體的控制傳送在總線(xiàn)上進(jìn)行,可以在一個(gè)幀內(nèi),也可以跨幾個(gè)幀。一個(gè)端點(diǎn)可能發(fā)現(xiàn)一個(gè)控制傳送的各個(gè)總線(xiàn)處理事務(wù)在同一幀內(nèi)或分在幾個(gè)不連續(xù)的幀內(nèi)。由于具體實(shí)現(xiàn)的不同,主機(jī)控制器可能不能提供理論上的每幀的最大控制傳送數(shù)目。低速控制傳送與高速控制傳送都是競(jìng)爭(zhēng)同樣多的可用幀時(shí)間。低速控制傳送只是要用更多的時(shí)間來(lái)傳送罷了。表5-1列出了不同規(guī)格的低速包的情況,以及一幀內(nèi)允許的最大包數(shù)。這張表同樣沒(méi)包括進(jìn)管理用的開(kāi)銷(xiāo)。無(wú)論低速與高速,由于一個(gè)控制傳送都由幾個(gè)包組成,所以都可能要用幾個(gè)幀才能完成傳送。2023/7/2361.2023/7/2362.控制傳送的數(shù)據(jù)順序
要進(jìn)行控制傳送,先要由主機(jī)向設(shè)備發(fā)一個(gè)總線(xiàn)建立(Setup)信息。它描述了控制訪(fǎng)問(wèn)的類(lèi)型,設(shè)備將執(zhí)行此控制訪(fǎng)問(wèn)。這個(gè)階段之后,是零個(gè)或多個(gè)控制數(shù)據(jù)信息的傳送,這是進(jìn)行訪(fǎng)問(wèn)的具體信息。最后,由狀態(tài)信息的傳送來(lái)結(jié)束這次控制傳送,允許端點(diǎn)將這次控傳的狀態(tài)回送給客戶(hù)軟件。這次控傳完成之后,可以進(jìn)行對(duì)這個(gè)端點(diǎn)的下一個(gè)控傳,每次控傳何時(shí)在總線(xiàn)上進(jìn)行由主機(jī)控制器的具體實(shí)現(xiàn)決定。在數(shù)據(jù)傳送階段和狀態(tài)信息回傳階段,可能由于設(shè)備自身的原因,設(shè)備處于“忙”狀態(tài)。此時(shí)端點(diǎn)可設(shè)法表明自己正忙,主機(jī)將試著在稍后時(shí)間重傳一次。如果在上一個(gè)控傳結(jié)束之前,端點(diǎn)又收到一個(gè)總線(xiàn)建立信息,設(shè)備將結(jié)束現(xiàn)未完成的傳送,轉(zhuǎn)而處理新的控傳。正常情況下,是不會(huì)早發(fā)總線(xiàn)建立信息的,不過(guò)當(dāng)上一個(gè)控傳因錯(cuò)誤而被中止后,主機(jī)可發(fā)下一個(gè)控傳的總線(xiàn)建立信息。在端點(diǎn)看來(lái),這是在上一個(gè)控傳結(jié)束前過(guò)早發(fā)出的。一旦主機(jī)遇到一個(gè)引起中止的條件或檢測(cè)到一個(gè)錯(cuò)誤,端點(diǎn)可以通過(guò)接收下一個(gè)Setup包的PID來(lái)恢復(fù),也就是說(shuō),不一定必須從別的通道進(jìn)行恢復(fù)。對(duì)于缺省控制通道,如果端點(diǎn)收不到Setup的PID時(shí),最終會(huì)要求設(shè)備復(fù)位來(lái)清除中止條件或錯(cuò)誤條件。在控傳中,USB提供了強(qiáng)大的錯(cuò)誤檢測(cè)功能和錯(cuò)誤恢復(fù)和重傳功能。傳送器和接收器可以保持階段的同步,既關(guān)于他們?cè)诳貍鞯哪膫€(gè)階段這個(gè)問(wèn)題上保持同步。并且以最小的代價(jià)恢復(fù)。接收器可以識(shí)別一個(gè)數(shù)據(jù)重傳包或狀態(tài)信息重傳包,因?yàn)榘袔в袛?shù)據(jù)重傳的指示。一個(gè)發(fā)送器可以通過(guò)對(duì)方給它發(fā)的握手信息確知它發(fā)的數(shù)據(jù)重送包和狀態(tài)信息包已被成功接收,除了Setup包以外,協(xié)議可以將一個(gè)重送的包與原來(lái)的包區(qū)分開(kāi)來(lái),Setup包可以因?yàn)槌鲥e(cuò)而重傳,但無(wú)法說(shuō)明此包是重傳的,還是原來(lái)的.2023/7/2363.同步傳送
在非USB的環(huán)境下,同步傳送意味著恒定速率、錯(cuò)誤容忍(error-tolerant)的傳送。在USB環(huán)境下,要求同步傳送能提供以下幾點(diǎn):·固定的延遲下,確保對(duì)USB帶寬的訪(fǎng)問(wèn)?!ぶ灰獢?shù)據(jù)能提供得上,就能保證通道上的恒定數(shù)據(jù)傳送速度?!と绻捎阱e(cuò)誤而造成傳送失敗,并不重傳數(shù)據(jù)。當(dāng)USB同步傳送類(lèi)型被用來(lái)支持同步的源和目的時(shí),使用這個(gè)傳送類(lèi)型的軟件并不要求是同步的,后面章節(jié)詳細(xì)介紹USB上的同步數(shù)據(jù)的處理。.2023/7/2364.1同步傳送的數(shù)據(jù)格式對(duì)于同步傳送的通道(同步通道),USB并不對(duì)數(shù)據(jù)格式做要求.2同步傳送的方向同步通道是一種流通道,所以是單方向的。在對(duì)端點(diǎn)的描述中指明了與它相連的通道的數(shù)據(jù)流方向。如果設(shè)備要同步的雙向流的話(huà),只好用兩個(gè)同步通道,一個(gè)流進(jìn),一個(gè)流出.3同步傳送中包的大小的限制同步通道的端點(diǎn)確定了數(shù)據(jù)區(qū)的最大長(zhǎng)度,USB在設(shè)置端點(diǎn)期間,使用這一個(gè)信息,看是否可在每幀內(nèi)為最大長(zhǎng)度的數(shù)據(jù)區(qū)留下足夠的時(shí)間。如果可以,設(shè)置端點(diǎn)成功;否則,不成功.USB將全速同步端點(diǎn)的最大數(shù)據(jù)有效負(fù)載限制為1023字節(jié).高速端點(diǎn)允許最大為1024字節(jié)的數(shù)據(jù)有效負(fù)載.高速,高帶寬的端點(diǎn)指定了它在每個(gè)微型幀中要求兩個(gè)或三個(gè)處理.表5.4列出了不同的全速同步處理和在一幀中可能的最大處理數(shù)的信息.表的陰影部分表示的全速端點(diǎn)(WMAXPACKETSIZE不為0)不能是默認(rèn)接口設(shè)置的一部分.表中不與位填充有關(guān)的信息.2023/7/2365.2023/7/2366.表5.5列出了不同的高速同步處理的微型幀中可能的最大處理數(shù)的信息.表的陰影部分表示的高速同步端點(diǎn)不能是默認(rèn)接口設(shè)置的一部分.表中不包含與位填充有關(guān)的開(kāi)銷(xiāo)信息.任何同步管道的給定處理不必是為端點(diǎn)指定的最大數(shù)據(jù)的有效負(fù)載.數(shù)據(jù)有效負(fù)載值有發(fā)送器(客戶(hù)軟件和功能設(shè)備)決定,而且可以根據(jù)各個(gè)處理的不同要求變換.USB確保主機(jī)控制器提出的任意數(shù)據(jù)有效負(fù)載都能在總線(xiàn)上傳輸.數(shù)據(jù)有效負(fù)載的實(shí)際值有數(shù)據(jù)發(fā)生器設(shè)定,而且可能小于預(yù)先協(xié)商的最大值.總線(xiàn)錯(cuò)誤會(huì)改變接受器看到的實(shí)際包的值.這些錯(cuò)誤可以通過(guò)數(shù)據(jù)的CRC場(chǎng)或接收器對(duì)所有處理要求的大小檢測(cè)出來(lái).所有設(shè)備的默認(rèn)接口設(shè)置不能包括任何數(shù)據(jù)有效負(fù)載不為0(通過(guò)端點(diǎn)描述的WMAX-PACKESIZE指定)的同步端點(diǎn).其他接口配置可以為同步端點(diǎn)指定非零的數(shù)據(jù)有效負(fù)載.如果同步端點(diǎn)有大的數(shù)據(jù)有效負(fù)載,建議用其他配置或接口指定數(shù)據(jù)有效負(fù)載的范圍.這增加了設(shè)備其他USB設(shè)備組合使用的機(jī)會(huì).2023/7/2367.2023/7/2368.同步傳送的總線(xiàn)方向限制
只有全速和高速設(shè)備可以使用同步方式.USB要求全速端點(diǎn)的任意幀為周期(同步和中斷)傳輸分配的時(shí)間不超過(guò)90%,高速端點(diǎn)能為周期傳輸分配最多80%的微型幀時(shí)間.同步端點(diǎn)必須指定它要求的總線(xiàn)訪(fǎng)問(wèn)周期.全速/高速端點(diǎn)必須指定要求的周期是(2bInterval-1)xF,其中bInterval的范圍是0~16(包括16),而F在高速指是125us,而在全速指是1ms.這就允許全速/高速同步傳輸?shù)乃俾实陀诿浚ㄎ⑿停粋€(gè)處理。但是,一個(gè)同步傳輸端點(diǎn)必須準(zhǔn)備好處理比指定快的輪詢(xún)速率。主機(jī)不能在同步端點(diǎn)發(fā)出超過(guò)一個(gè)處理的(微型)幀,除非端點(diǎn)是高速,高帶寬端點(diǎn)。當(dāng)有比指定快的間隔請(qǐng)求數(shù)據(jù)而且數(shù)據(jù)不用時(shí),同步IN端點(diǎn)必須返回0長(zhǎng)度包。高速端點(diǎn)能在每(微型)幀(或192Mb/s)傳輸高達(dá)3072字節(jié)。在每周期要求超過(guò)1024字節(jié)的高速同步端點(diǎn)稱(chēng)為高帶寬端點(diǎn)。高帶寬端點(diǎn)在每個(gè)微型幀使用多個(gè)處理。高帶寬端點(diǎn)必須指定周期是1X125us(即bInterval的值是1)。2023/7/2369.總線(xiàn)錯(cuò)誤或操作系統(tǒng)在調(diào)度客戶(hù)軟件出現(xiàn)的延時(shí)會(huì)導(dǎo)致沒(méi)有包在(微型)幀中傳輸。此時(shí),應(yīng)將錯(cuò)誤指示器作為一個(gè)狀態(tài)信息返回給客戶(hù)軟件。設(shè)備通過(guò)跟蹤SOF令牌也能檢測(cè)出這種情況,而且它會(huì)指出在指定的總線(xiàn)訪(fǎng)問(wèn)周期模式有擾動(dòng)出現(xiàn)??偩€(xiàn)頻率和(微型)幀定時(shí)限制了任何USB系統(tǒng)的(微型)幀中最大同步處理數(shù)不僅要小于己151個(gè)全速1字節(jié)數(shù)據(jù)有效負(fù)載,而且要小于193個(gè)高速1字節(jié)數(shù)據(jù)有效負(fù)載,根據(jù)不同應(yīng)用的需要,主機(jī)控制器不可能使每個(gè)(微型)幀的最大同步處理數(shù)達(dá)到理論值。2023/7/2370.
同步傳送的數(shù)據(jù)順序
同步傳送不支持因總線(xiàn)錯(cuò)誤而進(jìn)行的重傳。接收器可以判斷是否發(fā)生了一個(gè)錯(cuò)誤,低級(jí)的USB協(xié)議不允許有握手信號(hào)給同步通道的發(fā)送者。一般情況下,是可以有握手信號(hào)來(lái)通知發(fā)送者包是否被成功地接收。對(duì)于同步傳送來(lái)說(shuō),定時(shí)比正確性和重傳更重要??紤]到總線(xiàn)的錯(cuò)誤率較低,協(xié)議就認(rèn)為傳送一般均能成功。同步接收者可以判斷自己是否在一個(gè)幀內(nèi)錯(cuò)過(guò)了一些數(shù)據(jù),而且能知道丟失了多少數(shù)據(jù)。因?yàn)闆](méi)有用來(lái)指示引起中止的條件的握手信號(hào),所以同步傳送的端點(diǎn)從不途停止。雖然,錯(cuò)誤信息可作為IRP的狀態(tài)來(lái)報(bào)告,但同步通道不會(huì)因此停下。錯(cuò)誤即使被查到,主機(jī)仍繼續(xù)處理下一幀的數(shù)據(jù)。因?yàn)橥絺魉偷膮f(xié)議不支持每次事務(wù)都進(jìn)行握手,所以錯(cuò)誤檢測(cè)的功能可以相對(duì)弱一些。2023/7/2371.
中斷傳送
中斷傳送是為這樣一類(lèi)設(shè)備設(shè)計(jì)的,它們只傳或收少量數(shù)據(jù),而且并不經(jīng)常進(jìn)行傳送,但它們有一個(gè)確定的服務(wù)周期,對(duì)中斷傳送有以下要求:·通道的最大服務(wù)期得到保證?!び捎阱e(cuò)誤而引起的重發(fā)在下一服務(wù)期進(jìn)行。
1中斷傳送的數(shù)據(jù)格式USB對(duì)中斷通道上的數(shù)據(jù)流格式無(wú)要求。
2中斷傳送的方向中斷通道是一種流通道,所以是單向的。端點(diǎn)描述信息指明了通道的數(shù)據(jù)流方向。3中斷傳送對(duì)包的長(zhǎng)度的限制中斷通道的端點(diǎn)決定自己能接收和發(fā)送的最大數(shù)據(jù)區(qū)長(zhǎng)度,全速設(shè)備允許最大不超過(guò)64字節(jié)(或更少)的數(shù)據(jù)區(qū),高速端點(diǎn)允許的最大數(shù)據(jù)有效負(fù)載高達(dá)1024字節(jié)。高速,高帶寬的端點(diǎn)指定了每個(gè)微型幀要求兩個(gè)或三個(gè)處理。而低速設(shè)備只允許不超過(guò)8個(gè)(或更少)字的數(shù)據(jù)區(qū)。這個(gè)最大值將應(yīng)用到數(shù)據(jù)包的數(shù)據(jù)的有效負(fù)載,即指定的包數(shù)據(jù)場(chǎng)的大小,不包括其他協(xié)議要求的信息。USB不要求數(shù)據(jù)包正好是最大值,即如果數(shù)據(jù)包小于最大值,它不需要被填補(bǔ)成具有最大數(shù)據(jù)有效負(fù)載。2023/7/2372.所有的主機(jī)控制器都要示支持高速設(shè)備的1024字節(jié)數(shù)據(jù)去和全速設(shè)備的64字節(jié)數(shù)據(jù)區(qū)和低速設(shè)備的8字節(jié)(或更少)的最大數(shù)據(jù)區(qū),對(duì)超過(guò)最大值的數(shù)據(jù)區(qū)則不要求支持
。USB系統(tǒng)軟件設(shè)置中斷通道的最大數(shù)據(jù)區(qū)長(zhǎng)度。在設(shè)備設(shè)置期間,這一信息將被使用,只有此設(shè)置有效,這個(gè)數(shù)值是不會(huì)改變的。在設(shè)置有效期間,USB系統(tǒng)軟件根據(jù)此數(shù)值來(lái)看分給這個(gè)通道的總線(xiàn)時(shí)間是否充分。如果充分,則通道建立,否則不建立。與控制通道不同,USB系統(tǒng)不為中斷通道調(diào)整總線(xiàn)時(shí)間。所以對(duì)給定的USB系統(tǒng),要么支持此通道,要么不支持。實(shí)際傳送的數(shù)據(jù)區(qū)長(zhǎng)度由發(fā)送器決定,可以小于最大長(zhǎng)度。端點(diǎn)所發(fā)的數(shù)據(jù)區(qū)中的數(shù)據(jù)長(zhǎng)度不能超過(guò)端點(diǎn)的wMaxPacketSize的值。而設(shè)備可以通過(guò)中斷傳送來(lái)傳比此值多的數(shù)據(jù)??蛻?hù)軟件可以通過(guò)中斷傳送的IRP來(lái)接收這批數(shù)據(jù),這個(gè)中斷傳送要求多個(gè)總線(xiàn)處理事務(wù)來(lái)完成,且要求每個(gè)事務(wù)后都有IRP完成的信號(hào)。可以設(shè)置一個(gè)緩沖區(qū),它的長(zhǎng)度為wMaxPacketSize的整數(shù)倍,再加上一個(gè)零頭。對(duì)需要的多個(gè)總線(xiàn)事務(wù)來(lái)說(shuō),除最后一個(gè)外,前面的事務(wù)都傳遞wMaxPacketSize長(zhǎng)度的包,后一個(gè)傳剩下的零頭。這些總線(xiàn)處理事務(wù)都在為通道建立的服務(wù)周期內(nèi)進(jìn)行。2023/7/2373.
如果一個(gè)中斷傳送要傳的數(shù)據(jù)不能放在一個(gè)數(shù)據(jù)區(qū)中,就分幾個(gè)區(qū),前幾個(gè)區(qū)都是最大長(zhǎng)度,最后一個(gè)包含剩下的長(zhǎng)度。當(dāng)出現(xiàn)以下情況時(shí),認(rèn)為中斷傳送結(jié)束:
·已傳的數(shù)據(jù)量恰好與期望的數(shù)據(jù)量同?!髁艘粋€(gè)有一個(gè)數(shù)據(jù)區(qū)的包,此包的長(zhǎng)度小于wMaxPacketSize或傳了一個(gè)長(zhǎng)度為零的包。如果一個(gè)中斷傳送完成,那么主機(jī)控制器結(jié)束當(dāng)前的IRP,并開(kāi)始下一個(gè)IRP。如果數(shù)據(jù)區(qū)的長(zhǎng)度比預(yù)料的長(zhǎng),當(dāng)前IRP中止,并且只有等到出錯(cuò)條件被確認(rèn)且清除后,才能開(kāi)始后面的IRP。2023/7/2374.
中斷傳送對(duì)總線(xiàn)訪(fǎng)問(wèn)的限制
高速設(shè)備,全速設(shè)備和低速設(shè)備均可使用中斷傳送。高速端點(diǎn)可以分配幾乎80%的微型幀進(jìn)行周期傳輸,USB要求不能分配超過(guò)90%的幀給周期性的(同步和中斷)全速/低速傳輸。總線(xiàn)頻率和(微型)幀定時(shí)限制了在任何USB系統(tǒng)的一個(gè)(微型)幀中成功的最大中斷處理數(shù)小于108個(gè)全速1字節(jié)數(shù)據(jù)有效負(fù)載,或者小于10個(gè)低速1字節(jié)數(shù)據(jù)有效負(fù)載,或者小于134個(gè)高速1字節(jié)數(shù)據(jù)有效負(fù)載。根據(jù)不同的實(shí)際應(yīng)用情況,主機(jī)控制器不可能提供上面所說(shuō)每個(gè)(微型)幀的最大中斷處理數(shù)。表5.6列出了不同的低速中斷處理和一幀中可能的最大處理數(shù)的信息.表5.7是全速的中斷處理類(lèi)的信息.表5.8是高速終端處理類(lèi)的信息.表5.8的陰影部分表示高速中斷端點(diǎn)不是默認(rèn)接口設(shè)置的一部分.表中不包含與位填充有關(guān)的開(kāi)銷(xiāo)信息.
2023/7/2375.2023/7/2376.2023/7/2377.2023/7/2378.中斷管道的端點(diǎn)指定了它要求的總線(xiàn)訪(fǎng)問(wèn)周期.全速的端點(diǎn)要求的周期范圍從1~255ms.低速端點(diǎn)被限制為10~255ms。高速端點(diǎn)要求的周期是(2binterval-1)X125us,其中bInterval的范圍為1~16(包括16)。USB系統(tǒng)軟件將在配置中使用這個(gè)信息以確定可以維持不變的周期。系統(tǒng)提供的周期可能比設(shè)備所要求的短,而且達(dá)到USB定義的最短周期(125us的微型幀或1ms的幀)??蛻?hù)軟件和設(shè)備只能依賴(lài)于這樣的事實(shí):主機(jī)保證端點(diǎn)兩個(gè)處理嘗試之間的持續(xù)時(shí)間不會(huì)比所要求的周期長(zhǎng)。注意,總線(xiàn)錯(cuò)誤會(huì)妨礙中斷處理在總線(xiàn)上傳輸成功,因此超出了要求的周期。當(dāng)客戶(hù)軟件有掛起的中斷傳輸IRP時(shí),才會(huì)輪詢(xún)端點(diǎn)。如果到達(dá)執(zhí)行中斷傳輸?shù)目偩€(xiàn)時(shí)間但沒(méi)有掛起的IRP,那么端點(diǎn)將沒(méi)有傳輸數(shù)據(jù)的機(jī)會(huì)。一旦IRP有效,它的數(shù)據(jù)將在下一個(gè)分配的周期傳輸。高速端點(diǎn)在每個(gè)微型幀(或192Mb/s)能傳輸3072字節(jié).要求每個(gè)周期傳輸超過(guò)1024字節(jié)的告訴端點(diǎn)被稱(chēng)為高帶寬端點(diǎn).高帶寬端點(diǎn)在沒(méi)個(gè)微型幀使用多個(gè)處理.高帶寬端點(diǎn)必須指定周期1X125us(bInterval=1).通過(guò)在每個(gè)指定的周期訪(fǎng)問(wèn)中斷端點(diǎn),可以在USB上進(jìn)行中斷傳輸.對(duì)于輸入的中斷端點(diǎn),主機(jī)在不訪(fǎng)問(wèn)端點(diǎn)和請(qǐng)求中斷傳輸?shù)那闆r下不能確定端點(diǎn)是否中斷的信源.如果當(dāng)主機(jī)訪(fǎng)問(wèn)端點(diǎn)沒(méi)有傳輸?shù)闹袛鄶?shù)據(jù),惻會(huì)以NAK響應(yīng).端點(diǎn)應(yīng)只在中斷等待時(shí)提供中斷數(shù)據(jù),避免客戶(hù)軟件錯(cuò)誤地通知IRP結(jié)束.長(zhǎng)度為0的數(shù)據(jù)有效負(fù)載是有效的傳輸,在一些應(yīng)用上非常有效.2023/7/2379.中斷傳輸?shù)臄?shù)據(jù)順序中斷傳送可以利用0/1跳變位(toggle位)的機(jī)制,當(dāng)成功的進(jìn)行了一個(gè)傳送,該位就跳變一次。主機(jī)總是認(rèn)為設(shè)備是遵守完備的握手協(xié)議和重發(fā)協(xié)議(參見(jiàn)第7章)。但如果無(wú)論傳送成功否,設(shè)備都在Data1/Data0間跳變PID,就忽略主機(jī)發(fā)來(lái)的握手信號(hào)。但這時(shí),客戶(hù)軟件會(huì)丟失一些包。因?yàn)橛绣e(cuò)誤發(fā)生時(shí),主機(jī)控制器會(huì)把設(shè)備發(fā)的下一個(gè)包當(dāng)作上一個(gè)包的重發(fā)。一旦在中斷通道上檢測(cè)到一個(gè)引起中止的條件,或收到設(shè)備發(fā)來(lái)的STALL握手信號(hào),所有正等待的IRP都會(huì)中止。由軟件通過(guò)獨(dú)立的控制通道來(lái)消除中止條件。清除后,設(shè)備和主機(jī)都復(fù)位到Data0的狀態(tài)。如果總線(xiàn)上出現(xiàn)了一個(gè)影響傳送的錯(cuò)誤,則中斷處理事務(wù)會(huì)停止.2023/7/2380.批量傳送
為了支持在某些在不確定的時(shí)間進(jìn)行的相當(dāng)大量的數(shù)據(jù)通信,于是設(shè)計(jì)了批傳送類(lèi)型。它可以利用任何可獲得的帶寬。批傳送有以下幾點(diǎn)特性:·以可獲得帶寬訪(fǎng)問(wèn)總線(xiàn)?!と绻偩€(xiàn)出現(xiàn)錯(cuò)誤,傳送失敗,可進(jìn)行重發(fā)?!た梢员WC數(shù)據(jù)必被傳送,但不保證傳送的帶寬和延遲。只當(dāng)有可獲得的帶寬時(shí),批傳送才會(huì)發(fā)生。如果USB有較多的空閑帶寬,則批傳送發(fā)生地相對(duì)頻繁,如果空閑帶寬較少,可能有很長(zhǎng)時(shí)間沒(méi)有批傳送發(fā)生.2023/7/2381.1批傳送的數(shù)據(jù)格式USB沒(méi)有規(guī)定批通道上數(shù)據(jù)流的格式2批傳送的方向批通道是一種流通道,所以總是單方向的。如果要進(jìn)行雙向傳送,必須用兩個(gè)通道。3批傳送對(duì)包長(zhǎng)度的限制
批傳送的端點(diǎn)決定自己可以接收或傳送的最大數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度。USB規(guī)定最大的批數(shù)據(jù)凈負(fù)荷區(qū)的長(zhǎng)度為8、16、32或64字節(jié),高速端點(diǎn)的最大值是512字節(jié),而低速設(shè)備沒(méi)有批量端點(diǎn).這個(gè)最大長(zhǎng)度是指數(shù)據(jù)包中數(shù)據(jù)區(qū)的最大長(zhǎng)度,不包括協(xié)議要求的一些管理信息.批端點(diǎn)必須支持規(guī)定的最大長(zhǎng)度中的一個(gè),這個(gè)長(zhǎng)度將在端點(diǎn)的設(shè)置信息中說(shuō)明。USB并不要求每個(gè)數(shù)據(jù)凈負(fù)荷區(qū)都達(dá)到最大長(zhǎng)度,即如果不夠長(zhǎng)度的話(huà),不必填充至最大長(zhǎng)度。所有主機(jī)控制器必須分別支持8、16、32或64作為最大長(zhǎng)度和高速批量端點(diǎn)512字節(jié)的最大包,而對(duì)更大或更小的長(zhǎng)度可以不必支持。在配置其間,USB系統(tǒng)軟件讀出了端點(diǎn)的數(shù)據(jù)有效負(fù)載最大值,并確保不會(huì)向端點(diǎn)發(fā)送比所支持的值還大的有效負(fù)載.端點(diǎn)發(fā)送的數(shù)據(jù)負(fù)載其數(shù)據(jù)場(chǎng)必須小于或等于端點(diǎn)的wMaxPacketSize值。當(dāng)批量IRP包含的數(shù)據(jù)超過(guò)數(shù)據(jù)有效負(fù)載的最大值時(shí),要求所有數(shù)據(jù)有效負(fù)載都是最大值,但包含剩余數(shù)據(jù)的最后一個(gè)數(shù)據(jù)負(fù)載除外。當(dāng)端點(diǎn)執(zhí)行以下的操作時(shí),批量傳輸完成:
2023/7/2382.·已傳的數(shù)據(jù)量恰好等于期望傳送的量?!髁艘粋€(gè)不到wMaxPacketSize長(zhǎng)度的包或傳了一個(gè)長(zhǎng)度為0的包。一旦批傳送結(jié)束,主機(jī)控制器中止當(dāng)前的IRP,并開(kāi)始下一個(gè)IRP。如果收到的一個(gè)數(shù)據(jù)凈負(fù)荷區(qū)超長(zhǎng),則所有在等待此端點(diǎn)的批傳送IRP都將被中止/取消。
4批傳送對(duì)總線(xiàn)訪(fǎng)問(wèn)的限制只有全速和高速設(shè)備可以使用批傳送。端點(diǎn)無(wú)法提出對(duì)批通道的總線(xiàn)訪(fǎng)問(wèn)頻率的要求。USB會(huì)協(xié)調(diào)所有批傳送和正等待的IRP的總線(xiàn)訪(fǎng)問(wèn)請(qǐng)求,以獲得在客戶(hù)軟件和應(yīng)用層之間的“最佳”傳送效果??偩€(xiàn)上的控制傳送的優(yōu)先級(jí)比批傳送高。對(duì)于控制傳送,有可保證的傳送時(shí)間,而對(duì)批傳送,沒(méi)有。只有當(dāng)有可用的總線(xiàn)帶寬時(shí),批傳送才發(fā)生。如果有段時(shí)間沒(méi)有被用于其他目的,這段時(shí)間將用于批傳送。如果正等待的各個(gè)批傳送是要往不同的端點(diǎn)去的,主機(jī)控制器將根據(jù)公平訪(fǎng)問(wèn)原則,安排它們的順序。至于公平訪(fǎng)問(wèn)原則的具體內(nèi)容,由主機(jī)控制器的實(shí)現(xiàn)決定。系統(tǒng)中的所有批傳送是競(jìng)爭(zhēng)同一個(gè)可用的總線(xiàn)時(shí)間的,所以USB系統(tǒng)軟件可以改變對(duì)某個(gè)特定端點(diǎn)進(jìn)行的批傳送所占有的總線(xiàn)時(shí)間。所以端點(diǎn)和它的客戶(hù)軟件不能夠期望有一個(gè)特定的批傳送的速度。當(dāng)有設(shè)備被加進(jìn)或移出USB系統(tǒng)或出現(xiàn)對(duì)其它設(shè)備上端點(diǎn)的請(qǐng)求時(shí),端點(diǎn)和它的客戶(hù)軟件可獲得的總線(xiàn)時(shí)間將起一定變化。但客戶(hù)軟件不能主觀(guān)地認(rèn)為批傳送與控制傳送的順序,有時(shí),批傳送會(huì)在控制傳送之前進(jìn)行。
2023/7/2383.高速批量OUT端點(diǎn)必須支持PING流控制協(xié)議??偩€(xiàn)頻率和(微型)幀定制了USB系統(tǒng)中一個(gè)(微型)幀中成功的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險(xiǎn)代理居間合同委托書(shū)
- 服裝企業(yè)辦公大廈居間協(xié)議
- 液態(tài)化學(xué)試劑配送合同
- 2025年度工業(yè)控制系統(tǒng)安全工程師勞動(dòng)合同
- 娛樂(lè)場(chǎng)所泔水運(yùn)輸合作協(xié)議
- 家具城配送服務(wù)合同模板
- 煤矸石清運(yùn)施工方案
- 綿陽(yáng)市道路施工方案
- 完善教育評(píng)價(jià)體系:深化改革的策略與路徑探索
- 初中藏文版數(shù)學(xué)試卷
- 康復(fù)評(píng)定頸椎病
- 公司安全生產(chǎn)事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)工作制度
- H3CNE認(rèn)證考試題庫(kù)官網(wǎng)2022版
- 感統(tǒng)訓(xùn)練培訓(xùn)手冊(cè)(適合3-13歲兒童)
- 公司章程范本(完整版)
- 廠(chǎng)房委托經(jīng)營(yíng)管理合同范本
- 《保險(xiǎn)科技》課件-第二章 大數(shù)據(jù)及其在保險(xiǎn)領(lǐng)域中的應(yīng)用
- 父母贈(zèng)與田地協(xié)議書(shū)范本
- 中藥甘草課件
- 解讀國(guó)有企業(yè)管理人員處分條例(2024)課件(全文)
- 煙草企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范1-200題附有答案
評(píng)論
0/150
提交評(píng)論