1. 程式人生 > >從零開始學USB(八、USB的資料流模型)

從零開始學USB(八、USB的資料流模型)

一、實施者觀點

USB在主機和連線的USB裝置之間提供通訊服務。 但是,簡單檢視終端使用者看到將一個或多個USB裝置連線到主機,如圖5-1所示,實際上是一點點實施起來比圖中所示更復雜。 需要系統的不同檢視從不同實施者的角度解釋具體的USB要求。 幾個重要的必須支援概念和功能,以便為終端使用者提供所需的可靠操作今天的個人電腦。 USB以分層的方式呈現,以便於解釋和允許特定USB產品的實施者專注於與其產品相關的細節。

圖5-2顯示了USB的更深入概述,標識了系統的不同層,將在其餘部分中更詳細地描述。特別是,有四個重點實施領域:

  • USB物理裝置:USB電纜末端的一塊硬體,可執行一些有用的終端使用者功能。
  • 客戶端軟體:在主機上執行的軟體,對應於USB裝置。此客戶端軟體通常隨作業系統提供,或與USB裝置一起提供。
  • USB系統軟體:在特定作業系統中支援USB的軟體。 USB系統軟體通常隨作業系統一起提供,獨立於特定的USB裝置或客戶端軟體。
  • USB主機控制器(主機端匯流排介面):允許USB裝置連線到主機的硬體和軟體。

 

四個USB系統元件之間共享權利和責任。本規範的其餘部分描述了支援功能與其客戶端之間穩健,可靠的通訊流所需的詳細資訊。

正如上圖5-2所示,一個主機和一個USB裝置之間的簡單鏈接需要一些分層和實體之間的互動。USB匯流排介面增為主機和裝置提供了物理/信令/分組連線。USB裝置層是USB系統軟體中用於對一個USB裝置執行通常的USB操作的部分。而功能層通過一個適當匹配的客戶軟體層向主機提供一些附加的功能。對於USB裝置和功能層而言,這兩層都有其層間的邏輯通訊,而這種邏輯通訊實際上是通過USB匯流排介面層來完成其資料傳輸的。

 

二、匯流排拓撲

USB拓撲有四個主要部分:

  • 主機和裝置:USB系統的主要元件
  • 物理拓撲:USB元素的連線方式
  • 邏輯拓撲:各種USB元素的角色和職責以及USB的方式從主機和裝置的角度出現
  • 客戶端軟體到功能的關係:USB裝置上的客戶端軟體及其相關功能介面如何相互檢視

2.1 USB主機

主機的邏輯組成如圖5-3所示,包括以下內容:

  • USB主機控制器
  • USB整體系統軟體(USB驅動,主控制器驅動和主機軟體)
  • 客戶端

USB主機是USB中唯一的一個用於協調工作的實體。除了它的特殊物理位置,對於USB和與之相連線的裝置而言,主機還有一些特殊的責任。對USB的訪問都由主機控制,只有當主機允許其訪問時,一個USB裝置才能獲得對匯流排的訪問權。另外,主機還負責監視整個USB的構成情況。

2.2 USB裝置

USB物理裝置的邏輯組成如圖5-4所示,包括以下內容:

  • USB匯流排介面
  • USB邏輯裝置
  • 功能

USB物理裝置為主機提供附加功能。 USB裝置提供的功能型別差異很大。 但是,所有USB邏輯裝置都向主機提供相同的基本介面。 這允許主機以相同的方式管理不同USB裝置的USB相關方面。
為了幫助主機識別和配置USB裝置,每個裝置都攜帶並報告與配置相關的資訊。 報告的一些資訊在所有邏輯裝置中都很常見。 其他資訊特定於裝置提供的功能。 此資訊變數的詳細格式,具體取決於裝置的裝置類。

 

2.3 物理匯流排拓撲
USB上的裝置通過分層星形拓撲物理連線到主機,如圖5-5所示。 USB連線點由稱為集線器的特殊類USB裝置提供。 集線器提供的附加連線點稱為埠。 主機包括稱為根集線器的嵌入式集線器。 主機通過根集線器提供一個或多個附著點。 為主機提供附加功能的USB裝置稱為功能。 為了防止圓形附件,對USB的星形拓撲施加分層排序。 這導致圖5-5中所示的樹狀配置

 

2.4邏輯匯流排拓撲
當裝置在分層星形拓撲中物理連線到USB時,主機與每個邏輯裝置進行通訊,就像它直接連線到根埠一樣。 這將建立圖5-7中所示的邏輯檢視,該檢視對應於圖5-5中所示的物理拓撲。 集線器也是邏輯裝置,但為了簡化圖片,未在圖5-7中顯示。 即使大多數主機/邏輯裝置活動使用此邏輯透檢視,主機仍會保持對物理拓撲的瞭解,以支援處理集線器的刪除。 刪除集線器後,必須從主機的邏輯拓撲檢視中刪除連線到集線器的所有裝置。

 

2.5客戶端軟體與功能的關係
儘管USB的物理和邏輯拓撲反映了匯流排的共享特性,但是操作USB功能介面的客戶端軟體(CSw)被呈現為僅處理其感興趣的介面。 用於USB功能的客戶端軟體必須使用USB軟體程式設計介面來操縱它們的功能,而不是像通過其他匯流排(例如,PCI,EISA,PCMCIA等)通過儲存器或I / O訪問直接操作它們的功能。 在操作期間,客戶端軟體應獨立於可能連線到USB的其他裝置。 這允許裝置和客戶端軟體的設計者專注於硬體/軟體互動設計細節。 圖5-8顯示了器件設計人員對客戶端軟體和USB功能與USB關係的看法圖5-7的邏輯拓撲。
 

三、USB的通訊流

USB為主機的軟體和客戶的軟體USB功能模組之間提供了同行服務。功能模組會對通訊流有不同的要求,需要不同的客戶來實現互相作用。通過允許將不同的USB功能模組的不同通訊流分離開來,USB提供了更好的整體匯流排利用率。每個通訊流否要使用某一匯流排訪問來完成客戶和功能模組之間的通訊,並且終止於裝置上某一個端點。裝置端點用於區別任意的通訊流。

圖5-8對圖5-2進行了詳細的解釋。圖5-2中一個完整的通訊流支援邏輯裝置和功能增之前的通訊流。而這些實際的通訊流要經過若干個介面。

  • 主機控制器驅動程式(HCD):USB主機控制器和USB系統軟體之間的軟體介面。 此介面允許一系列主機控制器實現,而不需要所有主機軟體都依賴於任何特定實現。 一個USB驅動程式可以支援不同的主機控制器,而無需具體瞭解主機控制器實現。主機控制器實現者提供支援主機控制器的HCD實現。
  • USB驅動程式(USBD):USB系統軟體和客戶端軟體之間的介面。 該介面為客戶提供了操作USB裝置的便捷功能。

 

USB邏輯裝置在USB系統中顯示為端點集合。 端點分組為實現介面的端點集。 介面是函式的檢視。 USB系統軟體使用預設控制管道管理裝置。 客戶端軟體使用管道束(與端點集關聯)管理介面。 客戶端軟體請求在主機上的緩衝區和USB裝置上的端點之間通過USB移動資料。 主機控制器(或USB裝置,取決於傳輸方向)將資料打包以將其移動到USB上。 主機控制器還協調何時使用匯流排訪問來通過USB移動資料包。

圖5-10說明了如何通過端點和主機端記憶體緩衝區之間的管道傳輸通訊流。 以下部分更詳細地描述了端點,管道和通訊流。

 

主機上的軟體通過一組通訊流與邏輯裝置通訊。 該組通訊流由裝置軟體/硬體設計者選擇,以有效地將裝置的通訊要求與USB提供的傳輸特性相匹配。