1. 程式人生 > >從零開始學USB(二、基礎知識2)

從零開始學USB(二、基礎知識2)

1.USB相關的硬體

USB裝置,從物理上的邏輯結構來說,包含了主機Host端和裝置Device端。

其中,主機Host端,有對應的硬體的USB的主機控制器Host Controller,而裝置端,連線的是對應的USB裝置。

1.1. USB控制器型別:OHCI,UHCI,EHCI,xHCI

由於歷史原因,導致USB的主機控制器,出現了多種不同的型別,即OHCI和UHCI,EHCI,和xHCI。

不論是那種USB主機控制器,簡稱主控,都是符合對應的USB的規範的,都是實現了對應的USB規範中所規定的USB主控所要的那些事情的。只不過是不同的USB主控的型別,有著不同的特點。

下面對這些不同型別的USB主控制器,進行簡要的解釋。

1.1.1. OHCI和UHCI

OHCI,Open Host Controller Interface,創立者是Compaq,Microsoft和National Semiconductor。

UHCI,Universal Host Controller Interface,創立者是Intel。

兩者之間的相同點是:

不論是OHCI還是UHCI都是對應於USB 1.1的標準的,都是完全符合USB協議標準的。

區別在於:

只是各自的實現方式有些略微不同而已。當然對應的具體的效能,也略有差別,具體的差異,和實際的應用有關係。

但是本身OHCI和UHCI的區別在於:

雖然都是實現了USB1.1協議規範,但是在功能劃分上,OHCI更多地把要做的事情,用硬體來實現,因此,實現OHCI的USB控制器的軟體驅動的開發工作,相對要容易些,軟體要做的事情,相對較少。

對應地,OHCI更多地應用在擴充套件卡,尤其是嵌入式領域中,常見的很多開發板中的USB的控制器,很多都是OHCI的。

而UHCI把更多的功能,留給了軟體,相對來說,軟體做的事情,即負擔要重些。但是實現對應的UHCI的硬體的USB控制器,價格上,就相對便宜些。

對應地,UHCI更多地應用在PC機中的主機板上的USB控制器。

1.1.1.1. 為何Intel設計的UHCI把更多的任務都留給軟體實現?

對於兩者的區別和實際的應用,自己分析,不難發現,其是有著內在的邏輯關係的。

因此,作為UHCI的創立者Intel,創立了UHCI,把更多的USB需要做的事情,留給了軟體,這樣就可以實現出相對教便宜的USB的主控制器了,可以用於PC端的CPU所對應的主機板上,便宜的USB主控,當然相對市場來說,更容易多賣出去一點,有利於市場推廣。

PC主機板賣出的多了, 自然對應的Intel的CPU,也會多賣點,Intel自然可以賺更多的錢了。

1.1.1.2. 為何嵌入式系統中的USB主控多用OHCI,而非UHCI?

而對應的Compaq,Microsoft和National Semiconductor所創立的OHCI,由於把更多的USB要做的事情,都用硬體實現了,這樣對應的軟體驅動所要做的事情,就少了,這樣就有利於實現對應的OHCI的USB主控的驅動了,這點對於嵌入式系統來說,尤其重要,因為本身嵌入式系統就是資源有限,所以要儘量少的利用其他資源,比如CPU資源,去實現特點的功能,所以,傾向於採用對軟體資源要求少的OHCI,而不是UHCI,否則用了UHCI的USB主控的話,需要實現對應的驅動,軟體要做的事情太多,不利於在嵌入式系統這有限的資源環境下實現。

1.1.1.3. OHCI和UHCI技術細節上的區別

關於OHCI和UCHI在技術細節方面,更加詳細的區別主要有這些:

  1. 單幀內的stage的個數

    對於控制傳輸來說:

    • OHCI:在單個幀內,可以排程多個stage;
    • UHCI:在單個幀內,只調度一個stage。
  2. 單幀內的transaction的個數

    對於最大資料包大小小於64位元組的Bulk端點來說:

    • OHCI:單個幀內,可能會有多個transaction。
    • UHCI:單個幀內,不超過一個transaction;
  3. 輪詢的頻率
    • OHCI:即使端點描述符中,已經指定了最大延遲是255ms,但是OHCI主控還是會,至少每32ms就去輪詢一次中斷端點
    • UHCI:UHCI主控可以支援,但是不是必須要支援,更低頻率地輪詢

1.1.2. EHCI

EHCI,Enhanced Host Controller Interface。

簡單說就是,EHCI定義了USB 2.0的主機控制器的規範,定義了USB 2.0的主控,需要包括哪些硬體實現,需要實現哪些功能,其也對應著對應的系統軟體,所面對的是哪些介面。

EHCI對USB主控的定義,詳細到了暫存器的級別了,即定義了你USB主控,都要實現哪些對應的功能和對應的暫存器有哪些,分別是何種功能等。然後對應的軟體驅動人員,去寫USB主控的驅動的時候,也就清楚有哪些可以利用的系統資源,如何去使用這些資源,讀取,設定對應的暫存器,實現對應的功能了。

對應的EHCI規範,可以去Intel的官網找到:

EHCI Specification

1.1.3. xHCI

xHCI,Extensible Host Controller Interface

同EHCI是針對USB 2.0類似,xHCI是針對的USB 3.0規範。也是定義了USB 3.0主控需要如何實現,需要包含哪些功能,也是提供了暫存器級別的定義。

對應的xHCI規範,可以去Intel的官網找到:

Extensible Host Controller Interface (xHCI) Specification for USB 3.0

1.1.4. OHCI,UHCI,EHCI,xHCI的區別和聯絡

針對上述的解釋,對USB的不同型別的主機控制器,簡要概括如下:

下表,不同USB控制器型別OHCI,UHCI,EHCI,xHCI的區別和聯絡

USB主機控制器型別 共同點 區別
對應的USB的協議和支援的速率 創立者 功能劃分 常用於
OHCI 都實現了對應的USB的規範中所要求的功能 USB 1.1=Low Speed和Full Speed Compaq,Microsoft和National Semiconductor 硬體功能 > 軟體功能⇒硬體做的事情更多,所以實現對應的軟體驅動的任務,就相對較簡單 擴充套件卡,嵌入式開發板的USB主控
UHCI Intel 軟體功能 > 硬體功能⇒軟體的任務重,可以使用較便宜的硬體的USB控制器 PC端的主機板上的USB主控
EHCI USB 2.0=High Speed Intel 定義了USB 2.0主控中所要實現何種功能,以及如何實現 各種USB 2.0主控
xHCI USB 3.0=Super Speed Intel 定義了USB 3.0主控中所要實現何種功能,以及如何實現 各種USB 3.0主控

1.2. USB介面的引腳定義

USB介面的物理上的對應的引腳和對應含義等,可用下表概括:

下表為 USB 1.x/2.0的引腳定義

引腳 名稱 電纜顏色 描述
1 VBUS Red +5 V,電源
2 D− White Data −,資料線
3 D+ Green Data +,資料線
4 GND Black Ground,接地

注:通常USB1.x/2.0裡面的塑料是黑色或白色的。

 

下表為USB 3.0的引腳定義

Pin Color Signal name('A' connector) Signal name('B' connector)
1 Red VBUS
2 White D−
3 Green D+
4 Black GND
5 Blue StdA_SSRX− StdA_SSTX−
6 Yellow StdA_SSRX+ StdA_SSTX+
7 Shield GND_DRAIN
8 Purple StdA_SSTX− StdA_SSRX−
9 Orange StdA_SSTX+ StdA_SSRX+
Shell Shell Connector metal shell

注:USB3.0是向前相容的,所以多出來的5根線是在裡面母口的裡面,通常塑料硬體是藍色的。

1.3. USB的介面(connector)型別

由於USB的產生就是為了支援眾多種應用的,而由於各種應用中,對於硬體介面的大小也有一些限制,比如有些小型裝置或者移動式裝置中,介面不能太大等,所以而設計出多種型別的介面,用於不同的應用。

在介紹插頭和插座之前,先多解釋一下,基本的叫法。

插頭,plug,對應的也叫公口,即插別人的;

插座,receptacle,對應也叫做母口,即被插的;

對上述解釋,想多了的,面壁去;沒想多的,繼續看技術介紹。

下面就來簡單的介紹一下不同的USB介面型別,即各種不同的插頭插座:

USB的介面型別,根據介面形狀不同,主要可以分為三大類:

  1. 普通的硬體直接叫做Type
  2. 然後有小型版本的叫Mini迷你的
  3. 和更加小的,叫做Micro微小的

其中每一種大類中,又都可以分為兩類

  1. A類(Type A)
  2. B類(Type B)
  3. C類(Type C)

下面就用表格的形式,詳細對比USB的各種介面,包括對應的插頭和插座:

下表USB介面分類

USB介面(插頭)概覽 大的分類 細分 特點 插頭圖片示例 對應的插座 常見用途
Type Type A 長方形
普通PC端
Type B 內部正方近乎形,外部是梯形
USB裝置的介面

Type

C

長方形加兩邊的半圓形 新一代的手機和電腦介面
Mini Mini A 小型版的梯形
數碼相機,行動硬碟等移動裝置
Mini B 小型版的長方形
Micro Micro A 比Mini更扁
手機等移動裝置
Micro B
             

 

[提示] 提示

目前多數手機廠商已宣佈統一使用Micro USB和Type C介面作為手機充電器標準介面。

因為Type C是在2017年初開始使用的,從指定之初就男足USB3.0男足的要求,同時也插入方向也沒有要求,所以目前是大的趨勢。