USB20協(xié)議深入解讀課件_第1頁
USB20協(xié)議深入解讀課件_第2頁
USB20協(xié)議深入解讀課件_第3頁
USB20協(xié)議深入解讀課件_第4頁
USB20協(xié)議深入解讀課件_第5頁
已閱讀5頁,還剩283頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

USB協(xié)議簡介USB是一種協(xié)議總線,即主機與設(shè)備之間的通信需要遵循一系列約定。協(xié)議內(nèi)容較多,這里僅作一些簡單介紹,深入學習,可參看USB規(guī)范(WWW.usb.org)。為了理解協(xié)議中的名稱,先看圖10.32。該圖突出了主機上的客戶軟件和USB邏輯設(shè)備(編程涉及的設(shè)備)之間的通信流(CommunicationFlow),該通信流跨越了USB驅(qū)動程序USBD、主控制器驅(qū)動程序UHCD、主控制器等硬件接口及其連接。端點(Endpoints)是USB設(shè)備的惟一可識別的部分,是主機和設(shè)備之間通信流的終點。每一個邏輯設(shè)備有若干個獨立端點,每一個端點在設(shè)計時被分配一個惟一的由設(shè)備確定的標識符,稱之為端點號。如圖10.32所示,將用于通信流流動的通道稱為管道(Pipe),這是忽略了許多中間環(huán)節(jié)的很形象的稱呼,對于理解USB系統(tǒng)中的信息傳輸很有幫助。圖中把3個端點看成了一個接口,關(guān)于接口的說明安排在后面。2023/7/231.USB2.0協(xié)議2023/7/232.(一)USB2.0的背景COMPAQ、HewlettPackard、Intel、Lucent、Microsoft、NEC和PHILIPS這7家廠商聯(lián)合制定了USB2.0接口標準USB2.0規(guī)范是由USB1.1規(guī)范演變而來的,USB2.0將設(shè)備之間的數(shù)據(jù)傳輸速度增加到480Mbps,折算為MB為60MB/S,比USB1.1標準快40倍左右.USB2.0與USB1.1可以互相兼容,USB2.0設(shè)備可以工作在USB1.1接口上,USB1.0設(shè)備也可以工作在USB2.0接口,USB1.1設(shè)備的速度不會因為安裝在USB2.0接口上而有任何提高,同樣安裝在USB1.1接口上的USB2.0設(shè)備的速度也會被限制在12mbps(1.5MB/S)以下.USB2.0和USB1.1使用的連接電纜及端口均相同.2023/7/233.(二)USB2.0協(xié)議規(guī)范目的USB2.0規(guī)范描述了總線屬性,協(xié)議定義,處理類型,總線管理和編程接口,以滿足設(shè)計和構(gòu)建符合該標準的系統(tǒng)和外設(shè)的要求.USB2.0規(guī)范的主要目標用戶是外設(shè)開發(fā)者和系統(tǒng)OEM.USB2.0規(guī)范的目標是使不同廠商的器件可以在開放的結(jié)構(gòu)中相互操作2023/7/234.(三)USB應(yīng)用分類符合USB1.1規(guī)范的標志符合USB2.0規(guī)范的標2023/7/235.(四)USB2.0的結(jié)構(gòu)體系USB系統(tǒng)物理層接口電源總線協(xié)議健壯性系統(tǒng)配置數(shù)據(jù)流類型USB設(shè)備USB主機-----硬件和軟件體系結(jié)構(gòu)的擴展2023/7/236.USB2.0系統(tǒng)USB2.0系統(tǒng)主要被定義為三個部分:1.USB的互連;2.USB的設(shè)備;3.USB的主機USB的互連是指USB設(shè)備與主機之間進行連接和通信的操作,主要包括以下幾方面:1.總線的拓撲結(jié)構(gòu):USB設(shè)備與主機之間的各種連接方式;2.內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB的任務(wù)被分配到系統(tǒng)的每一個層次;3.數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過USB從產(chǎn)生方到使用方的流動方式;4.USB的調(diào)度:

USB提供了一個共享的連接。對可以使用的連接進行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級判別的開銷.

2023/7/237.1.USB2.0的主機在任何USB系統(tǒng)中,只有一個主機。USB和主機系統(tǒng)的接口稱作主機控制器,主機控制器可由硬件、固件和軟件綜合實現(xiàn)。根集線器是由主機系統(tǒng)整合的,用以提供更多的連接點.2.USB2.0的設(shè)備USB的設(shè)備如下所示:1.網(wǎng)絡(luò)集線器,向USB提供了更多的連接點;

2.功能器件,為系統(tǒng)提供具體功能,如ISDN的連接,數(shù)字的游戲桿或揚聲器;USB設(shè)備提供的USB標準接口的主要依據(jù):1.對USB協(xié)議的運用;2.對標準USB操作的反饋,如設(shè)置和復位;3.標準性能的描述性信息;

2023/7/238.USB2.0總線布局技術(shù)

USB連接了USB設(shè)備和USB主機,USB的物理連接是有層次性的星型結(jié)構(gòu)。每個網(wǎng)絡(luò)集線器是在星型的中心,每條線段是點點連接。從主機到集線器或其功能部件,或從集線器到集線器或其功能部件.

2023/7/239.USB2.0的物理接口USB的物理接口分為總線的電氣規(guī)范和機械特性.1.電氣特性USB在一條4線的電纜上傳輸信號和電源.信號在兩條點對點連接線上傳輸.USB2.0支持3種數(shù)據(jù)數(shù)率:.USB高速信號位速率是480Mb/s.USB全速信號位速率是12Mb/s.USB低速信號位速率是1.5Mb/sUSB2.0主機控制器和集線器提供了一種性能,使全速和低速數(shù)據(jù)可以在主機控制器和HUB之間高速傳輸,而HUB和設(shè)備之間以全速或低速傳輸,這種性能將全速和低速設(shè)備對高速設(shè)備可用帶寬的影響減到最小.低速模式用于支持例如鼠標等數(shù)量有限的低寬帶設(shè)備,因為使用太多這種設(shè)備將降低總線的利用率.時鐘與差動數(shù)據(jù)一起編碼傳送,時鐘是以帶位填充的NRZI方式編碼,以保證有足夠的跳變沿.接收器用每個包前面的SYNC場同步它們的位恢復時鐘.每段電纜還有向設(shè)備提供電源的VBUS和GND線.VBUS在源極的標稱值是+5V.通過選擇適當?shù)膶Ь€規(guī)格來匹配指定的IRdrop和其它一些特性,如設(shè)備能源預(yù)算和電纜適應(yīng)度.為了保證足夠的輸入電壓和終端阻抗。重要的終端設(shè)備應(yīng)位于電纜的尾部。在每個端口都可檢測終端是否連接或分離,并區(qū)分出高速,或低速設(shè)備.2023/7/2310.USB電纜2023/7/2311.2023/7/2312.2.機械特性電纜和連接器的機械特性將在機械特性章節(jié)詳述。所有設(shè)備都有一個上行的連接。上行連接器和下行連接器是不可簡單的互換,這樣就避免了集線器間的非法的循環(huán)往復的連接,電纜中有四根導線:一對互相纏繞的標準規(guī)格線,一對符合標準的電源線,連接器有四個方向,具有屏蔽層,以避免外界干擾,并有易拆裝的特性。2023/7/2313.USB2.0電源主要包括兩方面:

·電源分配:即USB的設(shè)備如何通過USB分配得到由主計算機提供的能源;

·電源管理:即通過電源管理系統(tǒng),USB的系統(tǒng)軟件和設(shè)備如何與主機協(xié)調(diào)工作.1.電源分配每個USB單元通過電纜只能提供有限的能源。主機對那種直接相連的USB設(shè)備提供電源供其使用。并且每個USB設(shè)備都可能有自己的電源。那些完全依靠電纜提供能源的設(shè)備稱作“總線供能”設(shè)備.相反,那些可選擇能源來源的設(shè)備稱作“自供電”設(shè)備.而且,集線器也可由與之相連的USB設(shè)備提供電源。受一定布局限制的帶有“總線供能”集線器的體系結(jié)構(gòu)將在集線器部分討論。在圖中,鍵盤,輸入筆和鼠標均為“總線供能”設(shè)備.2023/7/2314.2023/7/2315.2.電源管理

USB主機與USB系統(tǒng)有相互獨立的電源管理系統(tǒng)。USB的系統(tǒng)軟件可以與主機的能源管理系統(tǒng)結(jié)合共同處理各種電源子件如掛起、喚醒,并且有特色的是,USB設(shè)備應(yīng)用特有的電源管理特性,可讓系統(tǒng)軟件和控制其電源管理.

USB的電源分配和電源管理特性使之可以被設(shè)計在電源傳感系統(tǒng)中,如采用電池的筆記本電腦.典型USB外設(shè)的電源供應(yīng)

2023/7/2316.USB2.0總線協(xié)議USB總線屬一種輪訊方式的總線,主機控制端口初始化所有的數(shù)據(jù)傳輸.每一總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時,主機控制器發(fā)送一個描述傳輸運作的種類、方向,USB設(shè)備地址和終端號的USB數(shù)據(jù)包,這個數(shù)據(jù)包通常稱為標志包(tokenpacket)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機到設(shè)備就是從設(shè)備到主機。在傳輸開始時,由標志包來標志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機和設(shè)備的端口之間,可視為一個通道。存在兩種類型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USB所定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端口特性(如方向和緩沖區(qū)大?。┯嘘P(guān)。多數(shù)通道在USB設(shè)備設(shè)置完成后即存在。USB中有一個特殊的通道——缺省控制通道,它屬于消息通道,當設(shè)備一啟動即存在,從而為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供一個入口。

事務(wù)預(yù)處理允許對一些數(shù)據(jù)流的通道進行控制,從而在硬件級上防止了對緩沖區(qū)的高估或低估,通過發(fā)送不確認握手信號從而阻塞了數(shù)據(jù)的傳輸速度。當不確認信號發(fā)過后,若總線有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機制允許靈活的任務(wù)安排,可使不同性質(zhì)的流通道同時正常工作,這樣多種流通??稍诓煌g隔進行工作,傳送不同大小的數(shù)據(jù)包。2023/7/2317.USB2.0健壯性USB健壯性的特征在于:

·使用差分的驅(qū)動接收和防護,以保證信號完整性;

·在數(shù)據(jù)和控制信息上加了循環(huán)冗余碼(CRC);

·對裝卸的檢測和系統(tǒng)級資源的設(shè)置;

·對丟失或損壞的數(shù)據(jù)包暫停傳輸、利用協(xié)議自我恢復;

·對流數(shù)據(jù)進行控制,以保證同步信號和硬件緩沖管理的安全;

·數(shù)據(jù)和控制通道的建立,使功能部件的相互不利的影響?yīng)毩㈤_,消除了負作用.1.錯誤檢測USB傳輸介質(zhì)產(chǎn)生的錯誤率是與自然界的異?,F(xiàn)象的概率相吻合,是瞬時一現(xiàn)的,因此就要在每個數(shù)據(jù)包中加入檢測位來發(fā)現(xiàn)這些瞬時的錯誤,并且提供了一系列硬件和軟件設(shè)施來保證數(shù)據(jù)的正確性。

協(xié)議中對每個包中的控制和數(shù)據(jù)位都提供了循環(huán)冗余碼校驗,若出現(xiàn)了循環(huán)冗余碼的錯誤則被認為是該數(shù)據(jù)包已被損壞,循環(huán)冗余碼可對一位或兩位的錯誤進行100%的修復。2.錯誤處理協(xié)議在硬件或軟件級上提供對錯誤的處理。硬件的錯誤處理包括匯報并重新進行上一次失敗的傳輸、傳輸中若遇到錯誤,USB主機控制器將重新進行傳輸,最多可再進行三次。若錯誤依然存在,則對客戶端軟件報告錯誤,客戶端軟件可用一種特定的方法進行處理2023/7/2318.USB2.0系統(tǒng)配置USB設(shè)備可以隨時的安裝和折卸,因此,系統(tǒng)軟件在物理的總線布局上必須支持這種動態(tài)變化.

1.

USB設(shè)備的安裝所有的USB設(shè)備都是通過端口接在USB上,網(wǎng)絡(luò)集線器知道這些指定的USB設(shè)備,集線器有一個狀態(tài)指示器指明在其某個端口上,USB設(shè)備是否被安裝或拆除了,主機將所有的集線器排成隊列以取回其狀態(tài)指示。在USB設(shè)備安裝后,主機通過設(shè)備控制通道激活該端口并以預(yù)設(shè)的地址值給USB設(shè)備.

主機對每個設(shè)備指定唯一的USB地址。并檢測這種新裝的USB設(shè)備是集線器還是功能部件。主機為USB設(shè)備建立了控制通道,使用指定的USB的地址和零號端口.

如果安裝的USB設(shè)備是集線器,并且USB設(shè)備連在其端口上,那上述過程對每個USB設(shè)備的安裝都要做一遍.

如果安裝的設(shè)備是功能部件,那么主機中關(guān)于該設(shè)備的軟件將因設(shè)備的連接而被引發(fā).

2023/7/2319.2.USB設(shè)備的拆卸當USB設(shè)備從集線器的端口拆除后,集線器關(guān)閉該端口,并且向主機報告該設(shè)備已不存在。USB的系統(tǒng)軟件將準確進行處理,如果去除的USB設(shè)備上集線器,USB的系統(tǒng)軟件將對集線器反連在其上的所有設(shè)備進行處理3.總線標號總線標號就是對連接在總線上的設(shè)備指定唯一的地址的一種動作,因為USB允許USB設(shè)備在任何時刻從USB上安裝或拆卸,所以總線標號是USB的系統(tǒng)軟件始終要作的動作,而且總線標號還包括對拆除設(shè)備的檢測和處理2023/7/2320.數(shù)據(jù)流種類

數(shù)據(jù)和控制信號在主機和USB設(shè)備間的交換存在兩種通道:單向和雙向。USB的數(shù)據(jù)傳送是在主機軟件和一個USB設(shè)備的指定端口之間。這種主機軟件和USB設(shè)備的端口間的聯(lián)系稱作通道??偟膩碚f,各通道之間的數(shù)據(jù)流動是相互獨立的。一個指定的USB設(shè)備可有許多通道。例如,一個USB設(shè)備存在一個端口,可建立一個向其它USB設(shè)備的端口,發(fā)送數(shù)據(jù)的通道,它可建立一個從其它USB設(shè)備的端口接收數(shù)據(jù)的通道.USB的結(jié)構(gòu)包含四種基本的數(shù)據(jù)傳輸類型:

·控制數(shù)據(jù)傳送:在設(shè)備連接時用來對設(shè)備進行設(shè)置,還可對指定設(shè)備進行控制,如通道控制;

·批量數(shù)據(jù)傳送:大批量產(chǎn)生并使用的數(shù)據(jù),在傳輸約束下,具有很廣的動態(tài)范圍;

·中斷數(shù)據(jù)的傳送:用來描述或匹配人的感覺或?qū)μ卣鞣磻?yīng)的回饋。

·同步數(shù)據(jù)的傳送:由預(yù)先確定的傳送延遲來填滿預(yù)定的USB帶寬。

對于任何對定的設(shè)備進行設(shè)置時一種通道只能支持上述一種方式的數(shù)據(jù)傳輸,數(shù)據(jù)流模式的更多細節(jié)在數(shù)據(jù)流模型章節(jié)中詳述2023/7/2321.1

控制數(shù)據(jù)傳送當USB設(shè)備初次安裝時,USB系統(tǒng)軟件使用控制數(shù)據(jù)對設(shè)備進行設(shè)置,設(shè)備驅(qū)動程序通過特定的方式使用控制數(shù)據(jù)來傳送,數(shù)據(jù)傳送是無損性的.2

批量數(shù)據(jù)傳送批量數(shù)據(jù)是由大量的數(shù)據(jù)組成,如使用打印機和掃描儀時,批量數(shù)據(jù)是連續(xù)的。在硬件級上可使用錯誤檢測可以保證可靠的數(shù)據(jù)傳輸,并在硬件級上引入了數(shù)據(jù)的多次傳送。此外根據(jù)其它一些總線動作,被大量數(shù)據(jù)占用的帶寬可以相應(yīng)的進行改變.3

中斷數(shù)據(jù)傳輸中斷數(shù)據(jù)是少量的,且其數(shù)據(jù)延遲時間也是有限范圍的。這種數(shù)據(jù)可由設(shè)備在任何時刻發(fā)送,并且以不慢于設(shè)備指定的速度在USB上傳送。

中斷數(shù)據(jù)一般由事件通告,特征及座標號組成,只有一個或幾個字節(jié)。匹配定點設(shè)備的座標即為一例,雖然精確指定的傳輸率不必要,但USB必須對交互數(shù)據(jù)提供一個反應(yīng)時間的最低界限.2023/7/2322.4

同步傳輸同步數(shù)據(jù)的建立、傳送和使用時是連續(xù)且實時的,同步數(shù)據(jù)是以穩(wěn)定的速率發(fā)送和接收實時的信息,同步數(shù)據(jù)要使接收者與發(fā)送者保持相同的時間安排,除了傳輸速率,同步數(shù)據(jù)對傳送延遲非常敏感。所以同步通道的帶寬的確定,必須滿足對相關(guān)功能部件的取樣特性。不可避免的信號延遲與每個端口的可用緩沖區(qū)數(shù)有關(guān)。

一個典型的同步數(shù)據(jù)的例子是語音,如果數(shù)據(jù)流的傳送率不能保持,數(shù)據(jù)流是否丟失將取決于緩沖區(qū)的大小和損壞的程度。即使數(shù)據(jù)在USB硬件上以合適的速率傳送,軟件造成的傳送延遲將對那些如電話會議等實時系統(tǒng)的應(yīng)用造成損害。

實時的傳送同步數(shù)據(jù)肯定會發(fā)生潛在瞬時的數(shù)據(jù)流丟失現(xiàn)象,換句話說,即使許多硬件機制,如重傳的引入也不能避免錯誤的產(chǎn)生。實際應(yīng)用中,USB的數(shù)據(jù)出錯率小到幾乎可以忽略不計。從USB的帶寬中,給USB同步數(shù)據(jù)流分配了專有的一部分以滿足所想得到的傳速率,USB還為同步數(shù)據(jù)的傳送設(shè)計了最少延遲時間2023/7/2323.5

指定USB帶寬

USB的帶寬分配給各個通道,當一個通道建立后,USB就分配給它一定的帶寬,USB設(shè)備需要提供一些數(shù)據(jù)緩沖區(qū)。若USB提供了更多帶寬,則需更多的緩沖區(qū)。USB的體系要保證緩沖引導的硬件的延遲限定在幾毫秒內(nèi)。

USB的帶寬容量可以容納多種不同的數(shù)據(jù)流,因此保證USB上可以連接大量設(shè)備,如可以容納從1B+D直到T1速率范圍的電信設(shè)備。同時USB支持在同一時刻不同設(shè)備具有不同比特率,并具有一個動態(tài)變動的范圍.

USB規(guī)范對總線的每類轉(zhuǎn)輸規(guī)定的具體的原則.2023/7/2324.USB設(shè)備

USB設(shè)備分為諸如集線器、分配器或文本設(shè)備等種類。集線器類指的是一種提供USB連接點的設(shè)備(詳見USB集線器),USB設(shè)備需要提供自檢和屬性設(shè)置的信息,USB設(shè)備必須在任何時刻執(zhí)行與所定義的USB設(shè)備的狀態(tài)相一致的動態(tài).1

設(shè)備特性

當設(shè)備被連接、編號后,該設(shè)備就擁有一個唯一的USB地址。設(shè)備就是通過該USB地址被操作的,每一個USB設(shè)備通過一個或多個通道與主機通訊。所有USB設(shè)備必須在零號端口上有一指定的通道,每個USB設(shè)備的USB控制通道將與之相連。通過此控制通道,所有的USB設(shè)備都列入一個共同的準入機制,以獲得控制操作的信息。

在零號端口上,控制通道中的信息應(yīng)完整的描述USB設(shè)備、此類信息主要有以下幾類:

·標準信息:這類信息是對所有USB設(shè)備的共同性的定義,包括一些如廠商識別、設(shè)備種類、電源管理等的項目。設(shè)備設(shè)置、接口及終端的描述在此給出。關(guān)于這些具體的描述信息在第九章給出;

·類別信息:此類信息給出了不同USB的設(shè)備類的定義,主要反映其不同點。

·USB廠商信息:USB設(shè)備的廠商可自由的提供各種有關(guān)信息,其格式不受該規(guī)范制約。此外,每個USB設(shè)備均提供USB的控制和狀態(tài)信息。2023/7/2325.2

設(shè)備描述

主要分為兩種設(shè)備類:集線器和功能部件。只有集線器可以提供更多的USB的連接點,功能部件為主機提供了具體的功能.1

集線器

在即插即用的USB的結(jié)構(gòu)體系中,集線器是一種重要設(shè)備.從用戶的觀點出發(fā),集線器極大簡化了USB的互連復雜性,而且以很低的價格和高易用性提供了設(shè)備的健壯性。

集線器串接在集中器上,可讓不同性質(zhì)的設(shè)備連接在USB上,連接點稱作端口。每個集線器將一個連接點轉(zhuǎn)化成許多的連接點。并且該體系結(jié)構(gòu)支持多個集線器的連接。

每個集線器的上游端口向主機方向進行連接。每個集線器的下游端口允許連接另外的集線器或功能部件,集線器可檢測每個下游端口的設(shè)備的安裝或拆卸,并可對下游端口的設(shè)備分配能源,每個下游端口都具有獨立的能力,不論高速或低速設(shè)備均可連接。集線器可將低速和高速端口的信號分開。

一個集線器包括兩部分:集線控制器(Controller)和集線放大器(Repeater)。集線放大器是一種在上游端口和下游端口之間的協(xié)議控制開關(guān)。而且硬件上支持復位、掛起、喚醒的信號。集線控制器提供了接口寄存器用于與主機之間的通信、集線器允許主機對其特定狀態(tài)和控制命令進行設(shè)置,并監(jiān)視和控制其端口.2023/7/2326.2

功能部件

功能部件是一種通過總線進行發(fā)送接收數(shù)據(jù)和控制信息的USB設(shè)備,通過一根電纜連接在集線器的某個端口上,功能設(shè)備一般是一種相互無關(guān)的外設(shè)。然而一個物理單元中可以有多個功能部件和一個內(nèi)置集線器,并利用一根USB電纜,這通常被稱為復合設(shè)備,即一個集線器連向主機,并有一個或多個不可拆卸的USB設(shè)備連在其上。

每個功能設(shè)備都包含設(shè)置信息,來描述該設(shè)備的性能和所需資源。主機要在功能部件使用前對其進行設(shè)置。設(shè)置信息包括USB帶寬分配,選擇設(shè)備的設(shè)置信息等。

下機列舉了一些功能部件:

·定位設(shè)備:如鼠標或光筆;

·輸入設(shè)備:如鍵盤;

·電信適配器:如ISDN.2023/7/2327.USB主機:硬件和軟件

USB的主機通過主機控制器與USB設(shè)備進行交互。主機功能如下:

·檢測USB設(shè)備的安裝和拆卸

·管理在主機和USB設(shè)備之間的控制流;

·管理在主機和USB設(shè)備之間的數(shù)據(jù)流;

·收集狀態(tài)和動作信息;

·提供能量給連接的USB設(shè)備。

主機上USB的系統(tǒng)軟件管理USB設(shè)備和主機上該設(shè)備軟件之間的相互交互,USB系統(tǒng)軟件與設(shè)備軟件間有三種相互作用方式:

·設(shè)備編號和設(shè)置;

·同步數(shù)據(jù)傳輸;

·異步數(shù)據(jù)傳輸;

·電源管理

·設(shè)備和總線管理信息。

只要可能,USB系統(tǒng)軟件就會使用目前的主機軟件接口來管理上述幾種方式.2023/7/2328.USB2.0體系結(jié)構(gòu)的擴充

USB的體系結(jié)構(gòu)包含主機控制驅(qū)動器和USB驅(qū)動器之間的接口的擴展,使多個主機控制器和主機控制驅(qū)動器的使用成為可能.2023/7/2329.(五)USB數(shù)據(jù)流模型USB提供了在一臺主機和若干臺附屬的USB設(shè)備之間的通信功能,從終端用戶的角度看到的USB系統(tǒng),可簡單地用下圖表示2023/7/2330.

實際上的USB通信分為以下四個部分:·USB物理設(shè)備(USBPhysicalDevice):USB上的一種硬件,可運行一些用戶程序。·客戶軟件(clientsoftware):為一個特定的USB設(shè)備而在主機上運行的軟件。這種軟件由USB設(shè)備的提供者提供,或由操作系統(tǒng)提供。·USB系統(tǒng)軟件(USBsystemsoftware):此軟件用于在特定的操作系統(tǒng)中支持USB,它由操作系統(tǒng)提供。與具體的USB設(shè)備無關(guān),也獨立于客戶軟件。·USB主機控制器(USBHostController):總線在主機方面的接口,是軟件和硬件的總和。用于支持USB設(shè)備通過USB連到主機上。這四個USB系統(tǒng)的組成部分在功能上存在相互重疊的部分。為了支持主機與客戶之間的堅固可靠的通信.USB的實際應(yīng)用領(lǐng)域如下圖所示:2023/7/2331.2023/7/2332.USB2.0的總線拓撲

總線拓樸結(jié)構(gòu)包括四個重要的組成部分。

·主機和設(shè)備:USB系統(tǒng)的基礎(chǔ)組成部分。

·物理拓樸結(jié)構(gòu):描述USB系統(tǒng)中的各組成部分是如何連接起來的。

·邏輯拓樸結(jié)構(gòu):描述USB系統(tǒng)中各種組成部分的地位和作用,以及描述從主機和設(shè)備的角度觀察到的USB系統(tǒng)。

·客戶軟件層與應(yīng)用層的關(guān)系:描述從客戶軟件層看到的應(yīng)用層的情況,以及從應(yīng)用層看到的客戶軟件層的情況。

2023/7/2333.主機和設(shè)備

1.主機主機的邏輯結(jié)構(gòu)如圖包括:·USB主機控制器(USBHostController)·USB系統(tǒng)軟件集合:USB驅(qū)動程序,主機控制器的驅(qū)動程序,主機軟件·客戶軟件USB主機在USB系統(tǒng)中是一個起協(xié)調(diào)作用的實體,它不僅占有特殊的物理位置,而且對于USB以及連到USB上的設(shè)備來說,還負有特殊責任。主機控制所有的對USB的訪問。一個USB設(shè)備想要訪問總線必須由主機給予它使用權(quán)。主機還負責監(jiān)督USB的拓樸結(jié)構(gòu)。2023/7/2334.USB設(shè)備一個USB設(shè)備的邏輯結(jié)構(gòu)如圖所示,包括·USB總線接口·USB邏輯設(shè)備·應(yīng)用層USB設(shè)備用于向主機提供一些額外的功能。USB設(shè)備提供的功能是多種多樣的,但面向主機的接口卻是一致的。所以,對于所有這些設(shè)備,主機可以用同樣的方式來管理它們與USB有關(guān)的部分。為了幫助主機辨認及確定USB設(shè)備,這些設(shè)備本身需要提供用于確認的信息。在某一些方面的信息,所有設(shè)備都是一樣的;而另一些方面的信息,由這些設(shè)備具體的功能決定。信息的具體格式是不定的,由設(shè)備所處的設(shè)備級決定.2023/7/2335.

總線的物理拓樸結(jié)構(gòu)

USB系統(tǒng)中的設(shè)備與主機的連接方式采用的是星形連接,如圖.圖中的Hub是一類特殊的USB設(shè)備,它是一組USB的連接點,主機中有一個被嵌入的Hub叫根Hub(rootHub)。主機通過根Hub提供若干個連接點。為了防止環(huán)狀連接,采用星形連接來體現(xiàn)層次性,如圖4-5。這種連接的形狀很像一棵樹。用于提供具體功能的設(shè)備叫應(yīng)用設(shè)備。許多不同功能的設(shè)備放在一起被看作一個整體,叫包。例如,鍵盤和軌跡球可以被視作一個整體,在它的內(nèi)部,提供具體功能的設(shè)備被永久地

接到Hub上,而這個Hub被接到USB上。所有這些設(shè)備及這個Hub被看作一個復合設(shè)備,而這個Hub又被看作這個復合設(shè)備的內(nèi)部Hub。在主機看來,這個復合設(shè)備和一個帶著若干設(shè)備的單獨Hub是一樣的。圖中也標出了一個復合設(shè)備.2023/7/2336.

集線器在高速系統(tǒng)中扮演特殊的角色,集線器將全速/低速的信號環(huán)境和高速信號環(huán)境隔離開來.如圖所示的是支持高速設(shè)備,并在高速下工作的集線器.集線器允許連接和操作全速/低速下的USB1.1集線器和其他只能進行全速/低速操作的設(shè)備.主機控制器也直接支持連接那些只能進行全速/低速操作的設(shè)備.每個高速運行的集線器可增加一條(或多條)額外的全速/低速總線,即每個集線器都支持額外的(任意多條)12Mb/sUSB全速/低速寬帶.這允許連接更多全速/低速總線,而不需要額外地增加主機控制器.盡管可以連接幾條12MB/S的全速/低速總線,但是一臺主機控制器最多只能連接127臺USB設(shè)備.2023/7/2337.USB邏輯總線的拓撲結(jié)構(gòu)在物理結(jié)構(gòu)上,設(shè)備通過Hub連到主機上。但在邏輯上,主機是直接與各個邏輯設(shè)備通信的,就好像它們是直接被連到主機上一樣。這個邏輯關(guān)系如圖5-7所示。與之對應(yīng)的物理結(jié)構(gòu)就是圖4-5中的結(jié)構(gòu)。Hub也是邏輯設(shè)備,但在圖5-7中,為了簡化起見,未被畫出,雖然USB系統(tǒng)中的工作都是從邏輯角度來看待的,但主機必須對物理結(jié)構(gòu)有個了解。例如,在處理Hub被移去的情況時,當一個Hub被移出,通過它與主機相連的設(shè)備也應(yīng)一起被移去,這是由其物理結(jié)構(gòu)決定的.2023/7/2338.客戶軟件層與應(yīng)用層的關(guān)系

USB系統(tǒng)的物理上、邏輯上的拓樸結(jié)構(gòu)反映了總線的共享性。操縱USB應(yīng)用設(shè)備的客戶軟件只關(guān)心設(shè)備上與它相關(guān)的接口,客戶軟件必須通過USB軟件編程接口來操縱應(yīng)用設(shè)備。這與另一些總線如PCI,EISA,PCMCIA等不同,這些總線是直接訪問內(nèi)存或I/O的。在運行中,客戶軟件必須獨立于USB上的其它設(shè)備。這樣,設(shè)備和客戶軟件的設(shè)計者就可以只關(guān)心該設(shè)備與主機硬件的相互作用和主機軟件的相互作用的細節(jié)問題。圖5-8說明了在圖5-7的邏輯結(jié)構(gòu)下,一個設(shè)備設(shè)計者看到的客戶軟件與相應(yīng)應(yīng)用的關(guān)系的視圖.2023/7/2339.USB總線的通信數(shù)據(jù)流

USB是為主機軟件和它的USB應(yīng)用設(shè)備間的通信服務(wù)的,對客戶與應(yīng)用間不同的交互,USB設(shè)備對數(shù)據(jù)流有不同的要求。USB為此提供了更好的overall總線使用,它允許各種不同的數(shù)據(jù)流相互獨立地進入一個USB設(shè)備。每種通信流都采取了某種總線訪問方法來完成主機上的軟件與設(shè)備之間的通信。每個通信都在設(shè)備上的某個端點結(jié)束.不同設(shè)備的不同端點用于區(qū)分不同的通信流.圖5-9是詳盡地描述了USB系統(tǒng),支持了邏輯設(shè)備層和應(yīng)用層間的通信流.

·主機控制器的驅(qū)動程序(HCD):它位于USB主機控制器與USB系統(tǒng)軟件之間。主機控制器可以有一系列不同的實現(xiàn),而系統(tǒng)軟件獨立于任何一個具體實現(xiàn)。一個驅(qū)動程序可以支持不同的控制器,而不必特別了解這個具體的控制器。一個USB控制器的實現(xiàn)者必須提供一個支持它自己的控制器的主機控制器驅(qū)動器(HCD)實現(xiàn).·USB驅(qū)動程序(USBD):USB系統(tǒng)軟件與客戶軟件之間的接口,提供給客戶軟件一些方便的使用USB設(shè)備的功能。一個USB邏輯設(shè)備對USB系統(tǒng)來說就是一個端點集合。端點可以根據(jù)它們實現(xiàn)的接口來分類。USB系統(tǒng)軟件通過一個缺省的控制通道來管理設(shè)備。而客戶軟件用通道束管理接口。通道束的一端為端點,一端為緩沖區(qū)??蛻糗浖笸ㄐ艛?shù)據(jù)在主機上的一個緩沖和USB設(shè)備上的一個端點之間進行。主機控制器或USB設(shè)備(取決于數(shù)據(jù)傳送方向)將數(shù)據(jù)打包后在USB上傳。由主機控制器(HC)協(xié)調(diào)何時用總線訪問在USB上傳遞數(shù)據(jù).2023/7/2340.2023/7/2341.圖5-10說明了數(shù)據(jù)如何在主機側(cè)中的內(nèi)存緩沖和設(shè)備中的端點中傳送。在后面,將逐步介紹端點、通道和通信流。主機上的軟件通過一系列的通信流與邏輯設(shè)備進行通信。這一系列的通信流是由USB設(shè)備的軟件和硬件設(shè)計者選擇的,使設(shè)備能傳送由USB提供的字符.

2023/7/2342.CYPRESS核管道端點設(shè)定界面2023/7/2343.USB設(shè)備端點

一個端點是一個可唯一識別的USB設(shè)備的Portion,它是主機與設(shè)備間通信流的一個結(jié)束點。一系列相互獨立的端點在一起構(gòu)成了USB邏輯設(shè)備。每個邏輯設(shè)備有一個唯一的地址,這個地址是在設(shè)備連上主機時,由主機分配的,而設(shè)備中的每個端點在設(shè)備內(nèi)部有唯一的端點號。這個端點號是在設(shè)備設(shè)計時被給定的。每個端點都是一個簡單的連接點,或者支持數(shù)據(jù)流進設(shè)備,或者支持其流出設(shè)備,兩者不可得兼。一個端點的特性決定了它與客戶軟件進行的傳送的類型。一個端點有以下特性:

·端點的總線訪問頻率要求·端點的總線延遲要求·端點的帶寬要求·端點的端點號·對錯誤處理的要求·端點能接收或發(fā)送的包的最大長度·端點的傳送類型出·端點與主機的數(shù)據(jù)傳送方向端點號不為0的端點在被設(shè)置前處于未知狀態(tài),是不能被主機訪問的.2023/7/2344.對0號端點的要求所有USB設(shè)備都需要實現(xiàn)一個缺省的控制方法。這種方法將端點0作為輸入端點,同時也將端點0作為輸出端點。USB系統(tǒng)用這個缺省方法初始化及一般地使用邏輯設(shè)備(即設(shè)置此設(shè)備)。缺省控制通道支持了對控制的傳送,一旦設(shè)備接上,并加電,且又收到一個總線復位命令,端點0就是可訪問的了.能在高速下工作的USB設(shè)備必須能在全速下工作,當設(shè)備連接到集線器并以全速工作時,設(shè)備必須:

1.能成功地在全速下復位;2.能成功地響應(yīng)標準請求,如設(shè)備和配置描述符的set_address,set_configuration,get_descriptor,并返回正確的信息.高速設(shè)備在全速下運行時可能或不支持這種功能.對非0號端點的要求設(shè)備可以有除0以外的其它端點,這取決于這些設(shè)備的實現(xiàn)。低速設(shè)備在0號輸入及輸出端點外,只能有2個額外的可選端點。而高速設(shè)備可具有的額外端點數(shù)僅受限于協(xié)議的定義(協(xié)議中規(guī)定,最多15個額外的輸入端點和最多15個額外的輸出端點)。除缺省控制通道的缺省端點外,其它端點只有在設(shè)備被設(shè)置后才可使用,對設(shè)備的設(shè)置是設(shè)備設(shè)置過程的一部分.

2023/7/2345.USB總線數(shù)據(jù)通道

一個USB通道是設(shè)備上的一個端點和主機上軟件之間的聯(lián)系。體現(xiàn)了主機上緩存和端點間傳送數(shù)據(jù)的能力,有兩不同的且互斥的通道通信格式。

·流(Stream):指不具有USB定義的格式的數(shù)據(jù)流?!は?Message):指具有某種USB定義的格式的數(shù)據(jù)流。USB不解釋在通道中傳送的數(shù)據(jù)的內(nèi)容。消息通道要求數(shù)據(jù)組織USB定義的格式,但它的內(nèi)容,USB是不管的。特別地,有下列概念與通道相關(guān):

·對USB總線訪問的申請(claim),帶寬的使用情況·傳送類型·與通道相連的端點的特性,例如:端點的數(shù)據(jù)傳送方向,最大數(shù)據(jù)凈負荷區(qū)的長度。數(shù)據(jù)凈負荷是指在總線處理事務(wù)(transaction)中,數(shù)據(jù)包中數(shù)據(jù)區(qū)的數(shù)據(jù)。由兩個0號端點組成的通道叫缺省控制通道。一旦設(shè)備加電并復位后,此通道即可使用。其它通道只在設(shè)備被設(shè)置后才存在。USB系統(tǒng)軟件在決定設(shè)備身份、設(shè)置要求和設(shè)置設(shè)備時使用缺省控制通道。當設(shè)備被設(shè)置后,這個設(shè)備的特定軟件還可使用該通道。USB系統(tǒng)軟件保留缺省控制通道的擁有權(quán),協(xié)調(diào)其它客戶軟件對通道的使用。2023/7/2346.一個客戶軟件一般都通過I/O請求包(IRP)來要求數(shù)據(jù)傳送。然后,或者等待,或者當傳送完成后被通知。IRP的細節(jié)是由操作系統(tǒng)來指定的。客戶軟件提出與設(shè)備上的端點建立某個方向的數(shù)據(jù)傳送的請求,IRP就可簡單地理解為這個請求。一個客戶軟件可以要求一個通道回送所有的IRP。當關(guān)于IRP的總線傳送結(jié)束時,無論它是成功地完成,還是出現(xiàn)錯誤,客戶軟件都將獲得通知說IRP完成了。如果通道上沒有正在傳送的數(shù)據(jù),也沒有數(shù)據(jù)想使用此通道,這個通道就處于閑置狀態(tài)。主機控制器對它不采取任何動作,也就是說,這個通道的端點會發(fā)現(xiàn)沒有任何的總線動作是沖它而來的。只有當有數(shù)據(jù)在通道上時,該通道才能發(fā)現(xiàn)總線對它的動作.如果一個非同步通道遇到一個迫使它給主機發(fā)STALL的情況(參見第7章),或者在任一個IRP中發(fā)現(xiàn)3個總線錯誤。這個IRP將被中止。其它所有突出的IRP也一同被中止。通道不再接收任何IRP,直到客戶軟件從這個情況中恢復過來(恢復的方式取決于軟件的實現(xiàn)),而且承認這個中止或出現(xiàn)的錯誤,并發(fā)一個USBDCall來表明它已承認。一個合適的狀態(tài)信息將通知客戶軟件IRP的結(jié)果———出錯或中止。

2023/7/2347.一個IRP可能會需要多個數(shù)據(jù)凈荷區(qū)來傳遞數(shù)據(jù)。這些數(shù)據(jù)區(qū)除最后一個外,都具有數(shù)據(jù)凈荷區(qū)的最大長度,最后一個數(shù)據(jù)區(qū)包含了這個IRP中剩下的數(shù)據(jù).對這樣的一個IRP,短包(也就是說未達到最大長度的數(shù)據(jù)區(qū))在數(shù)據(jù)輸入時無法填完IRP數(shù)據(jù)緩沖區(qū)。這可能會有二種不同解釋,它依賴于客戶軟件的情況:·如果該客戶軟件可以接受變長的IRP,那么,IRP數(shù)據(jù)緩沖區(qū)未被填滿,可以看作一個分限,說明一個IRP已成功結(jié)束,主機控制器可以準備接收下一個IRP了。·如果該客戶軟件只收定長的IRP。那么,我們認為發(fā)生了一個錯誤,這IRP將被中止,通道也會被阻塞,通道上的數(shù)據(jù)都中止。因為對這兩種情況,主機控制器會有不同的反應(yīng),而且采取何種措施不由控制器決定,所以對每個IRP都必須說明客戶軟件的具體要求。通道的端點可以用NAK信號來通知主機自己正忙,NAK不能作為向主機反還IRP的中止條件。在一個給定的IRP處理過程中,可以遇到任意多個NAK,NAK不構(gòu)成錯誤,而且不作為上面所說的3種錯誤之一.2023/7/2348.流通道流通道中的數(shù)據(jù)是流的形式,也就是該數(shù)據(jù)的內(nèi)容不具有USB要求的結(jié)構(gòu)。數(shù)據(jù)從流通道一端流進的順序與它們從流通道另一端流出時的順序是一樣的,流通道中的通信流總是單方向的。對于在流通道中傳送的數(shù)據(jù),USB認為它來自同一個客戶。USB系統(tǒng)軟件不能夠提供使用同一流通道的多個客戶的同步控制。在流通道中傳送的數(shù)據(jù)遵循先進先出原則。流管流只能連到一個固定號碼的端點上,或者流進,或者流出。(這個號碼是由協(xié)議層決定的)而具有這個號碼的另一個方向的端點可以被分配給其它流通道。消息通道消息通道與端點的關(guān)系同流通道與端點的關(guān)系是不同的。首先,主機向USB設(shè)備發(fā)出一個請求;接著,就是數(shù)據(jù)的傳送;最后,是一個狀態(tài)階段。為了能夠容納請求/數(shù)據(jù)/狀態(tài)的變化,消息通道要求數(shù)據(jù)有一個格式,此格式保證了命令能夠被可靠地傳送和確認。消息通道允許雙方向的信息流,雖然大多數(shù)的通信流是單方向的。特別地,缺省控制通道也是一個消息通道。USB系統(tǒng)軟件不會讓多個請求同時要求同一個消息通道。一個設(shè)備的每個消息通道在一個時間段內(nèi),只能為一個消息請求服務(wù),多個客戶軟件可以通過缺省控制通道發(fā)出它們的請求,但這些請求到達設(shè)備的次序是按先進先出的原則的。設(shè)備可以在數(shù)據(jù)傳送階段和狀態(tài)階段控制信息流,這取決于這些設(shè)備與主機交互的能力。正常情況下,在上一個消息未被處理完之前,是不能向消息通道發(fā)下一個消息的。但在有錯誤發(fā)生的情況下,主機會取消這次消息傳送,并且不等設(shè)備將已收的數(shù)據(jù)處理完,就開始下一次的消息傳送。在操作通道的軟件看來,一個IRP中的錯誤,使這個IRP被取消,并且所有正排隊等待的IRP一同也被取消。申請這個IRP的客戶被通知IRP結(jié)束,且有出錯提示。消息通道后有兩個相同號碼的端點,一個用于輸入,一個用于輸出。兩個號碼必須相同.2023/7/2349.傳送類型

USB通過通道在主機緩沖區(qū)與設(shè)備端點間傳送數(shù)據(jù)。在消息通道中傳遞的數(shù)據(jù)具有USB定義的格式,它的數(shù)據(jù)凈荷區(qū)中包含的數(shù)據(jù)允許具有設(shè)備指定的格式。USB要求任何在通道上傳送的數(shù)據(jù)均被打包,數(shù)據(jù)的解釋工作由客戶軟件和應(yīng)用層軟件負責。USB提供了多種數(shù)據(jù)格式,使之盡可能滿足客戶軟件和應(yīng)用軟件的要求。一個IRP需要一個或多個總線處理事務(wù)來完成。每個傳送類型在以下的幾個傳送特征上會有不同:

·USB規(guī)定的數(shù)據(jù)格式·信息流的方向·數(shù)據(jù)包的長度限制·總線訪問的限制·延時的限制·要求的數(shù)據(jù)順序·出錯處理2023/7/2350.

USB設(shè)備的設(shè)計者可以決定設(shè)備上每個端點的能力。一旦為這個端點建立了一個通道,這個通道的絕大多數(shù)傳送特征也就固定下來了,一直到這個通道被取消為止。也有部分傳送特征可以改變,對這樣的特征,將會在介紹每個傳送類型時作出說明.USB定義了4種傳送類型:1.控制傳送:可靠的、非周期性的、由主機軟件發(fā)起的請求或者回應(yīng)的傳送,通常用于命令事務(wù)和狀態(tài)事務(wù).2.同步傳送:在主機與設(shè)備之間的周期性的、連續(xù)的通信,一般用于傳送與時間相關(guān)的信息。這種類型保留了將時間概念包含于數(shù)據(jù)中的能力。但這并不意味著,傳送這樣數(shù)據(jù)的時間總是很重要的,即傳送并不一定很緊急。3.中斷傳送:小規(guī)模數(shù)據(jù)的、低速的、固定延遲的傳送。4.批傳送:非周期性的,大包的可靠的傳送。典型地用于傳送那些可以利用任何帶寬的數(shù)據(jù),而且這些數(shù)據(jù)當沒有可用帶寬時,可以容忍等待.2023/7/2351.一個(微型)幀包含的最大處理數(shù)的表舉例:每張表包含以下內(nèi)容:指定傳輸類型(和速度)要求的協(xié)議開銷對某些采樣數(shù)據(jù)有效負載大小為-在這種情況可能保持的最大寬度;-每個處理要求的(微型)幀百分比;-在特定情況下,(微型)幀中的最大處理數(shù);-在特定情況下,(微型)幀中不要求的剩余字節(jié);-在特定情況下,在單個(微型)幀傳輸?shù)目偟臄?shù)據(jù)字節(jié)數(shù);典型的特殊傳輸類型處理要求多個包,每種處理的協(xié)議開銷包括:每個包的SYNC場為8位(全速/低速)或32位(高速);每個包的PID字節(jié)包括PID和PID取反(校驗)位;每個包的EOP為3位(全速/低速)或8位(高速);在令牌中還包括端點號,設(shè)備地址,和CRC場(共16位);數(shù)據(jù)包包括CRC16場(共16位);數(shù)據(jù)包可以包含任意數(shù)量的數(shù)據(jù)場(每字節(jié)8位);2023/7/2352.對于多包的處理,要求有包間間隙或總線轉(zhuǎn)向時間在這些計算中假設(shè)沒有位填充的要求,用低速中斷OUT作為例子,它在處理中共有5個包:-一個PRE專用包;-一個令牌包;-一個PRE專用包;-一個數(shù)據(jù)包;-一個握手包;其中,在數(shù)據(jù)和握手之間有個總線轉(zhuǎn)向.因此,協(xié)議開銷包括:5個SYNC,5個PID,端點+CRC5,CRC16,5個EOP和包間延時(一總線轉(zhuǎn)向,包間的延時和2個集線器建立時間)2023/7/2353.控制傳送

控制傳送允許訪問一個設(shè)備的不同部分。控制傳送用于支持在客戶軟件和它的應(yīng)用之間的關(guān)于設(shè)置信息、命令信息、狀態(tài)信息的傳送??刂苽魉陀梢韵聨讉€事務(wù)組成:(1)建立聯(lián)系,把請求信息從主機傳到它的應(yīng)用設(shè)備;(2)零個或多個數(shù)據(jù)傳送事務(wù),按照(1)事務(wù)中指明的方向傳送數(shù)據(jù);(3)狀態(tài)信息回傳。將狀態(tài)信息從應(yīng)用設(shè)備傳到主機。當端點成功地完成了被要求的操作時,回傳的狀態(tài)信息為“success”.USB設(shè)備必須實現(xiàn)缺省控制通道,并將它實現(xiàn)成一個消息通道。這個通道由USB系統(tǒng)軟件使用。USB設(shè)備的確認信息、狀態(tài)信息以及控制信息由該通道傳送。如果需要的話,一個應(yīng)用設(shè)備可以為端點實現(xiàn)額外的控制通道。USB設(shè)備框架定義了標準的,設(shè)備級的或由銷售商提供的請求,這些請求可操作設(shè)備的狀態(tài)。USB設(shè)備框架又定義了一些描述器(descriptor),用于存放USB設(shè)備的各種信息??刂茩C制提供訪問設(shè)備描述器和請求操作設(shè)備的機制??刂苽魉椭荒芡ㄟ^消息通道進行。所以,使用控制傳送的數(shù)據(jù)必須具有USB定義的數(shù)據(jù)格式。應(yīng)用層和相應(yīng)的客戶軟件不能為控制傳送指定總線訪問頻率和帶寬。這由USB系統(tǒng)軟件從全局優(yōu)化角度加以決定。USB系統(tǒng)軟件會限制設(shè)備要求的訪問頻率和帶寬.2023/7/2354.1控制傳送類型的數(shù)據(jù)格式Setup包的數(shù)據(jù)格式屬于一個命令集,這個集合能保證主機和設(shè)備之間正常通信。這個格式也允許一些銷售商對設(shè)備命令的擴展。Setup包后的數(shù)據(jù)傳送也具有USB定義的格式,除非這個數(shù)據(jù)是銷售商提供的信息?;貍鞯臓顟B(tài)信息仍然具有USB定義的格式。

2控制傳送的方向控制傳送使用的是消息通道上的雙向信息流。所以,一旦一個控制通道被確認之后,這個通道就使用了具有某個端點號的兩個端點,一個輸入,一個輸出。

3控制傳送包的大小的限制控制傳送的端點決定了它所能接收或發(fā)送的最大數(shù)據(jù)凈負荷區(qū)長度。USB為高速設(shè)備定義的最大數(shù)據(jù)凈負荷區(qū)長度為8、16、32或64字節(jié),低速設(shè)備的數(shù)據(jù)凈負荷區(qū)的長度只能是8字節(jié)。Setup后的所有數(shù)據(jù)包都要遵守這個規(guī)定,這個規(guī)定是針對這些數(shù)據(jù)包中的數(shù)據(jù)凈負荷區(qū)的,不包括包中的協(xié)議要求的額外信息,Setup包實際上也是8字節(jié)??刂仆ǖ?包括缺省控制通道)總是使用wMaxPacketSize的值。端點在自己的設(shè)置信息中報告自己允許的最大凈負荷區(qū)長度。USB不要求數(shù)據(jù)凈負荷區(qū)必須達到最大長度,當長度不夠時,不必填充到最大長度。2023/7/2355.

主機控制器對高速設(shè)備的控制通道端點支持8、16、32、64字節(jié)的最大長度,對低速設(shè)備支持8字節(jié)的長度。它不能支持更大的或更小的其它長度。對于缺省控制通道的最大數(shù)據(jù)區(qū)長度,USB系統(tǒng)軟件要從設(shè)備描述器的頭8個字節(jié)中讀出,設(shè)備將這8個字節(jié)放在一個包中發(fā)出,其中的七個字包含了缺省通道的wMaxPacketSize。對其它的控制端點來說,USB系統(tǒng)軟件在它們被設(shè)置后,獲得此長度,然后USB系統(tǒng)軟件就會保證數(shù)據(jù)凈負荷區(qū)不會超長。另外,主機總是認為數(shù)據(jù)凈負荷區(qū)的最大長度至少為8。端點所傳的數(shù)據(jù)凈負荷區(qū)長度必須小于或等于其wMaxPacketSize,當一個數(shù)據(jù)區(qū)不能容納所傳數(shù)據(jù)時,就分幾個區(qū)來傳。除最后一個區(qū)外,其它區(qū)都應(yīng)達到最大長度。最后一區(qū)包含最后剩下的數(shù)據(jù)。當端點做了以下兩件事時,控制傳送的數(shù)據(jù)階段可被認為結(jié)束:·已傳了由Setup階段指定的數(shù)據(jù)量。·傳了一個數(shù)據(jù)包,它的長度為0或它的數(shù)據(jù)區(qū)長度小于最大長度。數(shù)據(jù)階段結(jié)束后,主機控制器進入狀態(tài)階段,而不是開始另一個數(shù)據(jù)傳誦。如果它不這樣做,端點會認為通道脫線而中止通道(通道脫線見4.3.2)。如果主機在狀態(tài)階段時,主機收到一個大于最大長度的數(shù)據(jù)區(qū),那么請求這次傳送的IRP將被中止。當數(shù)據(jù)全部傳完,主機與端點之間的控制傳送的數(shù)據(jù)階段結(jié)束。如果其間,端點收到了超過最大長度的數(shù)據(jù)區(qū),它將中止通道。2023/7/2356.控制傳送的總線訪問的限制

無論低速設(shè)備還是高速設(shè)備都可以使用控制通道。端點沒法指明控制通道對總線訪問頻率的要求。USB權(quán)衡所有控制通道的總線訪問頻率和正等待的IRP,從全局優(yōu)化,提供一個“最佳”傳送方案。USB要求數(shù)據(jù)幀中的一部分被留給控制傳送使用。·如果被引發(fā)的控制傳送(引發(fā)方式由實現(xiàn)決定)只用了數(shù)據(jù)幀的不到10%的時間,則剩余的時間留給批傳送?!と绻粋€控制傳送被引發(fā)又被中止,則它的中止可在本次的幀內(nèi),也可在以后的幀內(nèi)。也就是說,引發(fā)和中止不必在同一個幀內(nèi)?!と绻艚o控制傳送的時間不夠用,但恰好有一些同步和中斷傳送的幀時間未用,則主機控制器利用這些時間進行額外的控制傳送?!と绻麑捎玫膸瑫r間有太多的控制傳送在等待,那么就對它們進行排序然后傳送?!と绻鱾€控制傳送申請的是不同的端點,主機控制器根據(jù)公平訪問原則決定它們的訪問順序。公平訪問原則的具體內(nèi)容決定于主機控制器的實現(xiàn)?!と绻粋€控制傳送事務(wù)頻繁地被中止,不能認為給它的總線訪問時間是不公平的。這些要求使得控制傳送一般可以在總線上進行規(guī)則地、最優(yōu)化地傳送。

2023/7/2357.

高速控制端點必須支持OUT處理的PING流控制協(xié)議

對某個端點的控制傳送的速率是可以變化的,USB系統(tǒng)軟件控制這些離散的變化。端點和其客戶軟件不能想當然的認為其有一個固定的傳送速率,端點可能發(fā)現(xiàn)在一幀內(nèi)有零個或若干個傳送。一個端點和它相應(yīng)的客戶軟件可占用的總線時間會因為其它設(shè)備進入或退出系統(tǒng)或者本設(shè)備上的其它端點進入或退出系統(tǒng)而改變??偩€頻率和幀定時決定于一個幀內(nèi)可傳送的控制傳送的最大個數(shù)。在任一個USB系統(tǒng)內(nèi),一個幀內(nèi)的8字節(jié)高速數(shù)據(jù)區(qū)須少于29個,8字節(jié)低速數(shù)據(jù)區(qū)須少于4個。對于高速總線,控制傳輸數(shù)量限制為每個微型幀小于32個高速的64字節(jié)數(shù)據(jù)有效負載.表是關(guān)于不同規(guī)格的高速的控制傳送的情況,以及在一幀內(nèi)可能的最大的傳送數(shù)目。這張表有兩個默認的前提,即控制傳送有一個數(shù)據(jù)傳送階段而且這個數(shù)據(jù)傳送階段有一個長度為0狀態(tài)階段,表還指出了出現(xiàn)兩個數(shù)據(jù)區(qū)都達不到最大長度的情況,表中不包括用于位填充的一些額外的位。2023/7/2358.2023/7/2359.2023/7/2360.

因為一個幀內(nèi)只留10%的時間給非周期性傳送,所以當一個系統(tǒng)的總線時間被排滿的時候,這個系統(tǒng)內(nèi)的所有控制傳送只能去競爭每個幀內(nèi)的三個控制傳送名額。因為除了客戶軟件會要求控制傳送外,USB系統(tǒng)要用控制傳送來傳送設(shè)置信息,所以對某個客戶和它的應(yīng)用就不能指望它們的控制傳送像它們想的一樣進行。主機控制器可以自由地決定如何將某個具體的控制傳送在總線上進行,可以在一個幀內(nèi),也可以跨幾個幀。一個端點可能發(fā)現(xiàn)一個控制傳送的各個總線處理事務(wù)在同一幀內(nèi)或分在幾個不連續(xù)的幀內(nèi)。由于具體實現(xiàn)的不同,主機控制器可能不能提供理論上的每幀的最大控制傳送數(shù)目。低速控制傳送與高速控制傳送都是競爭同樣多的可用幀時間。低速控制傳送只是要用更多的時間來傳送罷了。表5-1列出了不同規(guī)格的低速包的情況,以及一幀內(nèi)允許的最大包數(shù)。這張表同樣沒包括進管理用的開銷。無論低速與高速,由于一個控制傳送都由幾個包組成,所以都可能要用幾個幀才能完成傳送。2023/7/2361.2023/7/2362.控制傳送的數(shù)據(jù)順序

要進行控制傳送,先要由主機向設(shè)備發(fā)一個總線建立(Setup)信息。它描述了控制訪問的類型,設(shè)備將執(zhí)行此控制訪問。這個階段之后,是零個或多個控制數(shù)據(jù)信息的傳送,這是進行訪問的具體信息。最后,由狀態(tài)信息的傳送來結(jié)束這次控制傳送,允許端點將這次控傳的狀態(tài)回送給客戶軟件。這次控傳完成之后,可以進行對這個端點的下一個控傳,每次控傳何時在總線上進行由主機控制器的具體實現(xiàn)決定。在數(shù)據(jù)傳送階段和狀態(tài)信息回傳階段,可能由于設(shè)備自身的原因,設(shè)備處于“忙”狀態(tài)。此時端點可設(shè)法表明自己正忙,主機將試著在稍后時間重傳一次。如果在上一個控傳結(jié)束之前,端點又收到一個總線建立信息,設(shè)備將結(jié)束現(xiàn)未完成的傳送,轉(zhuǎn)而處理新的控傳。正常情況下,是不會早發(fā)總線建立信息的,不過當上一個控傳因錯誤而被中止后,主機可發(fā)下一個控傳的總線建立信息。在端點看來,這是在上一個控傳結(jié)束前過早發(fā)出的。一旦主機遇到一個引起中止的條件或檢測到一個錯誤,端點可以通過接收下一個Setup包的PID來恢復,也就是說,不一定必須從別的通道進行恢復。對于缺省控制通道,如果端點收不到Setup的PID時,最終會要求設(shè)備復位來清除中止條件或錯誤條件。在控傳中,USB提供了強大的錯誤檢測功能和錯誤恢復和重傳功能。傳送器和接收器可以保持階段的同步,既關(guān)于他們在控傳的哪個階段這個問題上保持同步。并且以最小的代價恢復。接收器可以識別一個數(shù)據(jù)重傳包或狀態(tài)信息重傳包,因為包中帶有數(shù)據(jù)重傳的指示。一個發(fā)送器可以通過對方給它發(fā)的握手信息確知它發(fā)的數(shù)據(jù)重送包和狀態(tài)信息包已被成功接收,除了Setup包以外,協(xié)議可以將一個重送的包與原來的包區(qū)分開來,Setup包可以因為出錯而重傳,但無法說明此包是重傳的,還是原來的.2023/7/2363.同步傳送

在非USB的環(huán)境下,同步傳送意味著恒定速率、錯誤容忍(error-tolerant)的傳送。在USB環(huán)境下,要求同步傳送能提供以下幾點:·固定的延遲下,確保對USB帶寬的訪問。·只要數(shù)據(jù)能提供得上,就能保證通道上的恒定數(shù)據(jù)傳送速度?!と绻捎阱e誤而造成傳送失敗,并不重傳數(shù)據(jù)。當USB同步傳送類型被用來支持同步的源和目的時,使用這個傳送類型的軟件并不要求是同步的,后面章節(jié)詳細介紹USB上的同步數(shù)據(jù)的處理。.2023/7/2364.1同步傳送的數(shù)據(jù)格式對于同步傳送的通道(同步通道),USB并不對數(shù)據(jù)格式做要求.2同步傳送的方向同步通道是一種流通道,所以是單方向的。在對端點的描述中指明了與它相連的通道的數(shù)據(jù)流方向。如果設(shè)備要同步的雙向流的話,只好用兩個同步通道,一個流進,一個流出.3同步傳送中包的大小的限制同步通道的端點確定了數(shù)據(jù)區(qū)的最大長度,USB在設(shè)置端點期間,使用這一個信息,看是否可在每幀內(nèi)為最大長度的數(shù)據(jù)區(qū)留下足夠的時間。如果可以,設(shè)置端點成功;否則,不成功.USB將全速同步端點的最大數(shù)據(jù)有效負載限制為1023字節(jié).高速端點允許最大為1024字節(jié)的數(shù)據(jù)有效負載.高速,高帶寬的端點指定了它在每個微型幀中要求兩個或三個處理.表5.4列出了不同的全速同步處理和在一幀中可能的最大處理數(shù)的信息.表的陰影部分表示的全速端點(WMAXPACKETSIZE不為0)不能是默認接口設(shè)置的一部分.表中不與位填充有關(guān)的信息.2023/7/2365.2023/7/2366.表5.5列出了不同的高速同步處理的微型幀中可能的最大處理數(shù)的信息.表的陰影部分表示的高速同步端點不能是默認接口設(shè)置的一部分.表中不包含與位填充有關(guān)的開銷信息.任何同步管道的給定處理不必是為端點指定的最大數(shù)據(jù)的有效負載.數(shù)據(jù)有效負載值有發(fā)送器(客戶軟件和功能設(shè)備)決定,而且可以根據(jù)各個處理的不同要求變換.USB確保主機控制器提出的任意數(shù)據(jù)有效負載都能在總線上傳輸.數(shù)據(jù)有效負載的實際值有數(shù)據(jù)發(fā)生器設(shè)定,而且可能小于預(yù)先協(xié)商的最大值.總線錯誤會改變接受器看到的實際包的值.這些錯誤可以通過數(shù)據(jù)的CRC場或接收器對所有處理要求的大小檢測出來.所有設(shè)備的默認接口設(shè)置不能包括任何數(shù)據(jù)有效負載不為0(通過端點描述的WMAX-PACKESIZE指定)的同步端點.其他接口配置可以為同步端點指定非零的數(shù)據(jù)有效負載.如果同步端點有大的數(shù)據(jù)有效負載,建議用其他配置或接口指定數(shù)據(jù)有效負載的范圍.這增加了設(shè)備其他USB設(shè)備組合使用的機會.2023/7/2367.2023/7/2368.同步傳送的總線方向限制

只有全速和高速設(shè)備可以使用同步方式.USB要求全速端點的任意幀為周期(同步和中斷)傳輸分配的時間不超過90%,高速端點能為周期傳輸分配最多80%的微型幀時間.同步端點必須指定它要求的總線訪問周期.全速/高速端點必須指定要求的周期是(2bInterval-1)xF,其中bInterval的范圍是0~16(包括16),而F在高速指是125us,而在全速指是1ms.這就允許全速/高速同步傳輸?shù)乃俾实陀诿浚ㄎ⑿停粋€處理。但是,一個同步傳輸端點必須準備好處理比指定快的輪詢速率。主機不能在同步端點發(fā)出超過一個處理的(微型)幀,除非端點是高速,高帶寬端點。當有比指定快的間隔請求數(shù)據(jù)而且數(shù)據(jù)不用時,同步IN端點必須返回0長度包。高速端點能在每(微型)幀(或192Mb/s)傳輸高達3072字節(jié)。在每周期要求超過1024字節(jié)的高速同步端點稱為高帶寬端點。高帶寬端點在每個微型幀使用多個處理。高帶寬端點必須指定周期是1X125us(即bInterval的值是1)。2023/7/2369.總線錯誤或操作系統(tǒng)在調(diào)度客戶軟件出現(xiàn)的延時會導致沒有包在(微型)幀中傳輸。此時,應(yīng)將錯誤指示器作為一個狀態(tài)信息返回給客戶軟件。設(shè)備通過跟蹤SOF令牌也能檢測出這種情況,而且它會指出在指定的總線訪問周期模式有擾動出現(xiàn)??偩€頻率和(微型)幀定時限制了任何USB系統(tǒng)的(微型)幀中最大同步處理數(shù)不僅要小于己151個全速1字節(jié)數(shù)據(jù)有效負載,而且要小于193個高速1字節(jié)數(shù)據(jù)有效負載,根據(jù)不同應(yīng)用的需要,主機控制器不可能使每個(微型)幀的最大同步處理數(shù)達到理論值。2023/7/2370.

同步傳送的數(shù)據(jù)順序

同步傳送不支持因總線錯誤而進行的重傳。接收器可以判斷是否發(fā)生了一個錯誤,低級的USB協(xié)議不允許有握手信號給同步通道的發(fā)送者。一般情況下,是可以有握手信號來通知發(fā)送者包是否被成功地接收。對于同步傳送來說,定時比正確性和重傳更重要??紤]到總線的錯誤率較低,協(xié)議就認為傳送一般均能成功。同步接收者可以判斷自己是否在一個幀內(nèi)錯過了一些數(shù)據(jù),而且能知道丟失了多少數(shù)據(jù)。因為沒有用來指示引起中止的條件的握手信號,所以同步傳送的端點從不途停止。雖然,錯誤信息可作為IRP的狀態(tài)來報告,但同步通道不會因此停下。錯誤即使被查到,主機仍繼續(xù)處理下一幀的數(shù)據(jù)。因為同步傳送的協(xié)議不支持每次事務(wù)都進行握手,所以錯誤檢測的功能可以相對弱一些。2023/7/2371.

中斷傳送

中斷傳送是為這樣一類設(shè)備設(shè)計的,它們只傳或收少量數(shù)據(jù),而且并不經(jīng)常進行傳送,但它們有一個確定的服務(wù)周期,對中斷傳送有以下要求:·通道的最大服務(wù)期得到保證?!び捎阱e誤而引起的重發(fā)在下一服務(wù)期進行。

1中斷傳送的數(shù)據(jù)格式USB對中斷通道上的數(shù)據(jù)流格式無要求。

2中斷傳送的方向中斷通道是一種流通道,所以是單向的。端點描述信息指明了通道的數(shù)據(jù)流方向。3中斷傳送對包的長度的限制中斷通道的端點決定自己能接收和發(fā)送的最大數(shù)據(jù)區(qū)長度,全速設(shè)備允許最大不超過64字節(jié)(或更少)的數(shù)據(jù)區(qū),高速端點允許的最大數(shù)據(jù)有效負載高達1024字節(jié)。高速,高帶寬的端點指定了每個微型幀要求兩個或三個處理。而低速設(shè)備只允許不超過8個(或更少)字的數(shù)據(jù)區(qū)。這個最大值將應(yīng)用到數(shù)據(jù)包的數(shù)據(jù)的有效負載,即指定的包數(shù)據(jù)場的大小,不包括其他協(xié)議要求的信息。USB不要求數(shù)據(jù)包正好是最大值,即如果數(shù)據(jù)包小于最大值,它不需要被填補成具有最大數(shù)據(jù)有效負載。2023/7/2372.所有的主機控制器都要示支持高速設(shè)備的1024字節(jié)數(shù)據(jù)去和全速設(shè)備的64字節(jié)數(shù)據(jù)區(qū)和低速設(shè)備的8字節(jié)(或更少)的最大數(shù)據(jù)區(qū),對超過最大值的數(shù)據(jù)區(qū)則不要求支持

。USB系統(tǒng)軟件設(shè)置中斷通道的最大數(shù)據(jù)區(qū)長度。在設(shè)備設(shè)置期間,這一信息將被使用,只有此設(shè)置有效,這個數(shù)值是不會改變的。在設(shè)置有效期間,USB系統(tǒng)軟件根據(jù)此數(shù)值來看分給這個通道的總線時間是否充分。如果充分,則通道建立,否則不建立。與控制通道不同,USB系統(tǒng)不為中斷通道調(diào)整總線時間。所以對給定的USB系統(tǒng),要么支持此通道,要么不支持。實際傳送的數(shù)據(jù)區(qū)長度由發(fā)送器決定,可以小于最大長度。端點所發(fā)的數(shù)據(jù)區(qū)中的數(shù)據(jù)長度不能超過端點的wMaxPacketSize的值。而設(shè)備可以通過中斷傳送來傳比此值多的數(shù)據(jù)。客戶軟件可以通過中斷傳送的IRP來接收這批數(shù)據(jù),這個中斷傳送要求多個總線處理事務(wù)來完成,且要求每個事務(wù)后都有IRP完成的信號??梢栽O(shè)置一個緩沖區(qū),它的長度為wMaxPacketSize的整數(shù)倍,再加上一個零頭。對需要的多個總線事務(wù)來說,除最后一個外,前面的事務(wù)都傳遞wMaxPacketSize長度的包,后一個傳剩下的零頭。這些總線處理事務(wù)都在為通道建立的服務(wù)周期內(nèi)進行。2023/7/2373.

如果一個中斷傳送要傳的數(shù)據(jù)不能放在一個數(shù)據(jù)區(qū)中,就分幾個區(qū),前幾個區(qū)都是最大長度,最后一個包含剩下的長度。當出現(xiàn)以下情況時,認為中斷傳送結(jié)束:

·已傳的數(shù)據(jù)量恰好與期望的數(shù)據(jù)量同?!髁艘粋€有一個數(shù)據(jù)區(qū)的包,此包的長度小于wMaxPacketSize或傳了一個長度為零的包。如果一個中斷傳送完成,那么主機控制器結(jié)束當前的IRP,并開始下一個IRP。如果數(shù)據(jù)區(qū)的長度比預(yù)料的長,當前IRP中止,并且只有等到出錯條件被確認且清除后,才能開始后面的IRP。2023/7/2374.

中斷傳送對總線訪問的限制

高速設(shè)備,全速設(shè)備和低速設(shè)備均可使用中斷傳送。高速端點可以分配幾乎80%的微型幀進行周期傳輸,USB要求不能分配超過90%的幀給周期性的(同步和中斷)全速/低速傳輸。總線頻率和(微型)幀定時限制了在任何USB系統(tǒng)的一個(微型)幀中成功的最大中斷處理數(shù)小于108個全速1字節(jié)數(shù)據(jù)有效負載,或者小于10個低速1字節(jié)數(shù)據(jù)有效負載,或者小于134個高速1字節(jié)數(shù)據(jù)有效負載。根據(jù)不同的實際應(yīng)用情況,主機控制器不可能提供上面所說每個(微型)幀的最大中斷處理數(shù)。表5.6列出了不同的低速中斷處理和一幀中可能的最大處理數(shù)的信息.表5.7是全速的中斷處理類的信息.表5.8是高速終端處理類的信息.表5.8的陰影部分表示高速中斷端點不是默認接口設(shè)置的一部分.表中不包含與位填充有關(guān)的開銷信息.

2023/7/2375.2023/7/2376.2023/7/2377.2023/7/2378.中斷管道的端點指定了它要求的總線訪問周期.全速的端點要求的周期范圍從1~255ms.低速端點被限制為10~255ms。高速端點要求的周期是(2binterval-1)X125us,其中bInterval的范圍為1~16(包括16)。USB系統(tǒng)軟件將在配置中使用這個信息以確定可以維持不變的周期。系統(tǒng)提供的周期可能比設(shè)備所要求的短,而且達到USB定義的最短周期(125us的微型幀或1ms的幀)??蛻糗浖驮O(shè)備只能依賴于這樣的事實:主機保證端點兩個處理嘗試之間的持續(xù)時間不會比所要求的周期長。注意,總線錯誤會妨礙中斷處理在總線上傳輸成功,因此超出了要求的周期。當客戶軟件有掛起的中斷傳輸IRP時,才會輪詢端點。如果到達執(zhí)行中斷傳輸?shù)目偩€時間但沒有掛起的IRP,那么端點將沒有傳輸數(shù)據(jù)的機會。一旦IRP有效,它的數(shù)據(jù)將在下一個分配的周期傳輸。高速端點在每個微型幀(或192Mb/s)能傳輸3072字節(jié).要求每個周期傳輸超過1024字節(jié)的告訴端點被稱為高帶寬端點.高帶寬端點在沒個微型幀使用多個處理.高帶寬端點必須指定周期1X125us(bInterval=1).通過在每個指定的周期訪問中斷端點,可以在USB上進行中斷傳輸.對于輸入的中斷端點,主機在不訪問端點和請求中斷傳輸?shù)那闆r下不能確定端點是否中斷的信源.如果當主機訪問端點沒有傳輸?shù)闹袛鄶?shù)據(jù),惻會以NAK響應(yīng).端點應(yīng)只在中斷等待時提供中斷數(shù)據(jù),避免客戶軟件錯誤地通知IRP結(jié)束.長度為0的數(shù)據(jù)有效負載是有效的傳輸,在一些應(yīng)用上非常有效.2023/7/2379.中斷傳輸?shù)臄?shù)據(jù)順序中斷傳送可以利用0/1跳變位(toggle位)的機制,當成功的進行了一個傳送,該位就跳變一次。主機總是認為設(shè)備是遵守完備的握手協(xié)議和重發(fā)協(xié)議(參見第7章)。但如果無論傳送成功否,設(shè)備都在Data1/Data0間跳變PID,就忽略主機發(fā)來的握手信號。但這時,客戶軟件會丟失一些包。因為有錯誤發(fā)生時,主機控制器會把設(shè)備發(fā)的下一個包當作上一個包的重發(fā)。一旦在中斷通道上檢測到一個引起中止的條件,或收到設(shè)備發(fā)來的STALL握手信號,所有正等待的IRP都會中止。由軟件通過獨立的控制通道來消除中止條件。清除后,設(shè)備和主機都復位到Data0的狀態(tài)。如果總線上出現(xiàn)了一個影響傳送的錯誤,則中斷處理事務(wù)會停止.2023/7/2380.批量傳送

為了支持在某些在不確定的時間進行的相當大量的數(shù)據(jù)通信,于是設(shè)計了批傳送類型。它可以利用任何可獲得的帶寬。批傳送有以下幾點特性:·以可獲得帶寬訪問總線?!と绻偩€出現(xiàn)錯誤,傳送失敗,可進行重發(fā)。·可以保證數(shù)據(jù)必被傳送,但不保證傳送的帶寬和延遲。只當有可獲得的帶寬時,批傳送才會發(fā)生。如果USB有較多的空閑帶寬,則批傳送發(fā)生地相對頻繁,如果空閑帶寬較少,可能有很長時間沒有批傳送發(fā)生.2023/7/2381.1批傳送的數(shù)據(jù)格式USB沒有規(guī)定批通道上數(shù)據(jù)流的格式2批傳送的方向批通道是一種流通道,所以總是單方向的。如果要進行雙向傳送,必須用兩個通道。3批傳送對包長度的限制

批傳送的端點決定自己可以接收或傳送的最大數(shù)據(jù)凈負荷區(qū)長度。USB規(guī)定最大的批數(shù)據(jù)凈負荷區(qū)的長度為8、16、32或64字節(jié),高速端點的最大值是512字節(jié),而低速設(shè)備沒有批量端點.這個最大長度是指數(shù)據(jù)包中數(shù)據(jù)區(qū)的最大長度,不包括協(xié)議要求的一些管理信息.批端點必須支持規(guī)定的最大長度中的一個,這個長度將在端點的設(shè)置信息中說明。USB并不要求每個數(shù)據(jù)凈負荷區(qū)都達到最大長度,即如果不夠長度的話,不必填充至最大長度。所有主機控制器必須分別支持8、16、32或64作為最大長度和高速批量端點512字節(jié)的最大包,而對更大或更小的長度可以不必支持。在配置其間,USB系統(tǒng)軟件讀出了端點的數(shù)據(jù)有效負載最大值,并確保不會向端點發(fā)送比所支持的值還大的有效負載.端點發(fā)送的數(shù)據(jù)負載其數(shù)據(jù)場必須小于或等于端點的wMaxPacketSize值。當批量IRP包含的數(shù)據(jù)超過數(shù)據(jù)有效負載的最大值時,要求所有數(shù)據(jù)有效負載都是最大值,但包含剩余數(shù)據(jù)的最后一個數(shù)據(jù)負載除外。當端點執(zhí)行以下的操作時,批量傳輸完成:

2023/7/2382.·已傳的數(shù)據(jù)量恰好等于期望傳送的量?!髁艘粋€不到wMaxPacketSize長度的包或傳了一個長度為0的包。一旦批傳送結(jié)束,主機控制器中止當前的IRP,并開始下一個IRP。如果收到的一個數(shù)據(jù)凈負荷區(qū)超長,則所有在等待此端點的批傳送IRP都將被中止/取消。

4批傳送對總線訪問的限制只有全速和高速設(shè)備可以使用批傳送。端點無法提出對批通道的總線訪問頻率的要求。USB會協(xié)調(diào)所有批傳送和正等待的IRP的總線訪問請求,以獲得在客戶軟件和應(yīng)用層之間的“最佳”傳送效果。總線上的控制傳送的優(yōu)先級比批傳送高。對于控制傳送,有可保證的傳送時間,而對批傳送,沒有。只有當有可用的總線帶寬時,批傳送才發(fā)生。如果有段時間沒有被用于其他目的,這段時間將用于批傳送。如果正等待的各個批傳送是要往不同的端點去的,主機控制器將根據(jù)公平訪問原則,安排它們的順序。至于公平訪問原則的具體內(nèi)容,由主機控制器的實現(xiàn)決定。系統(tǒng)中的所有批傳送是競爭同一個可用的總線時間的,所以USB系統(tǒng)軟件可以改變對某個特定端點進行的批傳送所占有的總線時間。所以端點和它的客戶軟件不能夠期望有一個特定的批傳送的速度。當有設(shè)備被加進或移出USB系統(tǒng)或出現(xiàn)對其它設(shè)備上端點的請求時,端點和它的客戶軟件可獲得的總線時間將起一定變化。但客戶軟件不能主觀地認為批傳送與控制傳送的順序,有時,批傳送會在控制傳送之前進行。

2023/7/2383.高速批量OUT端點必須支持PING流控制協(xié)議。總線頻率和(微型)幀定制了USB系統(tǒng)中一個(微型)幀中成功的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論