從零開始學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主控的話,需要實現對應的驅動,軟體要做的事情太多,不利於在嵌入式系統這有限的資源環境下實現。
關於OHCI和UCHI在技術細節方面,更加詳細的區別主要有這些:
- 單幀內的stage的個數
對於控制傳輸來說:
- OHCI:在單個幀內,可以排程多個stage;
- UHCI:在單個幀內,只調度一個stage。
- 單幀內的transaction的個數
對於最大資料包大小小於64位元組的Bulk端點來說:
- OHCI:單個幀內,可能會有多個transaction。
- UHCI:單個幀內,不超過一個transaction;
- 輪詢的頻率
- 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的官網找到:
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的介面型別,根據介面形狀不同,主要可以分為三大類:
- 普通的硬體直接叫做Type
- 然後有小型版本的叫Mini迷你的
- 和更加小的,叫做Micro微小的
其中每一種大類中,又都可以分為兩類
- A類(Type A)
- B類(Type B)
- 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男足的要求,同時也插入方向也沒有要求,所以目前是大的趨勢。 |