1. 程式人生 > >從零開始學USB(九、USB的資料傳輸型別)

從零開始學USB(九、USB的資料傳輸型別)

一、傳輸型別

USB通過與主機上的客戶端軟體相對應的記憶體儲器區和USB裝置上的端點之間的管道傳輸資料。 訊息管道傳輸的資料以USB定義的結構傳輸,但USB允許特定裝置的結構化資料在USB定義的訊息資料有效負載內傳輸。 USB還定義了對於任何管道(流或訊息),資料經過匯流排時都要進行分組,但最終在匯流排事務的資料有效載荷中傳輸的資料的格式化和解釋是客戶端軟體和功能的責任。 但是,USB提都要供了不同的傳輸型別,這些傳輸型別經過優化,可以更加精確地匹配客戶端軟體的服務要求和使用管道的功能。一個 IRP(I/O Request Packets
)使用一個或多個匯流排事務在軟體客戶端及其功能之間移動資訊。

每種傳輸型別確定通訊流的各種特徵,包括以下內容:

  • USB規定的資料型別
  • 通訊流方向
  • 分組大小限制
  • 匯流排訪問限制
  • 延遲限制
  • 所要求的資料順序
  • 錯誤處理

USB裝置的設計者選擇裝置端點的功能。 當為端點建立管道時,確定管道的大部分傳輸特性並在管道的整個壽命期間保持固定。 針對每種傳輸型別描述了可以修改的傳輸特性。
USB定義了四種傳輸型別:(四種端點型別

  • 控制傳輸:突發,非週期性,主機軟體啟動的請求/響應通訊,通常用於命令/狀態操作。
  • 等時傳輸:主機和裝置之間的定期,連續通訊,通常用於與時間相關的資訊。 此傳輸型別還保留了封裝在資料中的時間概念。 然而,這並不意味著此類資料的交付需求始終是實時的。
  • 中斷傳輸:低頻,有界延遲通訊,資料量小,非週期,主要用於向主機通知裝置的服務請求,它是由裝置發起的通訊。
  • 批量傳輸:非週期性,大資料包突發通訊,通常用於可以使用的資料任何可用頻寬,也可以延遲到頻寬可用。

二、控制傳輸

控制傳輸允許訪問裝置的不同部分。控制轉移旨在支援配置/命令/狀態型別通訊在客戶端軟體及其功能之間流動。一個控制傳輸由主機到功能的設定匯流排事務移動請求資訊組成,零或更多資料事務按安裝事務指示的方向傳送資料,以及狀態事務從功能返回主機的狀態資訊。當端點成功完成處理請求的操作時,狀態事務將返回成功。

每個USB裝置都需要將預設控制管道實現為訊息管道。該管道由USB系統軟體使用。預設控制管道提供對USB裝置的配置,狀態和控制資訊的訪問。一個功能模組可以(但不是必須)為其自身的實現需求提供額外控制管道的端點。

USB裝置框架定義了可用於操縱裝置狀態的標準,裝置類或特定於供應商的請求。還定義了描述符,可用於在裝置上包含不同的資訊。控制傳輸提供訪問裝置描述符的傳輸機制,並使裝置的請求操縱其行為。控制傳輸僅通過訊息管道傳輸。因此,使用控制傳輸的資料流必須遵循USB資料結構定義。

USB系統將“盡最大努力”支援主機和裝置之間的控制傳輸。功能及其客戶端軟體無法請求特定的匯流排訪問頻率或頻寬用於控制傳輸。 USB系統軟體可以限制裝置可能期望用於控制傳輸的匯流排訪問和頻寬。

 

2.1 控制傳輸資料格式

設定資料包具有USB定義的結構,可容納所需的最少命令集啟用主機和裝置之間的通訊。 結構定義允許特定於供應商裝置特定命令的擴充套件。 安裝後的資料事務具有USB定義除了攜帶供應商特定資訊時的結構。 狀態事務還具有USB定義結構體。

2.2控制傳輸方向

通過訊息管道上的雙向通訊流支援控制傳輸。 因此,在配置控制管道時,它使用具有指定端點號的輸入和輸出端點。

2.3特點

等時傳輸的信包容量可以是8、16、32或64位元組,取決於具體的裝置(低速裝置只支援8位元組)。在USB的整個頻寬中,有10%的頻寬是為這種資訊保留的。也就是說,只要有足夠多的控制資訊等著傳輸,就必須有10%的頻寬用於這些資訊,其它資訊再多也不能把這部分頻寬給擠掉。但是如果沒足夠多的控制資訊,則可以把這部分頻寬用於其它型別的資訊。控制型信包的傳遞是帶有檢錯、必須由接收方加以確認的“可靠”傳遞,如果發現傳輸出錯就要重發。

低速裝置的控制傳輸限制

 

 

全速裝置的控制傳輸限制

告訴裝置的控制傳輸限制

 

三、同步傳輸

在非USB環境中,等時傳輸具有恆定速率,錯誤傳輸的一般含義。 在USB環境中,請求等時傳輸型別為請求者提供以下內容:

  • 通過有限的延遲保證對USB頻寬的訪問
  • 只要向管道提供資料,就可以保證通過管道的恆定資料速率
  • 如果由於錯誤導致傳遞失敗,則不會重試傳遞資料的嘗試

雖然USB等時傳輸型別被設計為支援等時源和目的地,但是使用這種傳輸型別的軟體實際上不需要同步以便使用傳輸型別

3.1 等時傳輸資料格式

USB對等時管道的通訊流沒有任何資料內容結構。

3.2等時傳輸方向

等時管道是流管道,因此總是單向的。 端點描述標識給定的同步管道的通訊流是進出主機的。 如果裝置需要雙向等時通訊流,則必須使用兩個同步管,每個方向一個。

3.3特點

也叫等時傳輸。主要用於實時的音訊和視訊訊號。這種資訊是週期性的,有時實時的,對資訊的傳遞是否及時有很高的要求,但是對誤碼卻比較能容忍。所以,保證用於等時型資訊的頻寬是很重要的。USB為等時型資訊和中斷型資訊保留90%的頻寬。另一方面,等時型資訊的傳遞不帶檢錯,也不需要確認,因而就不存在重發的問題。等時型傳輸的資訊包通常比較大,在全速裝置中最大一次可以傳輸可以1023個位元組,告訴裝置一次最大可以發生3027個位元組。

 

全速裝置等時傳輸限制

告訴裝置等時傳輸限制

 

 

四、中斷傳輸

中斷傳輸型別旨在支援那些不經常傳送或接收資料但具有有限服務週期的裝置。 請求具有中斷傳輸型別的管道為請求者提供以下內容:

  • 保證該管道的最長服務時間
  • 在由於匯流排錯誤導致的偶然傳輸失敗的情況下,在下一個週期重試傳輸嘗試

 

4.1中斷傳輸資料格式

USB在中斷管道的通訊流上沒有強加資料內容結構。

4.2中斷傳輸方向

中斷管道是流管道,因此始終是單向的。 端點描述標識給定中斷管道的通訊流是進出主機。USB不支援輸出中斷管道。

4.3特點

名曰“中斷”型,實際上卻是用於對USB裝置的週期性查詢。USB裝置不存在主動向主句傳送“中斷請求”的能力,只能被動的接收主機通過USB匯流排查詢。中斷型資訊的傳遞既有時間要求,又必須是可靠傳輸,但是信包較小。信包大小與控制器信包相同。中斷型資訊和等時型資訊二者合起來不能超過USB匯流排頻寬的90%。

 

低速裝置中斷傳輸限制

 

全速裝置中斷傳輸限制

高度裝置中斷傳輸限制

 

五、批量傳輸

批量傳輸型別旨在支援需​​要在高度可變的時間傳輸相對大量資料的裝置,其中傳輸可以使用任何可用頻寬。請求具有批量傳輸型別的管道為請求者提供以下內容:

  • 在可用頻寬的基礎上訪問USB
  • 如果由於匯流排錯誤導致偶爾交付失敗,則重試轉移
  • 保證資料傳輸,但不保證頻寬或延遲

批量傳輸僅在頻寬可用的基礎上發生。對於具有大量可用頻寬的USB,批量傳輸可能會相對較快地發生;對於可用頻寬較小的USB,批量傳輸可能會在相對較長的時間內流出。

5.1批量傳輸資料格式

USB不會對批量管道的通訊流施加資料內容結構。

5.2批量轉移方向

批量管道是流管道,因此,對於給定的管道,始終具有流入或流出主機的通訊。如果裝置需要雙向批量通訊流,則必須使用兩個批量管道,每個方向一個。

5.3特點

用於資訊量較大,沒有很強的事件要求,但是要求可靠傳輸(帶有檢錯,接收方需確認)的資訊。對批量型資訊的傳遞在時間上是沒有保障的,USB匯流排不為批量資訊保留頻寬,只是在執行了前三種傳輸以後還有時間剩餘才執行批量型傳輸。批量型信包的容量取決於具體的裝置,但最大不超過512位元組,

 

全速裝置批量傳輸限制

高速裝置批量傳輸限制