多種手冊(cè)集合05數(shù)據(jù)流模型_第1頁(yè)
多種手冊(cè)集合05數(shù)據(jù)流模型_第2頁(yè)
多種手冊(cè)集合05數(shù)據(jù)流模型_第3頁(yè)
多種手冊(cè)集合05數(shù)據(jù)流模型_第4頁(yè)
多種手冊(cè)集合05數(shù)據(jù)流模型_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 USB 數(shù)據(jù)流模型本章介紹了數(shù)據(jù)如何在 USB 中傳送,將涉及到系統(tǒng)中關(guān)于信號(hào)的和協(xié)議定義的一層。對(duì)于 USB 系統(tǒng)中這一層中各個(gè)定義的詳細(xì)情況可參見(jiàn)第六第七章。本介紹的數(shù)據(jù)傳送格式,將在第八章到第十一逐步擴(kuò)充。所有的實(shí)現(xiàn)者必須閱讀此章,以便了解 USB中一些非常的概念。4.1 實(shí)現(xiàn)者的視圖USB 提供了在一臺(tái)主機(jī)和若干臺(tái)附屬的 USB 設(shè)備之間的通信功能,從終端用戶的角度看到的 USB 系統(tǒng),可簡(jiǎn)單地用圖 4.1 表示:圖 41 USB 主機(jī)/設(shè)備的簡(jiǎn)單模型但在實(shí)際的實(shí)現(xiàn)上,具體的系統(tǒng)要比這復(fù)雜,不同層次的實(shí)現(xiàn)者對(duì) USB 的有不同要求,這使得我們必須從不同的層次觀察 USB 系統(tǒng)。

2、USB 系統(tǒng)提出了一些重要的概念和情況來(lái)支持現(xiàn)代個(gè)人計(jì)算機(jī)所提出的可靠性要求,所以 USB 的分層理解是必須的。它能使不同層次的實(shí)現(xiàn)者只關(guān)心 USB 相關(guān)層次的特性功能細(xì)節(jié),而不必掌握從硬件結(jié)構(gòu)到軟件系統(tǒng)的所有細(xì)節(jié)。USB 的這種層次結(jié)構(gòu)如圖 4-2 所示,主機(jī)物理設(shè)備實(shí)際通信流邏輯通信流需實(shí)現(xiàn)的區(qū)域圖 42 USB 需實(shí)現(xiàn)的區(qū)域USB主機(jī)器USB系統(tǒng)軟件客戶軟件USB總線接口USB邏輯設(shè)備應(yīng)用USB 主機(jī)USB 設(shè)備各層次的具體在以后逐步介紹。特別地,有四個(gè)層次的實(shí)現(xiàn)是較為集中的。·USB 物理設(shè)備(USB Physical Device):USB 上的一種硬件,可運(yùn)行一些用戶程序

3、。·客戶軟件(client software):為一個(gè)特定的 USB 設(shè)備而在主機(jī)上運(yùn)行的軟件。這種軟件由 USB 設(shè)備的提供者提供,或由操提供。·USB 系統(tǒng)軟件(USB system software):此軟件用于在特定的操中支持 USB,它由操提供。與具體的 USB 設(shè)備無(wú)關(guān),也于客戶軟件。·USB 主機(jī)器(USB Host Controller):總線在主機(jī)方面的接口,是軟件和硬件的總和。用于支持 USB 設(shè)備通過(guò) USB 連到主機(jī)上。這四個(gè) USB 系統(tǒng)的組成部分在功能上存在相互重疊的部分。為了支持主機(jī)與客戶之間的堅(jiān)固可靠的通信,還需要在后面對(duì)這些部分進(jìn)

4、行細(xì)節(jié)性描述。如圖 4-2 所示,一臺(tái)主機(jī)與一個(gè) USB 設(shè)備間的連接是由許多層上的連接組成。USB 總線接口層提供了在主機(jī)和設(shè)備之間的物理連接、連接、數(shù)據(jù)包連接。USB 設(shè)備層對(duì) USB 系統(tǒng)軟件是可見(jiàn)的,系統(tǒng)軟件基于它所見(jiàn)的設(shè)備層來(lái)完成對(duì)設(shè)備的一般的 USB 操作。應(yīng)用層可以通過(guò)與之相配合的客戶軟件向主機(jī)提供一些額外的功能。USB 設(shè)備層和應(yīng)用層的通信是邏輯上的,對(duì)應(yīng)于這些邏輯通信的實(shí)際物理通信由 USB 總線接口層來(lái)完成。關(guān)于 USB 的物理通信在第 5、6描述,而相邏輯通信在第 8、9介紹。本章閱讀更加詳細(xì)的描述一些部分。概念,USB 系統(tǒng)的實(shí)現(xiàn)者必須先掌握它們,然后在往后幾為了描述和

5、管理 USB 通信,以下概念是很重要的:·總線拓樸(Bus Topology):USB 的基本物理組成、基本邏輯組成,以及各組成部分之間的相互關(guān)系。這將在 4.2 節(jié)中描述。·通信流模型(communication Flow Ms):描述主機(jī)與設(shè)備如何通過(guò) USB 通信,以及通信所用的四種通信類型。這將在 4.3 到 4.8 的各節(jié)中介紹。·總線管理(BUS Access):主機(jī)面對(duì)大量的 USB 設(shè)備的各種通信要求,如何、協(xié)調(diào)總線的。·關(guān)于同步傳送的考慮:4.10 節(jié)中將介紹。對(duì)要求同步傳送的設(shè)備提供一些特性。非同步傳送設(shè)備的實(shí)現(xiàn)者不必閱讀此節(jié)。4.2

6、 總線拓樸總線拓樸結(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è)備的角度觀察到的 USB 系統(tǒng)。·客戶軟件層與應(yīng)用層的關(guān)系:描述從客戶軟件層看到的應(yīng)用層的情況,以及從應(yīng)用層看到的客戶軟件層的情況。4.2.1 USB 主機(jī)主機(jī)的邏輯結(jié)構(gòu)如圖 4-3,包括·USB 主機(jī)器(USB Host Controller)·USB 系統(tǒng)軟件集合:USB 驅(qū)動(dòng)程序,主機(jī)·客

7、戶軟件器的驅(qū)動(dòng)程序,主機(jī)軟件主機(jī)實(shí)際通信流邏輯通信流主機(jī)的組成圖 43USB 主機(jī)在 USB 系統(tǒng)中是一個(gè)起協(xié)調(diào)作用的實(shí)體,它不僅占有特殊的物理位置,而且對(duì)于USB 以及連到 USB 上的設(shè)備來(lái)說(shuō),還負(fù)有特殊責(zé)任。主機(jī)所有的對(duì) USB 的。一個(gè)USB 設(shè)備想要總線必須由主機(jī)給予它使用權(quán)。主機(jī)還負(fù)責(zé)監(jiān)督 USB 的拓樸結(jié)構(gòu)。關(guān)于主機(jī)和它的任務(wù)的更詳細(xì)、更徹底的描述,請(qǐng)見(jiàn)第 9 章。4.2.2 USB 設(shè)備一個(gè) USB 設(shè)備的邏輯結(jié)構(gòu)如圖 4.4 所示,包括·USB 總線接口·USB 邏輯設(shè)備·應(yīng)用層物理設(shè)備USB邏輯設(shè)備應(yīng)用USB主機(jī)器USB系統(tǒng)軟件客戶軟件實(shí)際通信

8、流邏輯通信流圖 4-4 物理設(shè)備組成USB 設(shè)備用于向主機(jī)提供一些額外的功能。USB 設(shè)備提供的功能是多種多樣的,但面向主機(jī)的接口卻是一致的。所以,對(duì)于所有這些設(shè)備,主機(jī)可以用同樣的方式來(lái)管理它們與 USB有部分。為了幫助主機(jī)辨認(rèn)及確定 USB 設(shè)備,這些設(shè)備本身需要提供用于確認(rèn)的信息。在某一些方面的信息,所有設(shè)備都是一樣的;而另一些方面的信息,由這些設(shè)備具體的功能決定。信息的具體格式是不定的,由設(shè)備所處的設(shè)備級(jí)決定。對(duì) USB 設(shè)備更完備的描述,見(jiàn)第 8 章。423 總線的物理拓樸結(jié)構(gòu)USB 系統(tǒng)中的設(shè)備與主機(jī)的連接方式采用的是星形連接,如圖 4-5。根 HUB設(shè)備設(shè)備HUB圖 45 USB

9、 物理總線的拓?fù)鋱D中的 Hub 是一類特殊的 USB 設(shè)備,它是一組 USB 的連接點(diǎn),主機(jī)中有一個(gè)被嵌入的 Hub 叫根 Hub(root Hub)。主機(jī)通過(guò)根 Hub 提供若干個(gè)連接點(diǎn)。為了防止環(huán)狀連接,采用星形連接來(lái)體現(xiàn)層次性,如圖 4-5。這種連接的形狀很像一棵樹(shù)。用于提供具體功能的設(shè)備叫應(yīng)用設(shè)備。許多不同功能的設(shè)備放在一起被看作一個(gè)整體, 叫包。例如,鍵盤和軌跡球可以被視作一個(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)

10、,這個(gè)復(fù)合設(shè)備和一個(gè)帶著若干設(shè)備的單獨(dú) Hub 是一樣的。圖中也標(biāo)出了一個(gè)復(fù)合設(shè)備。4.2.4 總線邏輯拓樸結(jié)構(gòu)在物理結(jié)構(gòu)上,設(shè)備通過(guò) Hub 連到主機(jī)上。但在邏輯上,主機(jī)是直接與各個(gè)邏輯設(shè)備通信的,就好像它們是直接被連到主機(jī)上一樣。這個(gè)邏輯關(guān)系如圖 4-6 所示。與之對(duì)應(yīng)的物設(shè)備設(shè)備復(fù)合設(shè)備HUB設(shè)備設(shè)備主機(jī)USB總線接口理結(jié)構(gòu)就是圖 4-5 中的結(jié)構(gòu)。Hub 也是邏輯設(shè)備,但在圖 4-6 中,為了簡(jiǎn)化起見(jiàn),未被畫出,雖然 USB 系統(tǒng)中的工作都是從邏輯角度來(lái)的,但主機(jī)必須對(duì)物理結(jié)構(gòu)有個(gè)了解。例如,在處理 Hub 被移去的情況時(shí),當(dāng)一個(gè) Hub 被移出,通過(guò)它與主機(jī)相連的設(shè)備也應(yīng)一起被移去,

11、這是由其物理結(jié)構(gòu)決定的。關(guān)于 Hub 的更詳細(xì)的討論在第 10 章。邏輯設(shè)備主機(jī)邏輯設(shè)備邏輯設(shè)備邏輯設(shè)備邏輯設(shè)備圖 46 USB 邏輯總線的拓?fù)?.2.5 客戶軟件層與應(yīng)用層的關(guān)系USB 系統(tǒng)的物理上、邏輯上的拓樸結(jié)構(gòu)反映了總線的共享性。USB 應(yīng)用設(shè)備的客戶軟件只關(guān)心設(shè)備上與它相接口,客戶軟件必須通過(guò) USB 軟件編程接口來(lái)應(yīng)用設(shè)備。這與另一些總線如 PCL,ELSA,PCMUA 等不同,這些總線是直接內(nèi)存或 I/O 的。在運(yùn)行中,客戶軟件必須于 USB 上的其它設(shè)備。這樣,設(shè)備和客戶軟件的設(shè)計(jì)者就可以只關(guān)心該設(shè)備與主機(jī)硬件的相互作用和主機(jī)軟件的相互作用的細(xì)節(jié)問(wèn)題。圖 4-7 說(shuō)明了在圖 4

12、-6的邏輯結(jié)構(gòu)下,一個(gè)設(shè)備設(shè)計(jì)者看到的客戶軟件與相應(yīng)應(yīng)用的關(guān)系的視圖??蛻糗浖蛻糗浖蛻糗浖?yīng)用應(yīng)用應(yīng)用圖 4-7 客戶軟件和應(yīng)用間的關(guān)系4.3 USB 通信流USB 是為主機(jī)軟件和它的 USB 應(yīng)用設(shè)備間的通信服務(wù)的,對(duì)客戶與應(yīng)用間不同的交互,USB設(shè)備對(duì)數(shù)據(jù)流有不同的要求。USB 為此提供了更好的 overall 總線使用,它各種不同的數(shù)據(jù)流相互地進(jìn)入一個(gè) USB 設(shè)備。每種通信流都采取了某種總線方法來(lái)完成主機(jī)上的軟件與設(shè)備之間的通信。每個(gè)通信都在設(shè)備上的某個(gè)端點(diǎn)結(jié)束。不同設(shè)備的不同端點(diǎn)用于區(qū)分不同的通信流。圖 4-8 是圖 4-2 的擴(kuò)充,它更詳盡地描述了 USB 系統(tǒng),支持了邏輯設(shè)備

13、層和應(yīng)用層間的通信。實(shí)際的通信流要經(jīng)過(guò)好幾個(gè)接口邊界,從第 5 章到第 7 章,刻畫了機(jī)械上、電氣上以及協(xié)議上的 USB 接口的定義。第 8 章刻劃了 USB 設(shè)備的編程接口。通過(guò)此接口,可從主機(jī)側(cè)對(duì) USB 設(shè)備進(jìn)行,第 9 章介紹了兩個(gè)主機(jī)側(cè)的通口:·主機(jī)器的驅(qū)動(dòng)程序(HCD):它位于 USB 主機(jī)器與 USB 系統(tǒng)軟件之間。主機(jī)器可以有一系列不同的實(shí)現(xiàn),而系統(tǒng)軟件持不同的器,而不必特別了解這個(gè)具體的于任何一個(gè)具體實(shí)現(xiàn)。一個(gè)驅(qū)動(dòng)程序可以支器。一個(gè) USB器的實(shí)現(xiàn)者必須提供一個(gè)支持它的器的主機(jī)器驅(qū)動(dòng)器(HCD)實(shí)現(xiàn)。·USB 驅(qū)動(dòng)程序(USBD):USB 系統(tǒng)軟件與客戶軟

14、件之間的接口,提供給客戶軟件一些方便的使用 USB 設(shè)備的功能。一個(gè) USB 邏輯設(shè)備對(duì) USB 系統(tǒng)來(lái)說(shuō)就是一個(gè)端點(diǎn)集合。端點(diǎn)可以根據(jù)它們實(shí)現(xiàn)的接口來(lái)分類。USB 系統(tǒng)軟件通過(guò)一個(gè)缺省的通道來(lái)管理設(shè)備。而客戶軟件用通道束管理接口。通道束的一端為端點(diǎn),一端為緩沖區(qū)??蛻糗浖笸ㄐ艛?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í)用總線在 USB 上傳遞數(shù)據(jù)。主機(jī)連接物理設(shè)備到一個(gè)接口的通道束點(diǎn)的USB設(shè)備(第 9 章)USB主機(jī)(第 10 章機(jī)械的, 電氣的, 協(xié)議(第 6,7,8 章)通

15、道:兩個(gè)水平實(shí)體之間連接的抽象。數(shù)據(jù)傳遞機(jī)制被傳遞的數(shù)據(jù)的與USB 相形式圖 4-8 USB 主機(jī)/設(shè)備的細(xì)節(jié)圖與接口無(wú)有關(guān)USB 格式每個(gè)端USB 幀點(diǎn)的數(shù)結(jié)構(gòu)的據(jù)數(shù)據(jù)USB 總線接口SIEUSB端點(diǎn) 邏輯設(shè)備0端點(diǎn)的集合應(yīng)用接口 X接口的集合Client SW管理一個(gè)接口緩沖沒(méi)有USB格式事務(wù)USB 幀格式到 0 號(hào)端缺省通道的數(shù)據(jù))USB 線路USBUSB 幀格式接口的數(shù)據(jù)事務(wù)SIE主機(jī) 器USB System SW管理設(shè)備圖 4-9 說(shuō)明了數(shù)據(jù)如何在主機(jī)側(cè)中的內(nèi)存緩沖和設(shè)備中的端點(diǎn)中傳送。在后面,將逐步介紹端點(diǎn)、通道和通信流。主機(jī)上的軟件通過(guò)一系列的通信流與邏輯設(shè)備進(jìn)行通信。這一系列的

16、通信流是由 USB 設(shè)備的軟件和硬件設(shè)計(jì)者選擇的,使設(shè)備能傳送由 USB 提供的字符。客戶軟件界面圖 4-9 USB 通信流4.3.1 設(shè)備端點(diǎn)一個(gè)端點(diǎn)是一個(gè)可唯一識(shí)別的 USB 設(shè)備的 Portion,它是主機(jī)與設(shè)備間通信流的一個(gè)結(jié)束點(diǎn)。一系列相互的端點(diǎn)在一起了 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)的特性決定了它與客戶軟件進(jìn)行的傳送的類型。一個(gè)端點(diǎn)有以下特性:·

17、;端點(diǎn)的總線頻率要求·端點(diǎn)的總線延遲要求·端點(diǎn)的帶寬要求·端點(diǎn)的端點(diǎn)號(hào)·對(duì)錯(cuò)誤處理的要求·端點(diǎn)能接收或的包的最大長(zhǎng)度·端點(diǎn)的傳送類型(詳見(jiàn) 4.4 節(jié))·端點(diǎn)與主機(jī)的數(shù)據(jù)傳送方向端點(diǎn)號(hào)不為 0 的端點(diǎn)在被設(shè)置前處于未知狀態(tài),是不能被主機(jī)的。USB 邏輯設(shè)備端點(diǎn)通信流通道緩沖區(qū)主機(jī)4.3.1 對(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è)備)。缺省通道(見(jiàn) 4.3.2 節(jié))支持了對(duì)

18、的傳送(傳送將在 4.5 中定義),一旦設(shè)備接上,并加電,且又收到一個(gè)總線復(fù)位命令,端點(diǎn) 0 就是可4.3.1.2 對(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ò)程(見(jiàn)第 8 章)的一部分。4.3.2 通道一個(gè) USB 通道是設(shè)備上的一個(gè)端點(diǎn)和主機(jī)上軟件之間的。體現(xiàn)了主機(jī)上緩存和端點(diǎn)間傳送數(shù)

19、據(jù)的能力。有兩不同的且互斥的通道通信格式。·流(Stream):指不具有 USB 定義的格式的數(shù)據(jù)流。·消息(Message):指具有某種 USB 定義的格式的數(shù)據(jù)流。USB 不解釋在通道中傳送的數(shù)據(jù)的內(nèi)容。消息通道要求數(shù)據(jù)組織成 USB 定義的格式,但它的內(nèi)容,USB 是不管的。特別地,有下列概念與通道相關(guān):·對(duì) USB 總線·傳送類型的申請(qǐng)(claim),帶寬的使用情況·與通道相連的端點(diǎn)的特性,例如:端點(diǎn)的數(shù)據(jù)傳送方向,最大數(shù)據(jù)凈負(fù)荷區(qū)的長(zhǎng)度。數(shù)據(jù)凈負(fù)荷是指在總線處理事務(wù)(transaction)中,數(shù)據(jù)數(shù)據(jù)區(qū)的數(shù)據(jù)(總線處理事務(wù)見(jiàn)第 7

20、章)。由兩個(gè) 0 號(hào)端點(diǎn)組成的通道叫缺省通道。一旦設(shè)備加電并復(fù)位后,此通道即可使用。其它通道只在設(shè)備被設(shè)置后才存在。USB 系統(tǒng)軟件在決定設(shè)備、設(shè)置要求和設(shè)置設(shè)備時(shí)使用缺省USB 系統(tǒng)軟件保留缺省通道。當(dāng)設(shè)備被設(shè)置后,這個(gè)設(shè)備的特定軟件還可使用該通道。通道的擁,協(xié)調(diào)其它客戶軟件對(duì)通道的使用。一個(gè)客戶軟件一般都通過(guò) I/O 請(qǐng)求包(IRP)來(lái)要求數(shù)據(jù)傳送。然后,或者等待,或者當(dāng)傳送完成后被通知。IRP 的細(xì)節(jié)是由操來(lái)指定的??蛻糗浖岢雠c設(shè)備上的端點(diǎn)建立某個(gè)方向的數(shù)據(jù)傳送的請(qǐng)求,IRP 就可簡(jiǎn)單地理解為這個(gè)請(qǐng)求。一個(gè)客戶軟件可以要求一個(gè)通道回送所有的 IRP。當(dāng)關(guān)于 IRP 的總線傳送結(jié)束時(shí),無(wú)

21、論它是客戶軟件都將獲得通知說(shuō) IRP 完成了。地完成,還是出現(xiàn)錯(cuò)誤,如果通道上沒(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)有任何的總線動(dòng)作是沖它而來(lái)的。只有當(dāng)有數(shù)據(jù)在通道上時(shí),該通道才能發(fā)現(xiàn)總線對(duì)它的動(dòng)作。如果一個(gè)非同步通道遇到一個(gè)迫使它給主機(jī)發(fā) STALL 的情況(參見(jiàn)第 7 章),或者在任一個(gè) IRP 中發(fā)現(xiàn) 3 個(gè)總線錯(cuò)誤。這個(gè) IRP 將被中止。其它所有突出的 IRP 也一同被中止。通道不再接收任何 IRP,直到客戶軟件從這個(gè)情況中恢復(fù)過(guò)來(lái)(恢復(fù)的方式取決于軟件的實(shí)現(xiàn)),而且承認(rèn)這個(gè)中止或出現(xiàn)的錯(cuò)誤,并發(fā)

22、一個(gè) USBD Call 來(lái)表明它已承認(rèn)。一個(gè)合適的狀態(tài)信息將通知客戶軟件 IRP 的結(jié)果出錯(cuò)或中止。同步通道的在 4.6 中介紹。一個(gè) IRP 可能會(huì)需要多個(gè)數(shù)據(jù)傳遞數(shù)據(jù)。這些數(shù)據(jù)區(qū)除最后一個(gè)外,都具有數(shù)據(jù)區(qū)的最大長(zhǎng)度,最后一個(gè)數(shù)據(jù)區(qū)包含了這個(gè) IRP 中剩下的數(shù)據(jù)。(可參見(jiàn)關(guān)于傳送類型的介紹,以獲得更詳細(xì)的了解)。對(duì)這樣的一個(gè) IRP,短就是說(shuō)未達(dá)到最大長(zhǎng)度的數(shù)據(jù)區(qū))在數(shù)據(jù)輸入時(shí)無(wú)法填完 IRP 數(shù)據(jù)緩沖區(qū)。這可能會(huì)有二種不同解釋,它依賴于客戶軟件的情況:·如果該客戶軟件可以接受變長(zhǎng)的 IRP,那么,IRP 數(shù)據(jù)緩沖區(qū)未被填滿,可以看作一個(gè)分限,說(shuō)明一個(gè) IRP 已結(jié)束,主機(jī)器可

23、以準(zhǔn)備接收下一個(gè) IRP 了。·如果該客戶軟件只收定長(zhǎng)的 IRP。那么,我們認(rèn)為發(fā)生了一個(gè)錯(cuò)誤,這 IRP 將被中止,通道也會(huì)被阻塞,通道上的數(shù)據(jù)都中止。因?yàn)閷?duì)這兩種情況,主機(jī)器會(huì)有不同的反應(yīng),而且采取何種措施不由器決定,所以對(duì)每個(gè) IRP 都必須說(shuō)明客戶軟件的具體要求。通道的端點(diǎn)可以用 NAK 信號(hào)來(lái)通知主機(jī)正忙,NAK 不能作為向主機(jī)反還 IRP 的中止條件。在一個(gè)給定的 IRP 處理過(guò)程中,可以遇到任意多個(gè) NAK,NAK 不4.3.2.1 流通道錯(cuò)誤。流通道中的數(shù)據(jù)是流的形式,也就是該數(shù)據(jù)的內(nèi)容不具有 USB 要求的結(jié)構(gòu)。數(shù)據(jù)從流通道一端流進(jìn)的順序與它們從流通道另一端流出時(shí)的

24、順序是一樣的,流通道中的通信流總是單方向的。對(duì)于在流通道中傳送的數(shù)據(jù),USB 認(rèn)為它來(lái)自同一個(gè)客戶。USB 系統(tǒng)軟件不能夠提供使用同一流通道的多個(gè)客戶的同步。在流通道中傳送的數(shù)據(jù)遵循先進(jìn)先出原則。流管流只能連到一個(gè)固定號(hào)碼的端點(diǎn)上,或者流進(jìn),或者流出。(這個(gè)號(hào)碼是由協(xié)議層決定的)。而具有這個(gè)號(hào)碼的另一個(gè)方向的端點(diǎn)可以被分配給其它流通道。流通道支持同步傳送,中斷傳送和批傳送,這些在稍后的章節(jié)會(huì)進(jìn)一步解釋。4.3.2.2 消息通道消息端點(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)的變化,消息通道要求

25、數(shù)據(jù)有一個(gè)格式,此格式保證了命令能夠被可靠地傳送和確認(rèn)。消息通道也雙方向的信息流,雖然大多數(shù)的通信流是單方向的。特別地,缺省通道是一個(gè)消息通道。USB 系統(tǒng)軟件讓多個(gè)請(qǐng)求同時(shí)要求同一個(gè)消息通道。一個(gè)設(shè)備的每個(gè)消息通道在一個(gè)時(shí)間段內(nèi),只能為一個(gè)消息請(qǐng)求服務(wù),多個(gè)客戶軟件可以通過(guò)缺省通道發(fā)出它們的請(qǐng)求,但這些請(qǐng)求到達(dá)設(shè)備的次序是按先進(jìn)先出的原則的。設(shè)備可以在數(shù)據(jù)傳送階段和狀態(tài)階段信息流,這取決于這些設(shè)備與主機(jī)交互的能力(參見(jiàn)第 7 章)。正常情況下,在上一個(gè)消息未被處理完之前,是不能向消息通道發(fā)下一個(gè)消息的。但在有錯(cuò)誤發(fā)生的情況下, 主機(jī)會(huì)取消這次消息傳送,并且不等設(shè)備將已收的數(shù)據(jù)處理完,就開(kāi)始下

26、一次的消息傳送。在操作通道的軟件看來(lái),一個(gè) IRP 中的錯(cuò)誤,使這個(gè) IRP 被取消,并且所有正排隊(duì)等待的IRP 一同也被取消。申請(qǐng)這個(gè) IRP 的客戶被通知 IRP 結(jié)束,且有出錯(cuò)提示。消息通道后有兩個(gè)相同號(hào)碼的端點(diǎn),一個(gè)用于輸入,一個(gè)用于輸出。兩個(gè)號(hào)碼必須相同。消息通道支持4.4 傳送類型傳送,這將在 4.5 中進(jìn)行介紹。USB 通過(guò)通道在主機(jī)緩沖區(qū)與設(shè)備端點(diǎn)間傳送數(shù)據(jù)。在消息通道中傳遞的數(shù)據(jù)具有 USB定義的格式,它的數(shù)據(jù)包含的數(shù)據(jù)具有設(shè)備指定的格式。USB 要求任何在通道上傳送的數(shù)據(jù)均被打包,數(shù)據(jù)的解釋工作由客戶軟件和應(yīng)用層軟件負(fù)責(zé)。USB 提供了多種數(shù)據(jù)格式,使之盡可能滿足客戶軟件和

27、應(yīng)用軟件的要求。一個(gè) IRP 需要一個(gè)或多個(gè)總線處理事務(wù)來(lái)完成。每個(gè)傳送類型在以下的幾個(gè)傳送特征上會(huì)有不同:·USB 規(guī)定的數(shù)據(jù)格式·信息流的方向·數(shù)據(jù)·總線區(qū)的長(zhǎng)度限制的限制·的限制·出錯(cuò)處理USB 設(shè)備的設(shè)計(jì)者可以決定設(shè)備上每個(gè)端點(diǎn)的能力。一旦為這個(gè)端點(diǎn)建立了一個(gè)通道,這個(gè)通道的絕大多數(shù)傳送特征也就固定下來(lái)了,一直到這個(gè)通道被取消為止。也有部分傳送特征可以改變,對(duì)這樣的特征,將會(huì)在介紹每個(gè)傳送類型時(shí)作出說(shuō)明。USB 定義了 4 種傳送類型:·傳送:可靠的、非周期性的、由主機(jī)軟件發(fā)起的請(qǐng)求或者回應(yīng)的傳送,通常用于命令事務(wù)和

28、狀態(tài)事務(wù)。·同步傳送:在主機(jī)與設(shè)備之間的周期性的、連續(xù)的通信,一般用于傳送與時(shí)間相信息。這種類型保留了將時(shí)間概念包含于數(shù)據(jù)中的能力。但這并不意味著,傳送這樣數(shù)據(jù)的時(shí)間總是很重要的,即傳送并不一定很緊急。·中斷傳送:小規(guī)模數(shù)據(jù)的、低速的、固定延遲的傳送。·批傳送:非周期性的,大包的可靠的傳送。典型地用于傳送那些可以利用任何帶寬的數(shù)據(jù),而且這些數(shù)據(jù)當(dāng)沒(méi)有可用帶寬時(shí),可以等待。這些傳送類型將在后面的四個(gè)大節(jié)中進(jìn)行討論。IRP 的數(shù)據(jù)均放在數(shù)據(jù)的數(shù)據(jù)區(qū)被傳送,這將在 7.4.3 中介紹。關(guān)于與具體傳送類型有一些協(xié)議細(xì)節(jié)在第 7介紹。4.5傳送傳送一個(gè)設(shè)備的不同部分。傳送用

29、于支持在客戶軟件和它的應(yīng)用之間傳送由以下幾個(gè)事務(wù)組成:(1)建立聯(lián)的關(guān)于設(shè)置信息、命令信息、狀態(tài)信息的傳送。系,把請(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”。7.2 中將介紹傳送的細(xì)節(jié),例如,什么樣的包,什么樣的總線事務(wù)和總線事務(wù)的順序。而第 8字。介紹 USB 定義的 USB 命令USB 設(shè)備必須實(shí)現(xiàn)缺省通道,并將它實(shí)現(xiàn)成一個(gè)消息通道。這個(gè)通道由 USB 系統(tǒng)軟件使用。USB 設(shè)備的確認(rèn)信息、狀態(tài)信息以及信息由該通道傳送。如

30、果需要的話,一個(gè)應(yīng)用設(shè)備可以為端點(diǎn)實(shí)現(xiàn)額外的通道。USB 設(shè)備框架(見(jiàn)第 8 章)定義了標(biāo)準(zhǔn)的,設(shè)備級(jí)的或由銷售商提供的請(qǐng)求,這些請(qǐng)求可操作設(shè)備的狀態(tài)。USB 設(shè)備框架又定義了一些描述器(descriptor),用于存放 USB 設(shè)備的各種信息。機(jī)制提供設(shè)備描述器和請(qǐng)求操作設(shè)備的機(jī)制。傳送只能通過(guò)消息通道進(jìn)行。所以,使用格式(見(jiàn) 4.5.1 節(jié))。傳送的數(shù)據(jù)必須具有 USB 定義的數(shù)據(jù)應(yīng)用層和相應(yīng)的客戶軟件不能為傳送指定總線頻率和帶寬。這由 USB 系統(tǒng)軟件從全局優(yōu)化角度加以決定。USB 系統(tǒng)軟件會(huì)限制設(shè)備要求的4.5.3 和 4.5.4 中介紹。頻率和帶寬,這些限制在4.5.1傳送類型的數(shù)據(jù)

31、格式Setup 包的數(shù)據(jù)格式屬于一個(gè)命令集,這個(gè)集合能保證主機(jī)和設(shè)備之間正常通信。這個(gè)格式也一些銷售商對(duì)設(shè)備命令的擴(kuò)展。Setup 包后的數(shù)據(jù)傳送也具有 USB 定義的格式,除非這個(gè)數(shù)據(jù)是銷售商提供的信息?;貍鞯臓顟B(tài)信息仍然具有 USB 定義的格式。7.5.8 節(jié)和第84.5.2介紹傳送的 Setup傳送的方向數(shù)據(jù)定義。傳送使用的是消息通道上的雙向信息流。所以,一旦一個(gè)個(gè)通道就使用了具有某個(gè)端點(diǎn)號(hào)的兩個(gè)端點(diǎn),一個(gè)輸入,一個(gè)輸出。通道被確認(rèn)之后,這4.5.3傳送包的大小的限制傳送的端點(diǎn)決定了它所能接收或的最大數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度。USB 為高速設(shè)備定義的最大數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度為 8、16、32 或 6

32、4 字節(jié),低速設(shè)備的數(shù)據(jù)凈負(fù)荷區(qū)的長(zhǎng)度只能是8 字節(jié)。Setup 后的所有數(shù)據(jù)要遵守這個(gè)規(guī)定,這個(gè)規(guī)定是這些數(shù)據(jù)的數(shù)據(jù)凈通道(包負(fù)荷區(qū)的,不包括的協(xié)議要求的額外信息,Setup 包實(shí)際上也是 8 字節(jié)。括缺省通道)總是使用 w Max Packet Size 的值。端點(diǎn)在的設(shè)置信息中報(bào)告的最大凈負(fù)荷區(qū)長(zhǎng)度。USB 不要求數(shù)據(jù)凈負(fù)荷區(qū)必須達(dá)到最大長(zhǎng)度,當(dāng)長(zhǎng)度不夠時(shí),不必填充到最大長(zhǎng)度。主機(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é)中

33、讀出, 設(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ū)大長(zhǎng)度至少為 8。超長(zhǎng)。另外,主機(jī)總是認(rèn)為數(shù)據(jù)凈負(fù)荷區(qū)的最端點(diǎn)所傳的數(shù)據(jù)凈負(fù)荷區(qū)長(zhǎng)度必須小于或等于其 wMaxPacketSize(參見(jiàn)第 8 章),當(dāng)一個(gè)數(shù)據(jù)區(qū)不能容納所傳數(shù)據(jù)時(shí),就分幾個(gè)度。最后一區(qū)包含最后剩下的數(shù)據(jù)。傳。除最后一個(gè)區(qū)外,其它應(yīng)達(dá)到最大長(zhǎng)當(dāng)端點(diǎn)做了以下兩件事時(shí),傳送的數(shù)據(jù)階段可被認(rèn)為結(jié)束:·已傳了由 Setup 階段指定的數(shù)據(jù)量。·傳了一個(gè)數(shù)據(jù)包,它的

34、長(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)為通道脫線而中止通道(通道脫線見(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ū),它將中止通道。4.5.4傳送的總線的限制無(wú)論低速設(shè)備還是高速設(shè)備都可以使用通道。端點(diǎn)沒(méi)法指明通道對(duì)總線頻率的要求。USB 權(quán)衡所有通道的總線頻率和正等待的 IRP,從全局優(yōu)化,提供一個(gè)“最佳”傳送方案。USB 要求數(shù)據(jù)幀中的一部分被留給

35、傳送使用。實(shí)現(xiàn)決定)只用了數(shù)據(jù)幀的不到 10%的時(shí)間,則剩余·如果被的傳送(的時(shí)間留給批傳送(參見(jiàn) 4.8 節(jié))。·如果一個(gè)也就是說(shuō),·如果留給傳送被又被中止,則它的中止可在本次的幀內(nèi),也可在以后的幀內(nèi)。和中止不必在同一個(gè)幀內(nèi)。傳送的時(shí)間不夠用,但恰好有一些同步和中斷傳送的幀時(shí)間未用,則主機(jī)器利用這些時(shí)間進(jìn)行額外的傳送。傳送在等待,那么就對(duì)它們進(jìn)行排序然后傳送。·如果對(duì)可用的幀時(shí)間有太多的·如果各個(gè)問(wèn)順序。公平傳送申請(qǐng)的是不同的端點(diǎn),主機(jī)器根據(jù)公平原則決定它們的訪原則的具體內(nèi)容決定于主機(jī)器的實(shí)現(xiàn)。·如果一個(gè)這些要求使得對(duì)某個(gè)端點(diǎn)的傳送

36、事務(wù)頻繁地被中止,不能認(rèn)為給它的總線時(shí)間是的。傳送一般可以在總線上進(jìn)行規(guī)則地、最優(yōu)化地傳送。傳送的速率是可以變化的,USB 系統(tǒng)軟件這些離散的變化。端點(diǎn)和其客戶軟件不能想當(dāng)然的認(rèn)為其有一個(gè)固定的傳送速率,端點(diǎn)可能發(fā)現(xiàn)在一幀內(nèi)有零個(gè)或若干個(gè)傳送。一個(gè)端點(diǎn)和它相應(yīng)的客戶軟件可占用的總線時(shí)間會(huì)因?yàn)槠渌O(shè)備進(jìn)入或系統(tǒng)或者本設(shè)備上的其它端點(diǎn)進(jìn)入或系統(tǒng)而改變??偩€頻率和幀定時(shí)決定于一個(gè)幀內(nèi)可傳送的傳送的最大個(gè)數(shù)。在任一個(gè) USB 系統(tǒng)內(nèi),一個(gè)幀內(nèi)的 8 字節(jié)高速數(shù)據(jù)少于 29 個(gè),8 字節(jié)低速數(shù)據(jù)少于 4 個(gè)。表 4-1 是關(guān)于不同規(guī)格的高速的傳送的情況,以及在一幀內(nèi)可能的最大的傳送數(shù)目。這張表有兩個(gè)默認(rèn)

37、的前提,即傳送有一個(gè)數(shù)據(jù)傳送階段而且這個(gè)數(shù)據(jù)傳送階段有一個(gè)長(zhǎng)度為 0 狀態(tài)階段,表 4-1 還指出了出現(xiàn)兩個(gè)數(shù)據(jù)一些額外的位。表 4-1 高速不到最大長(zhǎng)度的情況,表中不包括用于管理的傳送限制因?yàn)橐粋€(gè)幀內(nèi)只留 10%的時(shí)間給非周期性傳送,所以當(dāng)一個(gè)系統(tǒng)的總線時(shí)間被排滿的時(shí)候,這個(gè)系統(tǒng)內(nèi)的所有傳送只能去競(jìng)爭(zhēng)每個(gè)幀內(nèi)的三個(gè)傳送名額。因?yàn)槌丝蛻糗浖?huì)要求傳送外,USB 系統(tǒng)要用傳送來(lái)傳送設(shè)置信息,所以對(duì)某個(gè)客戶和它的應(yīng)用就不能指望它們的傳送像它們想的一樣進(jìn)行。主機(jī)器可以自由地決定如何將某個(gè)具體的一個(gè)傳送在總線上進(jìn)行,可以在一個(gè)幀內(nèi),也可以跨幾個(gè)幀。一個(gè)端點(diǎn)可能發(fā)現(xiàn)傳送的各個(gè)總線處理事務(wù)在同一幀內(nèi)或分

38、在幾個(gè)不連續(xù)的幀內(nèi)。由于具體實(shí)現(xiàn)的不同,主機(jī)低速器可能不能提供理論上的每幀的最大傳送數(shù)目。傳送與高速傳送都是競(jìng)爭(zhēng)同樣多的可用幀時(shí)間。低速傳送只是要用更多的時(shí)間來(lái)傳送罷了。表 4-2 列出了不同規(guī)格的低速包的情況,以及一幀內(nèi)的最大包數(shù)。這張表同樣沒(méi)包括進(jìn)管理用的開(kāi)銷。無(wú)論低速與高速,由于一個(gè)組成,所以都可能要用幾個(gè)幀才能完成傳送。傳送都由幾個(gè)包表 4-2 低速傳送限制協(xié)議開(kāi)銷(46 字節(jié))數(shù)據(jù)區(qū)最大帶寬字節(jié)/FrameFrame 帶寬/傳送最大傳送數(shù)剩余字節(jié)有用數(shù)據(jù)字節(jié)/Frame1300025%34632600026%3436協(xié)議開(kāi)銷(46 字節(jié))(9 SYNC bytes, 9 PID by

39、tes, 6 Endpoint+CRC bytes, 6 CRC bytes, 8 Setup data bytes, and a7_byte interpacker delay(EOP, etc.)數(shù)據(jù)區(qū)最大帶寬(字節(jié)/秒)Frame 帶寬/傳送最大傳送數(shù)剩余字節(jié)有用數(shù)據(jù)字節(jié)/Frame1320003%3223322620003%31436241200003%303012082240004%2816224163840004%2436384326080005%1937608648320007%1383832Max4.5.5要進(jìn)行傳送的數(shù)據(jù)順序傳送,先要由主機(jī)向設(shè)備發(fā)一個(gè)總線建立(Setup)信

40、息。它描述了的類型,設(shè)備將執(zhí)行此。這個(gè)階段之后,是零個(gè)或多個(gè)數(shù)據(jù)信息的傳送,這是進(jìn)行的具體信息。最后,由狀態(tài)信息的傳送來(lái)結(jié)束這次傳送,端點(diǎn)將這次控傳的狀態(tài)回送給客戶軟件。這次控傳完成之后,可以進(jìn)行對(duì)這個(gè)端點(diǎn)的下一個(gè)控傳,如4.5.4 節(jié)所述,每次控傳何時(shí)在總線上進(jìn)行由主機(jī)器的具體實(shí)現(xiàn)決定。在數(shù)據(jù)傳送階段和狀態(tài)信息回傳階段,可能由于設(shè)備自身的,設(shè)備處于“忙”狀態(tài)。此時(shí)端點(diǎn)可設(shè)法表明正忙(見(jiàn)第 7、8 章),主機(jī)將試著在稍后時(shí)間重傳一次。如果在上一個(gè)控傳結(jié)束之前,端點(diǎn)又收到一個(gè)總線建立信息,設(shè)備將結(jié)束現(xiàn)未完成的傳送,轉(zhuǎn)而處理新的控傳。正常情況下,是早發(fā)總線建立信息的,不過(guò)當(dāng)上一個(gè)控傳因錯(cuò)誤而被中止

41、后,主機(jī)可發(fā)下一個(gè)控傳的總線建立信息。在端點(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ù)。一個(gè)可以識(shí)別一個(gè)數(shù)據(jù)重傳狀態(tài)信息重傳包,因?yàn)閹в袛?shù)據(jù)重傳的指示。狀態(tài)信息包已被來(lái),Setup 包可以因器可以通過(guò)對(duì)

42、方給它發(fā)的握手信息確知它發(fā)的數(shù)據(jù)重送接收,除了 Setup 包以外,協(xié)議可以將一個(gè)重送的包與原來(lái)的包區(qū)為出錯(cuò)而重傳,但無(wú)法說(shuō)明此4.6 同步傳送重傳的,還是原來(lái)的。在非 USB 的環(huán)境下,同步傳送意味著恒定速率、錯(cuò)誤USB 環(huán)境下,要求同步傳送能提供以下幾點(diǎn):(error-tolerant)的傳送。在·固定的延遲下,確保對(duì) USB 帶寬的。·只要數(shù)據(jù)能提供得上,就能保證通道上的恒定數(shù)據(jù)傳送速度。·如果由于錯(cuò)誤而造成傳送失敗,并不重傳數(shù)據(jù)。當(dāng) USB 同步傳送類型被用來(lái)支持同步的源和目的時(shí),使用這個(gè)傳送類型的軟件并不要求是同步的,4.10 中將詳細(xì)介紹 USB 上的

43、同步數(shù)據(jù)的處理。4.6.1 同步傳送的數(shù)據(jù)格式對(duì)于同步傳送的通道(同步通道),USB 并不對(duì)數(shù)據(jù)格式做要求。4.6.2 同步傳送的方向同步通道是一種流通道,所以是單方向的。在對(duì)端點(diǎn)的描述中指明了與它相連的通道的數(shù)據(jù)流方向。如果設(shè)備要同步的雙向流的話,只好用兩個(gè)同步通道,一個(gè)流進(jìn),一個(gè)流出。4.6.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 系統(tǒng)軟件可為一個(gè)傳送的通道調(diào)整最大數(shù)據(jù)區(qū)長(zhǎng)度,但無(wú)法為同步通道進(jìn)行如此41200027%3371282400

44、029%32524Max187500187調(diào)整。在確定的 USB 設(shè)置下,同步通道要么被支持,要么不被支持。USB 限制了同步通道的最大數(shù)據(jù)區(qū)長(zhǎng)度為 1023 字節(jié),表 4-3 列出了不同規(guī)格的同步傳送, 以及一幀內(nèi)可能的最大傳送數(shù)。表中未包括管理開(kāi)銷的字節(jié)。表 4-3 同步傳送限制并不是每一次的數(shù)據(jù)要達(dá)到最大長(zhǎng)度。數(shù)據(jù)區(qū)的長(zhǎng)度由者(客戶軟件或應(yīng)用軟件)決定,每次可以不同。USB 可保證主機(jī)器看到的包有多長(zhǎng),在總線上傳的有多長(zhǎng)。數(shù)據(jù)的實(shí)際長(zhǎng)度由者決定,可以小于早先協(xié)商好的最大長(zhǎng)度??偩€錯(cuò)誤可以使接收者看到的長(zhǎng)度比實(shí)際長(zhǎng)度有了變化。但這些錯(cuò)誤可被檢測(cè)到。具體地講,或者通過(guò)數(shù)據(jù)上的CRC 碼,或者

45、讓接收者預(yù)先知道實(shí)際應(yīng)該的長(zhǎng)度,以此進(jìn)行檢測(cè)。4.6.4 同步傳送的總線方向限制只有高速設(shè)備可以使用同步方式。USB 設(shè)備要求一個(gè)幀內(nèi)不能有超過(guò) 90%的時(shí)間用于周期性傳送(同步傳送或中斷傳送)。同步通道的端點(diǎn)描述的總線頻率。所有的同步通道一般在一幀內(nèi)傳一個(gè)就是說(shuō),1ms 一個(gè)包)。但總線上的錯(cuò)誤或者操對(duì)客戶軟件調(diào)度上的延遲會(huì)造成一個(gè)幀內(nèi)一個(gè)沒(méi)有的情況。此時(shí),設(shè)備將一個(gè)錯(cuò)誤指示信息作為狀態(tài)信息返回給客戶軟件。設(shè)備可以通過(guò)跟蹤 SOF(幀開(kāi)始)信號(hào)來(lái)測(cè)到此類錯(cuò)誤。如果兩個(gè) SOF 信號(hào)間無(wú)數(shù)據(jù)包,則出錯(cuò)??偩€頻率和幀定時(shí)限制了一個(gè)幀內(nèi)的同步傳送的上限,在任何 USB 系統(tǒng)內(nèi),最多有 150個(gè)單字

46、節(jié)的數(shù)據(jù)區(qū)。但由于實(shí)現(xiàn)上的數(shù)。4.6.5 同步傳送的數(shù)據(jù)順序,主機(jī)器可能無(wú)法支持到理論上的最大傳送同步傳送不支持因總線錯(cuò)誤而進(jìn)行的重傳??梢允欠癜l(fā)生了一個(gè)錯(cuò)誤,低級(jí)的 USB 協(xié)議不有握手信號(hào)給同步通道的者。一般情況下,是可以有握手信號(hào)來(lái)通知者否被地接收。對(duì)于同步傳送來(lái)說(shuō),定時(shí)比正確性和重傳更重要??紤]到總線的錯(cuò)誤率較低,協(xié)議就認(rèn)為傳送一般均能。同步接收者可以是否在一個(gè)幀內(nèi)錯(cuò)過(guò)了一些數(shù)據(jù),而且能知道丟失了多少數(shù)據(jù)。4.10 節(jié)將有關(guān)于此的具體介紹。因?yàn)闆](méi)有用來(lái)指示引起中止的條件的握手信號(hào),所以同步傳送的端點(diǎn)從不途停止。雖然,錯(cuò)誤信息可作為 IRP 的狀態(tài)來(lái)報(bào)告,但同步通道因此停下。錯(cuò)誤即使被查

47、到,主機(jī)仍繼續(xù)處理下一幀的數(shù)據(jù)。因?yàn)橥絺魉偷膮f(xié)議不支持每次事務(wù)都進(jìn)行握手,所以錯(cuò)誤檢測(cè)協(xié)議開(kāi)銷(9 字節(jié))(2 SYNC bytes, 2 PID bytes, 2 Endpoint+CRC bytes,2 CRC bytes, and a 1_byte interpacket delay)數(shù)據(jù)區(qū)最大帶寬字節(jié)/秒Frame 帶寬/傳送最大傳送數(shù)剩余字節(jié)有用字節(jié)字節(jié)/Frame11500001%1500%136427244600001%115546087040001%884704169600002%6009603211520003%362411526412800005%204012801281

48、2800009%101301280256128000018%51751280512102400035%245810241023102300069%14681023Max的功能可以相對(duì)弱一些。4.7 中斷傳送中斷傳送是為這樣一類設(shè)備設(shè)計(jì)的,它們只傳或收少量數(shù)據(jù),而且并不經(jīng)常進(jìn)行傳送, 但它們有一個(gè)確定的服務(wù)周期,對(duì)中斷傳送有以下要求:·通道的最大服務(wù)期得到保證。·由于錯(cuò)誤而引起的重發(fā)在下一服務(wù)期進(jìn)行。4.7.1 中斷傳送的數(shù)據(jù)格式USB 對(duì)中斷通道上的數(shù)據(jù)流格式無(wú)要求。4.7.2 中斷傳送的方向中斷通道是一種流通道,所以是單向的。端點(diǎn)描述信息指明了通道的數(shù)據(jù)流方向。4.7.3

49、 中斷傳送對(duì)包的長(zhǎng)度的限制中斷通道的端點(diǎn)決定能接收和的最大數(shù)據(jù)區(qū)長(zhǎng)度,高速設(shè)備最大不超過(guò) 64字節(jié)(或更少)的數(shù)據(jù)區(qū),而低速設(shè)備只不超過(guò) 8 個(gè)(或更少)字的數(shù)據(jù)區(qū),這個(gè)數(shù)字不包括協(xié)議要求的附加信息。USB 并不需求所有的節(jié)填充。到最大長(zhǎng)度。如果不到的話,不用加字所有的主機(jī)器都要示支持高速設(shè)備的 64 字節(jié)數(shù)據(jù)區(qū)和低速設(shè)備的 8 字節(jié)(或更少)的最大數(shù)據(jù)區(qū),對(duì)超過(guò)最大值的數(shù)據(jù)不要求支持。USB 系統(tǒng)軟件設(shè)置中斷通道的最大數(shù)據(jù)區(qū)長(zhǎng)度。在設(shè)備設(shè)置期間,這一信息將被使用,只有此設(shè)置有效,這個(gè)數(shù)值是改變的。在設(shè)置有效期間,USB 系統(tǒng)軟件根據(jù)此數(shù)值來(lái)看分給這個(gè)通道的總線時(shí)間是否充分。如果充分,則通道建

50、立,否則不建立。與通道不同,USB 系統(tǒng)不為中斷通道調(diào)整總線時(shí)間。所以對(duì)給定的 USB 系統(tǒng),要么支持此通道,要么不支持。實(shí)際傳送的數(shù)據(jù)區(qū)長(zhǎng)度由器決定,可以小于最大長(zhǎng)度。端點(diǎn)所發(fā)的數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度不能超過(guò)端點(diǎn)的 w Max Packet Size 的值。而設(shè)備可以通過(guò)中斷傳送來(lái)傳比此值多的數(shù)據(jù)??蛻糗浖梢酝ㄟ^(guò)中斷傳送的 IRP 來(lái)接收這批數(shù)據(jù),這個(gè)中斷傳送要求多個(gè)總線處理事務(wù)來(lái)完成,且要求每個(gè)事務(wù)后IRP 完成的信號(hào)??梢栽O(shè)置一個(gè)緩沖區(qū),它的長(zhǎng)度為 w Max Packet Size 的整數(shù)倍,再加上一個(gè)零頭。對(duì)需要的多個(gè)總線事務(wù)來(lái)說(shuō),除最后一個(gè)外,前面的事務(wù)都傳遞 w Max Packet

51、Size 長(zhǎng)度的包,后一個(gè)傳剩下的零頭。這些總線處理事務(wù)都在為通道建立的服務(wù)周期內(nèi)進(jìn)行。如果一個(gè)中斷傳送要傳的數(shù)據(jù)不能放在一個(gè)數(shù)據(jù),就分幾個(gè)區(qū),前幾個(gè)是最大長(zhǎng)度,最后一個(gè)包含剩下的長(zhǎng)度。當(dāng)出現(xiàn)以下情況時(shí),認(rèn)為中斷傳送結(jié)束:·已傳的數(shù)據(jù)量恰好與期望的數(shù)據(jù)量同。·傳了一個(gè)有一個(gè)數(shù)據(jù)區(qū)的包,此包的長(zhǎng)度小于 w Max Packet Size 或傳了一個(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。4.7.4 中斷傳送對(duì)總線的限制高速

52、設(shè)備和低速設(shè)備均可使用中斷傳送。USB 要求不能有多于 90%的順時(shí)間用于階段傳送(同步傳送或中斷傳送)。總線頻率和幀的定時(shí)限制了一幀內(nèi)能傳的最大中斷傳送數(shù)。對(duì)任一 USB 系統(tǒng)來(lái)說(shuō),高速單字?jǐn)?shù)據(jù)區(qū)少于 108 個(gè),低速單字節(jié)數(shù)據(jù)區(qū)少于 14 個(gè)。由于實(shí)現(xiàn)上的一定能夠支持此理論上的上限。,主機(jī)器不表 4-4 列出了不同規(guī)格的高速中斷傳送的情況,以及一幀內(nèi)可能的最大傳送數(shù)。表 4-5列的是對(duì)低速設(shè)備的相關(guān)情況。它們均不包括管理開(kāi)銷的字節(jié)。表 4-4 高速中斷傳送限制中斷通道的端點(diǎn)可以指明它要求的總線周期。高速設(shè)備要求的時(shí)間周期可以 1ms 到255ms,而低速設(shè)備從 10ms 到 255ms。在設(shè)置期間,USB 系統(tǒng)軟件根據(jù)它們的要求來(lái)決定一個(gè)服務(wù)周期長(zhǎng)度。USB 提供的服務(wù)周期長(zhǎng)度可能比設(shè)備要求的要短些,但少于最短的1ms??蛻糗浖驮O(shè)備只能夠確定兩次傳送之間的時(shí)間長(zhǎng)度比要求的周期時(shí)間長(zhǎng)。但如果傳送中出現(xiàn)錯(cuò)誤,那么周期時(shí)間必然要越界。當(dāng)客戶軟件有一個(gè)中斷傳送的 IRP 時(shí),端點(diǎn)只是被選中。如果總線輪到此中斷傳送使用時(shí),沒(méi)有 IRP 處于待發(fā)狀態(tài),則端點(diǎn)沒(méi)有機(jī)會(huì)在此時(shí)間傳數(shù)據(jù),一旦一個(gè) IRP 出現(xiàn)了,它的數(shù)據(jù)在下一個(gè)輪到它的時(shí)間時(shí)被發(fā)出。表 4-5 低速中斷傳送限制

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論