




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章USB數(shù)據(jù)流模型 本章介紹了數(shù)據(jù)如何在USB中傳送,將涉及到系統(tǒng)中關(guān)于信號的發(fā)送和協(xié)議定義的一層。對于USB系統(tǒng)中這一層中各個定義的詳細(xì)情況可參見第六章和第七章。本章中介紹的數(shù)據(jù)傳送格式,將在第八章到第十一章中逐步擴充。所有的實現(xiàn)者必須閱讀此章,以便了解USB中一些非常核心的概念。4.1 實現(xiàn)者的視圖 USB提供了在一臺主機和若干臺附屬的USB設(shè)備之間的通信功能,從終端用戶的角度看到的USB系統(tǒng),可簡單地用圖4.1表示:USB設(shè)備 USB主機圖41 USB主機/設(shè)備的簡單模型但在實際的實現(xiàn)上,具體的系統(tǒng)要比這復(fù)雜,不同層次的實現(xiàn)者對USB的有不同要求,這使得我們必須從不同的層次觀察USB
2、系統(tǒng)。USB系統(tǒng)提出了一些重要的概念和情況來支持現(xiàn)代個人計算機所提出的可靠性要求,所以USB的分層理解是必須的。它能使不同層次的實現(xiàn)者只關(guān)心USB相關(guān)層次的特性功能細(xì)節(jié),而不必掌握從硬件結(jié)構(gòu)到軟件系統(tǒng)的所有細(xì)節(jié)。USB的這種層次結(jié)構(gòu)如圖4-2所示, 主機 物理設(shè)備 應(yīng)用客戶軟件USB邏輯設(shè)備USB系統(tǒng)軟件USB總線接口USB主機控制器 實際通信流 邏輯通信流 需實現(xiàn)的區(qū)域 圖42 USB需實現(xiàn)的區(qū)域各層次的具體細(xì)節(jié)將在以后逐步介紹。特別地,有四個層次的實現(xiàn)是較為集中的。 ·USB物理設(shè)備(USB Physical Device):USB上的一種硬件,可運行一些用戶程序。 ·
3、客戶軟件(client software):為一個特定的USB設(shè)備而在主機上運行的軟件。這種軟件由USB設(shè)備的提供者提供,或由操作系統(tǒng)提供。 ·USB系統(tǒng)軟件(USB system software):此軟件用于在特定的操作系統(tǒng)中支持USB,它由操作系統(tǒng)提供。與具體的USB設(shè)備無關(guān),也獨立于客戶軟件。 ·USB主機控制器(USB Host Controller):總線在主機方面的接口,是軟件和硬件的總和。用于支持USB設(shè)備通過USB連到主機上。 這四個USB系統(tǒng)的組成部分在功能上存在相互重疊的部分。為了支持主機與客戶之間的堅固可靠的通信,還需要在后面對這些部分進行細(xì)節(jié)性描述
4、。 如圖4-2所示,一臺主機與一個USB設(shè)備間的連接是由許多層上的連接組成。USB總線接口層提供了在主機和設(shè)備之間的物理連接、發(fā)送連接、數(shù)據(jù)包連接。USB設(shè)備層對USB系統(tǒng)軟件是可見的,系統(tǒng)軟件基于它所見的設(shè)備層來完成對設(shè)備的一般的USB操作。應(yīng)用層可以通過與之相配合的客戶軟件向主機提供一些額外的功能。USB設(shè)備層和應(yīng)用層的通信是邏輯上的,對應(yīng)于這些邏輯通信的實際物理通信由USB總線接口層來完成。 關(guān)于USB的物理通信在第5、6章中描述,而相關(guān)的邏輯通信在第8、9章中介紹。本章描述一些核心概念,USB系統(tǒng)的實現(xiàn)者必須先掌握它們,然后在往后幾章中閱讀更加詳細(xì)的部分。 為了描述和管理USB通信,以
5、下概念是很重要的: ·總線拓樸(Bus Topology):USB的基本物理組成、基本邏輯組成,以及各組成部分之間的相互關(guān)系。這將在4.2節(jié)中描述。 ·通信流模型(communication Flow Models):描述主機與設(shè)備如何通過USB通信,以及通信所用的四種通信類型。這將在4.3到4.8的各節(jié)中介紹。 ·總線訪問管理(BUS Access):主機面對大量的USB設(shè)備的各種通信要求,如何控制、協(xié)調(diào)總線的訪問。 ·關(guān)于同步傳送的考慮:4.10節(jié)中將介紹。對要求同步傳送的設(shè)備提供一些特性。非同步傳送設(shè)備的實現(xiàn)者不必閱讀此節(jié)。4.2 總線拓樸 總線拓
6、樸結(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)用層看到的客戶軟件層的情況。4.2.1 USB主機 主機的邏輯結(jié)構(gòu)如圖4-3,包括 ·USB主機控制器(USB Host Controller) ·USB系統(tǒng)軟件集合:USB驅(qū)動程序,主機控制器的驅(qū)動程序,主機軟件
7、3;客戶軟件 主機 客戶軟件USB系統(tǒng)軟件USB主機控制器 實際通信流 邏輯通信流圖43 主機的組成 USB主機在USB系統(tǒng)中是一個起協(xié)調(diào)作用的實體,它不僅占有特殊的物理位置,而且對于USB以及連到USB上的設(shè)備來說,還負(fù)有特殊責(zé)任。主機控制所有的對USB的訪問。一個USB設(shè)備想要訪問總線必須由主機給予它使用權(quán)。主機還負(fù)責(zé)監(jiān)督USB的拓樸結(jié)構(gòu)。 關(guān)于主機和它的任務(wù)的更詳細(xì)、更徹底的描述,請見第9章。4.2.2 USB設(shè)備 一個USB設(shè)備的邏輯結(jié)構(gòu)如圖4.4所示,包括 ·USB總線接口 ·USB邏輯設(shè)備 ·應(yīng)用層 物理設(shè)備 應(yīng)用USB邏輯設(shè)備 USB總線接口實際通信
8、流邏輯通信流圖4-4 物理設(shè)備組成USB設(shè)備用于向主機提供一些額外的功能。USB設(shè)備提供的功能是多種多樣的,但面向主機的接口卻是一致的。所以,對于所有這些設(shè)備,主機可以用同樣的方式來管理它們與USB有關(guān)的部分。 為了幫助主機辨認(rèn)及確定USB設(shè)備,這些設(shè)備本身需要提供用于確認(rèn)的信息。在某一些方面的信息,所有設(shè)備都是一樣的;而另一些方面的信息,由這些設(shè)備具體的功能決定。信息的具體格式是不定的,由設(shè)備所處的設(shè)備級決定。 對USB設(shè)備更完備的描述,見第8章。423 總線的物理拓樸結(jié)構(gòu) USB系統(tǒng)中的設(shè)備與主機的連接方式采用的是星形連接,如圖4-5。主機設(shè)備 設(shè)備根HUB復(fù)合設(shè)備 HUB設(shè)備設(shè)備設(shè)備設(shè)備
9、HUB圖45 USB物理總線的拓?fù)?圖中的Hub是一類特殊的USB設(shè)備,它是一組USB的連接點,主機中有一個被嵌入的Hub叫根Hub(root Hub)。主機通過根Hub提供若干個連接點。為了防止環(huán)狀連接,采用星形連接來體現(xiàn)層次性,如圖4-5。這種連接的形狀很像一棵樹。 用于提供具體功能的設(shè)備叫應(yīng)用設(shè)備。許多不同功能的設(shè)備放在一起被看作一個整體,叫包。例如,鍵盤和軌跡球可以被視作一個整體,在它的內(nèi)部,提供具體功能的設(shè)備被永久地接到Hub上,而這個Hub被接到USB上。所有這些設(shè)備及這個Hub被看作一個復(fù)合設(shè)備,而這個Hub又被看作這個復(fù)合設(shè)備的內(nèi)部Hub。在主機看來,這個復(fù)合設(shè)備和一個帶著若干
10、設(shè)備的單獨Hub是一樣的。圖中也標(biāo)出了一個復(fù)合設(shè)備。4.2.4 總線邏輯拓樸結(jié)構(gòu) 在物理結(jié)構(gòu)上,設(shè)備通過Hub連到主機上。但在邏輯上,主機是直接與各個邏輯設(shè)備通信的,就好像它們是直接被連到主機上一樣。這個邏輯關(guān)系如圖4-6所示。與之對應(yīng)的物理結(jié)構(gòu)就是圖4-5中的結(jié)構(gòu)。Hub也是邏輯設(shè)備,但在圖4-6中,為了簡化起見,未被畫出,雖然USB系統(tǒng)中的工作都是從邏輯角度來看待的,但主機必須對物理結(jié)構(gòu)有個了解。例如,在處理Hub被移去的情況時,當(dāng)一個Hub被移出,通過它與主機相連的設(shè)備也應(yīng)一起被移去,這是由其物理結(jié)構(gòu)決定的。關(guān)于Hub的更詳細(xì)的討論在第10章。 邏輯設(shè)備 主機邏輯設(shè)備邏輯設(shè)備邏輯設(shè)備邏輯
11、設(shè)備圖46 USB邏輯總線的拓?fù)?.2.5 客戶軟件層與應(yīng)用層的關(guān)系 USB系統(tǒng)的物理上、邏輯上的拓樸結(jié)構(gòu)反映了總線的共享性。操縱USB應(yīng)用設(shè)備的客戶軟件只關(guān)心設(shè)備上與它相關(guān)的接口,客戶軟件必須通過USB軟件編程接口來操縱應(yīng)用設(shè)備。這與另一些總線如PCL,ELSA,PCMUA等不同,這些總線是直接訪問內(nèi)存或I/O的。在運行中,客戶軟件必須獨立于USB上的其它設(shè)備。這樣,設(shè)備和客戶軟件的設(shè)計者就可以只關(guān)心該設(shè)備與主機硬件的相互作用和主機軟件的相互作用的細(xì)節(jié)問題。圖4-7說明了在圖4-6的邏輯結(jié)構(gòu)下,一個設(shè)備設(shè)計者看到的客戶軟件與相應(yīng)應(yīng)用的關(guān)系的視圖??蛻糗浖蛻糗浖蛻糗浖?yīng)用應(yīng)用應(yīng)用圖4-7
12、客戶軟件和應(yīng)用間的關(guān)系4.3 USB通信流 USB是為主機軟件和它的USB應(yīng)用設(shè)備間的通信服務(wù)的,對客戶與應(yīng)用間不同的交互,USB設(shè)備對數(shù)據(jù)流有不同的要求。USB為此提供了更好的overall總線使用,它允許各種不同的數(shù)據(jù)流相互獨立地進入一個USB設(shè)備。每種通信流都采取了某種總線訪問方法來完成主機上的軟件與設(shè)備之間的通信。每個通信都在設(shè)備上的某個端點結(jié)束。不同設(shè)備的不同端點用于區(qū)分不同的通信流。 圖4-8是圖4-2的擴充,它更詳盡地描述了USB系統(tǒng),支持了邏輯設(shè)備層和應(yīng)用層間的通信。實際的通信流要經(jīng)過好幾個接口邊界,從第5章到第7章,刻畫了機械上、電氣上以及協(xié)議上的USB接口的定義。第8章刻劃
13、了USB設(shè)備的編程接口。通過此接口,可從主機側(cè)對USB設(shè)備進行控制,第9章介紹了兩個主機側(cè)的通信接口: ·主機控制器的驅(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)來說就是一個端點集合。端點可以
14、根據(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ù)。 主機 連接 物理設(shè)備接口X應(yīng)用接口的集合 Client SW管理一個接口 到一個接 口的通道 束 與接口 無 緩沖 沒有USB 有關(guān) USB格式 格式 端點0USB邏輯設(shè)備端點的集合USB System SW管理設(shè)備 到0號端點的 缺省通道USB設(shè)備(第9章)
15、USB USB幀格式 接口 的數(shù)據(jù) 事務(wù) SIE主機控制器 事務(wù) USB幀格式 每個端 USB幀 SIEUSB總線接口 的數(shù)據(jù) 點的數(shù) 結(jié)構(gòu)的 據(jù) 數(shù)據(jù) USB 主機(第10章) USB線路 機械的,通道:兩個水平實體之間連接 電氣的, 的抽象。 協(xié)議 數(shù)據(jù)傳遞機制 (第6,7,8章) 被傳遞的數(shù)據(jù)的與USB相關(guān)的形式圖4-8 USB主機/設(shè)備的細(xì)節(jié)圖圖4-9說明了數(shù)據(jù)如何在主機側(cè)中的內(nèi)存緩沖和設(shè)備中的端點中傳送。在后面,將逐步介紹端點、通道和通信流。 主機上的軟件通過一系列的通信流與邏輯設(shè)備進行通信。這一系列的通信流是由USB設(shè)備的軟件和硬件設(shè)計者選擇的,使設(shè)備能傳送由USB提供的字符。端點
16、USB邏輯設(shè)備通道客戶軟件主機緩沖區(qū)通信流 界面 圖4-9 USB通信流4.3.1 設(shè)備端點 一個端點是一個可唯一識別的USB設(shè)備的Portion,它是主機與設(shè)備間通信流的一個結(jié)束點。一系列相互獨立的端點在一起構(gòu)成了USB邏輯設(shè)備。每個邏輯設(shè)備有一個唯一的地址,這個地址是在設(shè)備連上主機時,由主機分配的,而設(shè)備中的每個端點在設(shè)備內(nèi)部有唯一的端點號。這個端點號是在設(shè)備設(shè)計時被給定的。每個端點都是一個簡單的連接點,或者支持?jǐn)?shù)據(jù)流進設(shè)備,或者支持其流出設(shè)備,兩者不可得兼。 一個端點的特性決定了它與客戶軟件進行的傳送的類型。一個端點有以下特性: ·端點的總線訪問頻率要求 ·端點的總線
17、延遲要求 ·端點的帶寬要求 ·端點的端點號 ·對錯誤處理的要求 ·端點能接收或發(fā)送的包的最大長度 ·端點的傳送類型(詳見4.4節(jié)) ·端點與主機的數(shù)據(jù)傳送方向 端點號不為0的端點在被設(shè)置前處于未知狀態(tài),是不能被主機訪問的。4.3.1 對0號端點的要求 所有USB設(shè)備都需要實現(xiàn)一個缺省的控制方法。這種方法將端點0作為輸入端點,同時也將端點0作為輸出端點。USB系統(tǒng)用這個缺省方法初始化及一般地使用邏輯設(shè)備(即設(shè)置此設(shè)備)。缺省控制通道(見4.3.2節(jié))支持了對控制的傳送(控制傳送將在4.5中定義),一旦設(shè)備接上,并加電,且又收到一個總線復(fù)
18、位命令,端點0就是可訪問的了。4.3.1.2 對非0號端點的要求 設(shè)備可以有除0以外的其它端點,這取決于這些設(shè)備的實現(xiàn)。低速設(shè)備在0號輸入及輸出端點外,只能有2個額外的可選端點。而高速設(shè)備可具有的額外端點數(shù)僅受限于協(xié)議的定義(協(xié)議中規(guī)定,最多15個額外的輸入端點和最多15個額外的輸出端點)。 除缺省控制通道的缺省端點外,其它端點只有在設(shè)備被設(shè)置后才可使用,對設(shè)備的設(shè)置是設(shè)備設(shè)置過程(見第8章)的一部分。4.3.2 通道 一個USB通道是設(shè)備上的一個端點和主機上軟件之間的聯(lián)系。體現(xiàn)了主機上緩存和端點間傳送數(shù)據(jù)的能力。 有兩不同的且互斥的通道通信格式。 ·流(Stream):指不具有US
19、B定義的格式的數(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ù)凈負(fù)荷區(qū)的長度。數(shù)據(jù)凈負(fù)荷是指在總線處理事務(wù)(transaction)中,數(shù)據(jù)包中數(shù)據(jù)區(qū)的數(shù)據(jù)(總線處理事務(wù)見第7章)。由兩個0號端點組成的通道叫缺省控制通道。一旦設(shè)備加電并復(fù)位后,此通道即可使用。其它通
20、道只在設(shè)備被設(shè)置后才存在。USB系統(tǒng)軟件在決定設(shè)備身份、設(shè)置要求和設(shè)置設(shè)備時使用缺省控制通道。當(dāng)設(shè)備被設(shè)置后,這個設(shè)備的特定軟件還可使用該通道。USB系統(tǒng)軟件保留缺省控制通道的擁有權(quán),協(xié)調(diào)其它客戶軟件對通道的使用。 一個客戶軟件一般都通過I/O請求包(IRP)來要求數(shù)據(jù)傳送。然后,或者等待,或者當(dāng)傳送完成后被通知。IRP的細(xì)節(jié)是由操作系統(tǒng)來指定的??蛻糗浖岢雠c設(shè)備上的端點建立某個方向的數(shù)據(jù)傳送的請求,IRP就可簡單地理解為這個請求。一個客戶軟件可以要求一個通道回送所有的IRP。當(dāng)關(guān)于IRP的總線傳送結(jié)束時,無論它是成功地完成,還是出現(xiàn)錯誤,客戶軟件都將獲得通知說IRP完成了。 如果通道上沒有
21、正在傳送的數(shù)據(jù),也沒有數(shù)據(jù)想使用此通道,這個通道就處于閑置狀態(tài)。主機控制器對它不采取任何動作,也就是說,這個通道的端點會發(fā)現(xiàn)沒有任何的總線動作是沖它而來的。只有當(dāng)有數(shù)據(jù)在通道上時,該通道才能發(fā)現(xiàn)總線對它的動作。 如果一個非同步通道遇到一個迫使它給主機發(fā)STALL的情況(參見第7章),或者在任一個IRP中發(fā)現(xiàn)3個總線錯誤。這個IRP將被中止。其它所有突出的IRP也一同被中止。通道不再接收任何IRP,直到客戶軟件從這個情況中恢復(fù)過來(恢復(fù)的方式取決于軟件的實現(xiàn)),而且承認(rèn)這個中止或出現(xiàn)的錯誤,并發(fā)一個USBD Call來表明它已承認(rèn)。一個合適的狀態(tài)信息將通知客戶軟件IRP的結(jié)果出錯或中止。同步通道
22、的運作在4.6中介紹。 一個IRP可能會需要多個數(shù)據(jù)凈荷區(qū)來傳遞數(shù)據(jù)。這些數(shù)據(jù)區(qū)除最后一個外,都具有數(shù)據(jù)凈荷區(qū)的最大長度,最后一個數(shù)據(jù)區(qū)包含了這個IRP中剩下的數(shù)據(jù)。(可參見關(guān)于傳送類型的介紹,以獲得更詳細(xì)的了解)。對這樣的一個IRP,短包(也就是說未達到最大長度的數(shù)據(jù)區(qū))在數(shù)據(jù)輸入時無法填完IRP數(shù)據(jù)緩沖區(qū)。這可能會有二種不同解釋,它依賴于客戶軟件的情況: ·如果該客戶軟件可以接受變長的IRP,那么,IRP數(shù)據(jù)緩沖區(qū)未被填滿,可以看作一個分限,說明一個IRP已成功結(jié)束,主機控制器可以準(zhǔn)備接收下一個IRP了。 ·如果該客戶軟件只收定長的IRP。那么,我們認(rèn)為發(fā)生了一個錯誤,
23、這IRP將被中止,通道也會被阻塞,通道上的數(shù)據(jù)都中止。 因為對這兩種情況,主機控制器會有不同的反應(yīng),而且采取何種措施不由控制器決定,所以對每個IRP都必須說明客戶軟件的具體要求。 通道的端點可以用NAK信號來通知主機自己正忙,NAK不能作為向主機反還IRP的中止條件。在一個給定的IRP處理過程中,可以遇到任意多個NAK,NAK不構(gòu)成錯誤。4.3.2.1 流通道 流通道中的數(shù)據(jù)是流的形式,也就是該數(shù)據(jù)的內(nèi)容不具有USB要求的結(jié)構(gòu)。數(shù)據(jù)從流通道一端流進的順序與它們從流通道另一端流出時的順序是一樣的,流通道中的通信流總是單方向的。 對于在流通道中傳送的數(shù)據(jù),USB認(rèn)為它來自同一個客戶。USB系統(tǒng)軟件
24、不能夠提供使用同一流通道的多個客戶的同步控制。在流通道中傳送的數(shù)據(jù)遵循先進先出原則。 流管流只能連到一個固定號碼的端點上,或者流進,或者流出。(這個號碼是由協(xié)議層決定的)。而具有這個號碼的另一個方向的端點可以被分配給其它流通道。 流通道支持同步傳送,中斷傳送和批傳送,這些在稍后的章節(jié)會進一步解釋。4.3.2.2 消息通道 消息通道與端點的關(guān)系同流通道與端點的關(guān)系是不同的。首先,主機向USB設(shè)備發(fā)出一個請求;接著,就是數(shù)據(jù)的傳送;最后,是一個狀態(tài)階段。為了能夠容納請求/數(shù)據(jù)/狀態(tài)的變化,消息通道要求數(shù)據(jù)有一個格式,此格式保證了命令能夠被可靠地傳送和確認(rèn)。消息通道允許雙方向的信息流,雖然大多數(shù)的通
25、信流是單方向的。特別地,缺省控制通道也是一個消息通道。 USB系統(tǒng)軟件不會讓多個請求同時要求同一個消息通道。一個設(shè)備的每個消息通道在一個時間段內(nèi),只能為一個消息請求服務(wù),多個客戶軟件可以通過缺省控制通道發(fā)出它們的請求,但這些請求到達設(shè)備的次序是按先進先出的原則的。設(shè)備可以在數(shù)據(jù)傳送階段和狀態(tài)階段控制信息流,這取決于這些設(shè)備與主機交互的能力(參見第7章)。正常情況下,在上一個消息未被處理完之前,是不能向消息通道發(fā)下一個消息的。但在有錯誤發(fā)生的情況下,主機會取消這次消息傳送,并且不等設(shè)備將已收的數(shù)據(jù)處理完,就開始下一次的消息傳送。在操作通道的軟件看來,一個IRP中的錯誤,使這個IRP被取消,并且所
26、有正排隊等待的IRP一同也被取消。申請這個IRP的客戶被通知IRP結(jié)束,且有出錯提示。 消息通道后有兩個相同號碼的端點,一個用于輸入,一個用于輸出。兩個號碼必須相同。 消息通道支持控制傳送,這將在4.5中進行介紹。4.4 傳送類型 USB通過通道在主機緩沖區(qū)與設(shè)備端點間傳送數(shù)據(jù)。在消息通道中傳遞的數(shù)據(jù)具有USB定義的格式,它的數(shù)據(jù)凈荷區(qū)中包含的數(shù)據(jù)允許具有設(shè)備指定的格式。USB要求任何在通道上傳送的數(shù)據(jù)均被打包,數(shù)據(jù)的解釋工作由客戶軟件和應(yīng)用層軟件負(fù)責(zé)。USB提供了多種數(shù)據(jù)格式,使之盡可能滿足客戶軟件和應(yīng)用軟件的要求。一個IRP需要一個或多個總線處理事務(wù)來完成。 每個傳送類型在以下的幾個傳送特
27、征上會有不同: ·USB規(guī)定的數(shù)據(jù)格式 ·信息流的方向 ·數(shù)據(jù)凈荷區(qū)的長度限制 ·總線訪問的限制 ·延時的限制 ·出錯處理 USB設(shè)備的設(shè)計者可以決定設(shè)備上每個端點的能力。一旦為這個端點建立了一個通道,這個通道的絕大多數(shù)傳送特征也就固定下來了,一直到這個通道被取消為止。也有部分傳送特征可以改變,對這樣的特征,將會在介紹每個傳送類型時作出說明。 USB定義了4種傳送類型: ·控制傳送:可靠的、非周期性的、由主機軟件發(fā)起的請求或者回應(yīng)的傳送,通常用于命令事務(wù)和狀態(tài)事務(wù)。 ·同步傳送:在主機與設(shè)備之間的周期性的、連續(xù)的通
28、信,一般用于傳送與時間相關(guān)的信息。這種類型保留了將時間概念包含于數(shù)據(jù)中的能力。但這并不意味著,傳送這樣數(shù)據(jù)的時間總是很重要的,即傳送并不一定很緊急。 ·中斷傳送:小規(guī)模數(shù)據(jù)的、低速的、固定延遲的傳送。 ·批傳送:非周期性的,大包的可靠的傳送。典型地用于傳送那些可以利用任何帶寬的數(shù)據(jù),而且這些數(shù)據(jù)當(dāng)沒有可用帶寬時,可以容忍等待。 這些傳送類型將在后面的四個大節(jié)中進行討論。IRP的數(shù)據(jù)均放在數(shù)據(jù)包中的數(shù)據(jù)區(qū)被傳送,這將在7.4.3中介紹。關(guān)于與具體傳送類型有關(guān)的一些協(xié)議細(xì)節(jié)在第7章中介紹。4.5 控制傳送 控制傳送允許訪問一個設(shè)備的不同部分??刂苽魉陀糜谥С衷诳蛻糗浖退膽?yīng)用
29、之間的關(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è)備傳到主機。當(dāng)端點成功地完成了被要求的操作時,回傳的狀態(tài)信息為“success”。7.2中將介紹控制傳送的細(xì)節(jié),例如,什么樣的包,什么樣的總線事務(wù)和總線事務(wù)的順序。而第8章將介紹USB定義的USB命令字。 USB設(shè)備必須實現(xiàn)缺省控制通道,并將它實現(xiàn)成一個消息通道。這個通道由USB系統(tǒng)軟件使用。USB設(shè)備的確認(rèn)信息、狀態(tài)信息以及控制信息由該通道傳送。如果需要的話,一個應(yīng)用
30、設(shè)備可以為端點實現(xiàn)額外的控制通道。 USB設(shè)備框架(見第8章)定義了標(biāo)準(zhǔn)的,設(shè)備級的或由銷售商提供的請求,這些請求可操作設(shè)備的狀態(tài)。USB設(shè)備框架又定義了一些描述器(descriptor),用于存放USB設(shè)備的各種信息??刂茩C制提供訪問設(shè)備描述器和請求操作設(shè)備的機制。 控制傳送只能通過消息通道進行。所以,使用控制傳送的數(shù)據(jù)必須具有USB定義的數(shù)據(jù)格式(見4.5.1節(jié))。 應(yīng)用層和相應(yīng)的客戶軟件不能為控制傳送指定總線訪問頻率和帶寬。這由USB系統(tǒng)軟件從全局優(yōu)化角度加以決定。USB系統(tǒng)軟件會限制設(shè)備要求的訪問頻率和帶寬,這些限制在4.5.3和4.5.4中介紹。4.5.1 控制傳送類型的數(shù)據(jù)格式 S
31、etup包的數(shù)據(jù)格式屬于一個命令集,這個集合能保證主機和設(shè)備之間正常通信。這個格式也允許一些銷售商對設(shè)備命令的擴展。Setup包后的數(shù)據(jù)傳送也具有USB定義的格式,除非這個數(shù)據(jù)是銷售商提供的信息?;貍鞯臓顟B(tài)信息仍然具有USB定義的格式。7.5.8節(jié)和第8章將介紹控制傳送的Setup定義和數(shù)據(jù)定義。4.5.2 控制傳送的方向 控制傳送使用的是消息通道上的雙向信息流。所以,一旦一個控制通道被確認(rèn)之后,這個通道就使用了具有某個端點號的兩個端點,一個輸入,一個輸出。4.5.3 控制傳送包的大小的限制 控制傳送的端點決定了它所能接收或發(fā)送的最大數(shù)據(jù)凈負(fù)荷區(qū)長度。USB為高速設(shè)備定義的最大數(shù)據(jù)凈負(fù)荷區(qū)長度
32、為8、16、32或64字節(jié),低速設(shè)備的數(shù)據(jù)凈負(fù)荷區(qū)的長度只能是8字節(jié)。Setup后的所有數(shù)據(jù)包都要遵守這個規(guī)定,這個規(guī)定是針對這些數(shù)據(jù)包中的數(shù)據(jù)凈負(fù)荷區(qū)的,不包括包中的協(xié)議要求的額外信息,Setup包實際上也是8字節(jié)??刂仆ǖ?包括缺省控制通道)總是使用w Max Packet Size的值。 端點在自己的設(shè)置信息中報告自己允許的最大凈負(fù)荷區(qū)長度。USB不要求數(shù)據(jù)凈負(fù)荷區(qū)必須達到最大長度,當(dāng)長度不夠時,不必填充到最大長度。 主機控制器對高速設(shè)備的控制通道端點支持8、16、32、64字節(jié)的最大長度,對低速設(shè)備支持8字節(jié)的長度。它不能支持更大的或更小的其它長度。 對于缺省控制通道的最大數(shù)據(jù)區(qū)長度,
33、USB系統(tǒng)軟件要從設(shè)備描述器的頭8個字節(jié)中讀出,設(shè)備將這8個字節(jié)放在一個包中發(fā)出,其中的七個字包含了缺省通道的wMaxPacketSize。對其它的控制端點來說,USB系統(tǒng)軟件在它們被設(shè)置后,獲得此長度,然后USB系統(tǒng)軟件就會保證數(shù)據(jù)凈負(fù)荷區(qū)不會超長。另外,主機總是認(rèn)為數(shù)據(jù)凈負(fù)荷區(qū)的最大長度至少為8。 端點所傳的數(shù)據(jù)凈負(fù)荷區(qū)長度必須小于或等于其wMaxPacketSize(參見第8章),當(dāng)一個數(shù)據(jù)區(qū)不能容納所傳數(shù)據(jù)時,就分幾個區(qū)來傳。除最后一個區(qū)外,其它區(qū)都應(yīng)達到最大長度。最后一區(qū)包含最后剩下的數(shù)據(jù)。 當(dāng)端點做了以下兩件事時,控制傳送的數(shù)據(jù)階段可被認(rèn)為結(jié)束: ·已傳了由Setup階段
34、指定的數(shù)據(jù)量。 ·傳了一個數(shù)據(jù)包,它的長度為0或它的數(shù)據(jù)區(qū)長度小于最大長度。 數(shù)據(jù)階段結(jié)束后,主機控制器進入狀態(tài)階段,而不是開始另一個數(shù)據(jù)傳誦。如果它不這樣做,端點會認(rèn)為通道脫線而中止通道(通道脫線見4.3.2)。如果主機在狀態(tài)階段時,主機收到一個大于最大長度的數(shù)據(jù)區(qū),那么請求這次傳送的IRP將被中止。 當(dāng)數(shù)據(jù)全部傳完,主機與端點之間的控制傳送的數(shù)據(jù)階段結(jié)束。如果其間,端點收到了超過最大長度的數(shù)據(jù)區(qū),它將中止通道。4.5.4 控制傳送的總線訪問的限制 無論低速設(shè)備還是高速設(shè)備都可以使用控制通道。 端點沒法指明控制通道對總線訪問頻率的要求。USB權(quán)衡所有控制通道的總線訪問頻率和正等待的
35、IRP,從全局優(yōu)化,提供一個“最佳”傳送方案。 USB要求數(shù)據(jù)幀中的一部分被留給控制傳送使用。 ·如果被引發(fā)的控制傳送(引發(fā)方式由實現(xiàn)決定)只用了數(shù)據(jù)幀的不到10%的時間,則剩余的時間留給批傳送(參見4.8節(jié))。 ·如果一個控制傳送被引發(fā)又被中止,則它的中止可在本次的幀內(nèi),也可在以后的幀內(nèi)。也就是說,引發(fā)和中止不必在同一個幀內(nèi)。 ·如果留給控制傳送的時間不夠用,但恰好有一些同步和中斷傳送的幀時間未用,則主機控制器利用這些時間進行額外的控制傳送。 ·如果對可用的幀時間有太多的控制傳送在等待,那么就對它們進行排序然后傳送。 ·如果各個控制傳送申請的
36、是不同的端點,主機控制器根據(jù)公平訪問原則決定它們的訪問順序。公平訪問原則的具體內(nèi)容決定于主機控制器的實現(xiàn)。 ·如果一個控制傳送事務(wù)頻繁地被中止,不能認(rèn)為給它的總線訪問時間是不公平的。 這些要求使得控制傳送一般可以在總線上進行規(guī)則地、最優(yōu)化地傳送。 對某個端點的控制傳送的速率是可以變化的,USB系統(tǒng)軟件控制這些離散的變化。端點和其客戶軟件不能想當(dāng)然的認(rèn)為其有一個固定的傳送速率,端點可能發(fā)現(xiàn)在一幀內(nèi)有零個或若干個傳送。一個端點和它相應(yīng)的客戶軟件可占用的總線時間會因為其它設(shè)備進入或退出系統(tǒng)或者本設(shè)備上的其它端點進入或退出系統(tǒng)而改變。 總線頻率和幀定時決定于一個幀內(nèi)可傳送的控制傳送的最大個數(shù)
37、。在任一個USB系統(tǒng)內(nèi),一個幀內(nèi)的8字節(jié)高速數(shù)據(jù)區(qū)須少于29個,8字節(jié)低速數(shù)據(jù)區(qū)須少于4個。表4-1是關(guān)于不同規(guī)格的高速的控制傳送的情況,以及在一幀內(nèi)可能的最大的傳送數(shù)目。這張表有兩個默認(rèn)的前提,即控制傳送有一個數(shù)據(jù)傳送階段而且這個數(shù)據(jù)傳送階段有一個長度為0狀態(tài)階段,表4-1還指出了出現(xiàn)兩個數(shù)據(jù)區(qū)都達不到最大長度的情況,表中不包括用于管理的一些額外的位。 表4-1 高速控制傳送限制協(xié)議開銷(46字節(jié))(9 SYNC bytes, 9 PID bytes, 6 Endpoint+CRC bytes,6 CRC bytes, 8 Setup data bytes, and a 7_byte int
38、erpacker delay(EOP, etc.)數(shù)據(jù)凈荷區(qū)最大帶寬(字節(jié)/秒)Frame帶寬/傳送最大傳送數(shù)剩余字節(jié)有用數(shù)據(jù)字節(jié)/Frame 1320003%3223322620003%31436241200003%303012082240004%2816224163840004%2436384326080005%1937608648320007%1383832Ma因為一個幀內(nèi)只留10%的時間給非周期性傳送,所以當(dāng)一個系統(tǒng)的總線時間被排滿的時候,這個系統(tǒng)內(nèi)的所有控制傳送只能去競爭每個幀內(nèi)的三個控制傳送名額。因為除了客戶軟件會要求控制傳送外,USB系統(tǒng)要用控制傳送來傳
39、送設(shè)置信息,所以對某個客戶和它的應(yīng)用就不能指望它們的控制傳送像它們想的一樣進行。主機控制器可以自由地決定如何將某個具體的控制傳送在總線上進行,可以在一個幀內(nèi),也可以跨幾個幀。一個端點可能發(fā)現(xiàn)一個控制傳送的各個總線處理事務(wù)在同一幀內(nèi)或分在幾個不連續(xù)的幀內(nèi)。由于具體實現(xiàn)的不同,主機控制器可能不能提供理論上的每幀的最大控制傳送數(shù)目。 低速控制傳送與高速控制傳送都是競爭同樣多的可用幀時間。低速控制傳送只是要用更多的時間來傳送罷了。表4-2列出了不同規(guī)格的低速包的情況,以及一幀內(nèi)允許的最大包數(shù)。這張表同樣沒包括進管理用的開銷。無論低速與高速,由于一個控制傳送都由幾個包組成,所以都可能要用幾個幀才能完成傳
40、送。表4-2低速控制傳送限制協(xié)議開銷(46字節(jié))數(shù)據(jù)凈荷區(qū)最大帶寬字節(jié)/FrameFrame帶寬/傳送最大傳送數(shù)剩余字節(jié)有用數(shù)據(jù)字節(jié)/Frame 1 3000 25% 3463 2600026% 3436 41200027% 33712 82400029% 32524Max1875001874.5.5 控制傳送的數(shù)據(jù)順序 要進行控制傳送,先要由主機向設(shè)備發(fā)一個總線建立(Setup)信息。它描述了控制訪問的類型,設(shè)備將執(zhí)行此控制訪問。這個階段之后,是零個或多個控制數(shù)據(jù)信息的傳送,這是進行訪問的具體信息。最后,由狀態(tài)信息的傳送來結(jié)束這次控制傳送,允許端點將這次控傳的狀態(tài)回送給客戶軟件。這次控傳完成
41、之后,可以進行對這個端點的下一個控傳,如4.5.4節(jié)所述,每次控傳何時在總線上進行由主機控制器的具體實現(xiàn)決定。 在數(shù)據(jù)傳送階段和狀態(tài)信息回傳階段,可能由于設(shè)備自身的原因,設(shè)備處于“忙”狀態(tài)。此時端點可設(shè)法表明自己正忙(見第7、8章),主機將試著在稍后時間重傳一次。 如果在上一個控傳結(jié)束之前,端點又收到一個總線建立信息,設(shè)備將結(jié)束現(xiàn)未完成的傳送,轉(zhuǎn)而處理新的控傳。正常情況下,是不會早發(fā)總線建立信息的,不過當(dāng)上一個控傳因錯誤而被中止后,主機可發(fā)下一個控傳的總線建立信息。在端點看來,這是在上一個控傳結(jié)束前過早發(fā)出的。 一旦主機遇到一個引起中止的條件或檢測到一個錯誤,端點可以通過接收下一個Setup包
42、的 PID來恢復(fù),也就是說,不一定必須從別的通道進行恢復(fù)。對于缺省控制通道,如果端點收不到Setup的 PID時,最終會要求設(shè)備復(fù)位來清除中止條件或錯誤條件。 在控傳中,USB提供了強大的錯誤檢測功能和錯誤恢復(fù)和重傳功能。傳送器和接收器可以保持階段的同步,既關(guān)于他們在控傳的哪個階段這個問題上保持同步。并且以最小的代價恢復(fù)。接收器可以識別一個數(shù)據(jù)重傳包或狀態(tài)信息重傳包,因為包中帶有數(shù)據(jù)重傳的指示。一個發(fā)送器可以通過對方給它發(fā)的握手信息確知它發(fā)的數(shù)據(jù)重送包和狀態(tài)信息包已被成功接收,除了Setup包以外,協(xié)議可以將一個重送的包與原來的包區(qū)分開來,Setup包可以因為出錯而重傳,但無法說明此包是重傳的
43、,還是原來的。4.6 同步傳送 在非USB的環(huán)境下,同步傳送意味著恒定速率、錯誤容忍(error-tolerant)的傳送。在USB環(huán)境下,要求同步傳送能提供以下幾點: ·固定的延遲下,確保對USB帶寬的訪問。 ·只要數(shù)據(jù)能提供得上,就能保證通道上的恒定數(shù)據(jù)傳送速度。 ·如果由于錯誤而造成傳送失敗,并不重傳數(shù)據(jù)。 當(dāng)USB同步傳送類型被用來支持同步的源和目的時,使用這個傳送類型的軟件并不要求是同步的,4.10中將詳細(xì)介紹USB上的同步數(shù)據(jù)的處理。4.6.1 同步傳送的數(shù)據(jù)格式 對于同步傳送的通道(同步通道),USB并不對數(shù)據(jù)格式做要求。4.6.2 同步傳送的方向
44、同步通道是一種流通道,所以是單方向的。在對端點的描述中指明了與它相連的通道的數(shù)據(jù)流方向。如果設(shè)備要同步的雙向流的話,只好用兩個同步通道,一個流進,一個流出。4.6.3 同步傳送中包的大小的限制 同步通道的端點確定了數(shù)據(jù)區(qū)的最大長度,USB在設(shè)置端點期間,使用這一個信息,看是否可在每幀內(nèi)為最大長度的數(shù)據(jù)區(qū)留下足夠的時間。如果可以,設(shè)置端點成功;否則,不成功。 USB系統(tǒng)軟件可為一個控制傳送的通道調(diào)整最大數(shù)據(jù)區(qū)長度,但無法為同步通道進行如此調(diào)整。在確定的USB設(shè)置下,同步通道要么被支持,要么不被支持。 USB限制了同步通道的最大數(shù)據(jù)區(qū)長度為1023字節(jié),表4-3列出了不同規(guī)格的同步傳送,以及一幀內(nèi)
45、可能的最大傳送數(shù)。表中未包括管理開銷的字節(jié)。 表4-3同步傳送限制協(xié)議開銷(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%150015022720001%136427244600001%115546087040001%884704169600002%6009603211520003%362411526412800005%204012801281
46、2800009%101301280256128000018%51751280512102400035%245810241023102300069%14681023Ma不是每一次的數(shù)據(jù)區(qū)都要達到最大長度。數(shù)據(jù)區(qū)的長度由發(fā)送者(客戶軟件或應(yīng)用軟件)決定,每次可以不同。USB可保證主機控制器看到的包有多長,在總線上傳的包就有多長。數(shù)據(jù)的實際長度由發(fā)送者決定,可以小于早先協(xié)商好的最大長度??偩€錯誤可以使接收者看到的長度比實際長度有了變化。但這些錯誤可被檢測到。具體地講,或者通過數(shù)據(jù)上的CRC碼,或者讓接收者預(yù)先知道實際應(yīng)該的長度,以此進行檢測。4.6.4 同步傳送的總線方向限
47、制 只有高速設(shè)備可以使用同步方式。 USB設(shè)備要求一個幀內(nèi)不能有超過90%的時間用于周期性傳送(同步傳送或中斷傳送)。 同步通道的端點描述自己的總線訪問頻率。所有的同步通道一般在一幀內(nèi)傳一個包(也就是說,1ms一個包)。但總線上的錯誤或者操作系統(tǒng)對客戶軟件調(diào)度上的延遲會造成一個幀內(nèi)一個包也沒有的情況。此時,設(shè)備將一個錯誤指示信息作為狀態(tài)信息返回給客戶軟件。設(shè)備可以通過跟蹤SOF(幀開始)信號來測到此類錯誤。如果兩個SOF信號間無數(shù)據(jù)包,則出錯。 總線頻率和幀定時限制了一個幀內(nèi)的同步傳送的上限,在任何USB系統(tǒng)內(nèi),最多有150個單字節(jié)的數(shù)據(jù)區(qū)。但由于實現(xiàn)上的原因,主機控制器可能無法支持到理論上的
48、最大傳送數(shù)。4.6.5 同步傳送的數(shù)據(jù)順序 同步傳送不支持因總線錯誤而進行的重傳。接收器可以判斷是否發(fā)生了一個錯誤,低級的USB協(xié)議不允許有握手信號給同步通道的發(fā)送者。一般情況下,是可以有握手信號來通知發(fā)送者包是否被成功地接收。對于同步傳送來說,定時比正確性和重傳更重要??紤]到總線的錯誤率較低,協(xié)議就認(rèn)為傳送一般均能成功。同步接收者可以判斷自己是否在一個幀內(nèi)錯過了一些數(shù)據(jù),而且能知道丟失了多少數(shù)據(jù)。4.10節(jié)將有關(guān)于此的具體介紹。 因為沒有用來指示引起中止的條件的握手信號,所以同步傳送的端點從不途停止。雖然,錯誤信息可作為IRP的狀態(tài)來報告,但同步通道不會因此停下。錯誤即使被查到,主機仍繼續(xù)處
49、理下一幀的數(shù)據(jù)。因為同步傳送的協(xié)議不支持每次事務(wù)都進行握手,所以錯誤檢測的功能可以相對弱一些。4.7 中斷傳送 中斷傳送是為這樣一類設(shè)備設(shè)計的,它們只傳或收少量數(shù)據(jù),而且并不經(jīng)常進行傳送,但它們有一個確定的服務(wù)周期,對中斷傳送有以下要求: ·通道的最大服務(wù)期得到保證。 ·由于錯誤而引起的重發(fā)在下一服務(wù)期進行。4.7.1 中斷傳送的數(shù)據(jù)格式 USB對中斷通道上的數(shù)據(jù)流格式無要求。4.7.2 中斷傳送的方向中斷通道是一種流通道,所以是單向的。端點描述信息指明了通道的數(shù)據(jù)流方向。4.7.3 中斷傳送對包的長度的限制 中斷通道的端點決定自己能接收和發(fā)送的最大數(shù)據(jù)區(qū)長度,高速設(shè)備允許
50、最大不超過64字節(jié)(或更少)的數(shù)據(jù)區(qū),而低速設(shè)備只允許不超過8個(或更少)字的數(shù)據(jù)區(qū),這個數(shù)字不包括協(xié)議要求的附加信息。USB并不需求所有的包都到最大長度。如果不到的話,不用加字節(jié)填充。 所有的主機控制器都要示支持高速設(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)整總線時間。所以對
51、給定的USB系統(tǒng),要么支持此通道,要么不支持。實際傳送的數(shù)據(jù)區(qū)長度由發(fā)送器決定,可以小于最大長度。 端點所發(fā)的數(shù)據(jù)區(qū)中的數(shù)據(jù)長度不能超過端點的w Max Packet Size的值。而設(shè)備可以通過中斷傳送來傳比此值多的數(shù)據(jù)??蛻糗浖梢酝ㄟ^中斷傳送的IRP來接收這批數(shù)據(jù),這個中斷傳送要求多個總線處理事務(wù)來完成,且要求每個事務(wù)后都有IRP完成的信號??梢栽O(shè)置一個緩沖區(qū),它的長度為w Max Packet Size的整數(shù)倍,再加上一個零頭。對需要的多個總線事務(wù)來說,除最后一個外,前面的事務(wù)都傳遞w Max Packet Size長度的包,后一個傳剩下的零頭。這些總線處理事務(wù)都在為通道建立的服務(wù)周期內(nèi)進行。 如果一個中斷傳送要傳的數(shù)據(jù)不能放在一個數(shù)據(jù)區(qū)中,就分幾個區(qū),前幾個區(qū)都是最大長度,最后一個包含剩下的長度。當(dāng)出現(xiàn)以下情況時,認(rèn)為中斷傳送結(jié)束: ·已傳的數(shù)據(jù)量恰好與期望的數(shù)據(jù)量同。 ·傳了一個有一個數(shù)據(jù)區(qū)的包,此包的長度小于w Max Packet Size或傳了一個長度為零的包。 如果一個中斷傳送完成,那么主機控制器結(jié)束當(dāng)前的IRP
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年飛機維修船塢項目規(guī)劃申請報告
- 手動訓(xùn)練師面試題及答案
- 武漢理化試題及答案
- gmp考試題及答案
- 動物免疫考試題及答案
- 社會職工面試題及答案
- 中軟國際外包java面試題及答案
- redisjava高頻面試題及答案
- 員工培訓(xùn)需求調(diào)查分析
- 2025高中數(shù)學(xué)新教材培訓(xùn)
- GB/T 13077-2024鋁合金無縫氣瓶定期檢驗與評定
- SY-T 6966-2023 輸油氣管道工程安全儀表系統(tǒng)設(shè)計規(guī)范
- 身份證知識課件
- GB/T 43780-2024制造裝備智能化通用技術(shù)要求
- 實驗10乙醇乙酸的主要性質(zhì)
- 醫(yī)療環(huán)境表面清潔與消毒課件
- 人力資源培訓(xùn) -HR成長技能地圖
- 《注塑模具結(jié)構(gòu)介紹》課件
- 《roE實體特征》課件
- 旅游服務(wù)禮儀 課件 7交談的語言表達技巧
- 室外健身器材投標(biāo)方案(技術(shù)標(biāo))
評論
0/150
提交評論