USB On-The-Go 技術概述




USB On-The-Go 技術概述


0 什麼是USB On-The-Go

我們先來回顧一下通用串列匯流排(Universal Serial Bus,簡稱為USB)發展的歷史:

1994 年11 月
,以Intel 為首的7 家公司(Intel、Compaq、Microsoft、IBM、DEC、Northern Telecom 和NEC)推出了USB 協議的第一個草案,USB 作為一種新型的串列匯流排,揭開了新一輪的USB 匯流排的革命,但這時,USB 並不為電腦技術人員所熟知;

1996 年2 月
,USB 協定規範1.0 版本發佈,版權屬於Compaq、Intel、Microsoft和NEC 等4 家公司,並同意任何人可免費使用。自此,USB 開始逐漸被廣大技術人員和用戶所認可,並逐漸開始成為PC 主板上的標準介面;

1998 年10 月,USB 1.1 版本發佈,集中修訂了USB 1.0 中的問題,並進一步突出了USB 的優勢。到目前,USB 1.1 仍是開發USB 低速(1.5Mbps,Low-Speed)和全速(12Mbps,Full-Speed)設備的標準版本。USB 的低功耗、速度高、成本低、支持即插即用和維護方便等優勢更加穩定,USB 開始成為滑鼠、鍵盤、遊戲杆、印表機、光碟機、硬碟、顯示器和數碼相機等幾乎各種PC 外接設備與PC 連接的標準協議之一。各種USB 的外接設備產品如雨後春筍般出現,如USB Flash 讀卡器、USB 移動硬碟、USB 數碼相機、USB 鍵盤等,幾乎所有的PC 外接設備都有相應的USB 介面的產品。一時間,USB 成為了最為流行的PC 介面標準,嵌入式軟硬體工程師也將USB 應用到自己的設計之中;

2000 年4 月,Compaq、HP、Intel、Lucent、Microsoft、NEC 和Philips 等7 家公司聯合發佈USB 2.0 協定規範版本。新版本最大的變化就是將USB 的總線速度一下子提高到了480Mbps,即開始支援高速設備(High-Speed)。由此,USB 翻開了新的一頁,徹底打破了USB 應用在視頻等高速傳輸領域中的速度瓶頸,大大擴展了USB 應用領域。從低速的滑鼠、鍵盤,到全速的硬碟,再到高速的視頻傳輸,USB 幾乎無所不能,可以應用到任何一種PC 外接設備中。USB 取代串口、並口等傳統PC 介面只是個時間問題了。

從問世,到協定規範2.0 版本,USB 不斷在自我完善,走向成熟。從普通電腦用戶,電腦工程師,到硬體晶片生產廠商,都已經完全認可了USB。廠商對於USB 的硬體和軟件支援的也越來越完備,現在開發一個USB 外接設備產品,所需要投入的成本和時間大大降低了,幾年前是沒有辦法做到這一點的。但是,隨著USB 應用領域的逐漸擴大,人們對於USB的期望也越來越高,希望USB 能應用在各種電腦領域中,尤其是在移動通訊領域中,希望能通過PDA 等移動設備來直接和USB 外接設備通信,使得USB 能應用在沒有PC 的領域中。


非PC 應用領域?


這正是USB 一個致命的弱點。USB 的拓撲結構中居於核心地位的是Host,任何一次USB 的資料傳輸都必須由Host 來發起和控制,所有的USB 外接設備都只能和Host 建立連接,任何兩個外接設備之間或是兩個Host 之間無法直接通信。而目前,大量的扮演Host 角色的是個人電腦PC。因此,“如何將USB 應用到嵌入式領域?如何實現USB 點對點的通訊?”等問題,開始進入了USB 開發者的討論議程。正是在這種新的需求之下,USB On-The-Go 應運而生。


2001 年12 月,USB On-The-Go 版本協議1.0 正式發佈(簡寫為OTG 1.0)。

USB On-The-Go,顧名思義,是USB 應用在攜帶型移動設備領域中,因此,我們姑且將其翻譯為“攜帶型USB”(或者“移動USB”),簡記成USB OTG。OTG 1.0 作為USB 2.0的補充協定,基本上符合USB 2.0 規範。但是,有所不同的是符合USB OTG 的設備完全拋開了PC,既可以作為Host,也可以作為外接設備,而與另一個OTG 設備直接實現點對點(Pearto Pear)通訊。因此,這類OTG 設備也被成為是雙角色設備(Dual-Role Device,簡稱為DRD),並能夠根據接入設備的特性和資料傳輸過程中的情況,自動切換為Host 或是外接設備。

例如,一個OTG 數碼相機可以直接與OTG 印表機相連,列印圖片;兩個OTG MP3 播放器可以之間連在一起,實現音樂檔的共用..需要注意的是,USB OTG 設備保留了作為普通USB 2.0 外接設備的功能,可以作為外接設備直接連接到PC Host 上。


USB的廣泛應用使其正在成為外接設備與PC機及膝上型電腦連接的工業標準。USB外接設備主要是便攜式設備,隨著其數量的不斷增多,設備之間無主機參與的直接通信成為亟待解決的問題。我們開發了基於USB匯流排(界面晶片為Philips公司的PDIUSBD12)的數據采集系統,取得了滿意的效果。但在開發USB1。1設備時遇到的設備互連直接通信的要求,一直由於USB主機/設備架構的制約沒有理想的解決方案。USB2。0雖然在速度等方面有很大的改進,但同樣要倚賴計算機主機進行通信。  2001年底,USB開發者論壇(USBImplementersForum,USBIF)發布了專門用於USB外接設備間"可移動互連"的USB2。0補充規範USBOn-The-Go,其目標是使外接設備以主機的身分和另外特定的一組外接設備直接通信。本文中歸納USB2。0補充規範OTG的相關技術,並主要討論其新增特性。


1新的協議


OTG補充規範對USB2。0的最重要的擴展是其更具節能性的電源管理和允許設備以主機和外接設備兩種形式工作。OTG有兩種設備類型︰兩用OTG設備(Dual-roledevice)和外接設備式OTG設備(Perip-heral-onlyOTGdevice)。兩用OTG設備完全符合USB2。0規範,同時它還要提供有限的主機能力和一個MiniAB插座、支援主機流通協議(HostNegotiationProtocol,HNP),並和外接設備式OTG設備一樣支援事務請求協議(SessionRequestProtocolSRP)。當作為主機工作時,兩用OTG設備可在匯流排上提供8mA的電流,而以往標準主機則需要提供100~500mA的電流。


兩個兩用OTG設備連接在一起時可交替以主機和從機的模式工作,這個特點兼容了現有USB規範主機/外接設備的架構模型。OTG主機同樣負責初始化數據通信的任務,比如︰匯流排複位、獲取USB各種描述符和配置設備。這些配置完成後,兩個OTG設備便可以分別以主機和從機模式傳輸訊息,兩個設備主從角色交換的過程由主機傳輸協議(HNP)定義。以下以兩用OTG設備為例討論SRP和HNP。


1。1事務請求協議SRP


在以往的USB系統營運過程中,主機提供5V的電源和不低於100mA的匯流排電流。當OTG主機(指以主機模式工作的兩用OTG設備,又稱A-device)連接到有線電源時這種方法是適用的,但像手機這樣的自供電移動設備則不能承受如此大的電能浪費。為了節約電源延長電池的使用壽命,當匯流排上沒有活動時,OTG主機將掛起匯流排電源VBUS。SRP協議可使OTG從機(指外接設備式設備或者以外接設備模式工作的兩用OTG設備,又稱B-device,此處指後者)請求A-device重新使能VBUS,而後A-device使用HNP協議交換兩個設備的工作模式,這兩步完成後由新的OTG主機開始事務傳輸。B-device可在前一事務結束2ms後的任意時間開始SRP。


B-device將先後執行數據線脈波調製(data-linepul-sing)和VBUS脈波調製(VBUSpulsing)。它透過使能數據線上拉電阻(全速和高速設備為D+,低速設備為D-)5~10ms實現前者,後者透過驅動VBUS實現。VBUS必須要有足夠長的時間對其電容充電,這個時間應能保證不大於13μF的電容充電至2。1V(OTG設備的電容是6。5μF或更小),從而不會對標準主機的96μF或更高的電容充電至2。0V。該限制保證了從B-device引來的VBUS電流不會破壞標準主機的端口。


A-device檢測到數據線脈波調製或者VBUS脈波調製後,首先複位匯流排,然後發送Set_feature命令而先不進行設備的枚舉,此時B-device尚處在預設的從機狀態。如果Set_feature命令成功執行,說明B-device為兩用OTG設備,A-device(使用HNP協議)掛起VBUS準備讓B-device交換為主機模式接管匯流排。如果Set_feature命令執行失敗,說明B-device為外接設備式OTG設備,於是A-device使能VBUS準備開始一個傳輸事務。此時,A-device只是被喚醒,並未改變工作模式。當A-device認為匯流排上沒有傳輸需要時,掛起VBUS以結束該事務。這種A-device自動檢測B-device是否支援HNP協議的特徵稱為“NoSilentFailure”。


1。2主機流通協議HNP


當兩用設備連接了一個Mini-A插頭或者Mini-B插頭時,它相應的便以OTG主機或者OTG外接設備的預設模式工作。A-device為預設主機,所以由它提供VBUS電源,且在檢測到有設備接入時複位匯流排、枚舉並配置B-device。


A-device在完成對B-device的使用後,可以透過查詢B-device的OTG性能描述符來判斷它是否支援HNP協議(即是否為兩用OTG設備)。如支援HNP,B-device將返回有效的OTG性能描述符,A-device則產生一個Set_feature命令(即HNP_Enable)來通知B-device可以在匯流排掛起的時候以主機模式工作,隨後A-device掛起匯流排。


B-device透過上拉電阻(全速時)或者下拉電阻(高速時)拉低D+以示連接斷開。隨後,作為對B-device斷開的附應,A-device使能它的數據線並開始以從機模式工作。完成這些轉換後,B-device和A-device便各自以主機角色和外接設備角色使用匯流排。如果該B-device屬於兩用OTG設備且A-device不再使用它了,A-device便重發Set_feature命令並掛起匯流排。若B-device申請角色轉換時出錯,A-device則拉低VBUS以結束該事務。當B-device正常結束傳輸事務時便掛起VBUS使能其上拉電阻,重新以從機模式營運。A-device檢測到匯流排掛起後,發出一個連接斷開信號並重新以主機模式工作。


2.USB OTG 的機械層和電氣層協議


2。1連接器


USBIF在OTG中定義了更小的連接器,可以同時用於主機式和外接設備式的設備、具有更低的電源需求、擴展的電源保護模式和利於上層軟體開發的簡潔設計。


OTG和現有的USB2。0規範完全兼容,一個主要的機械上的改進是它的新式連接器。USB2。0定義了三種連接器對(插頭和插座)︰Standard-A、Standard-B和Mini-B。Mini-B連接器是專為較小的外接設備(如移動電話等)開發的。OTG規範增加了第四種插頭?Mini-A,兩種插座︰Mini-A和Mini-AB。這些連接器比最初的USB連接器要小許多(如︰Mini-A插頭截面積只有Standard-A插頭的38%),更適合於便攜式設備。


Mini-AB插座用於兩用設備。Mini-A新增的ID腳(以前的USB插頭不含此腳)在連接Mini-AB時接地短路,而Mini-B則使該腳斷開,這樣兩用設備便可識別連接設備的類型以決定設備的預設角色。


Mini-A和Mini-B插頭是嚴格配對適用的,如︰不能將Mini-A插頭和Mini-B插座配合使用。但是,Mini-AB插座適合於以上兩種插頭。在外形上,Mini-A更接近於橢圓形,而Mini-B更接近於正方形。另外,他們的插頭和插座內部的塑膠都有顏色︰Mini-A為白色,Mini-B為黑色,Mini-AB為灰色。



2。2電纜


USB2。0規範定義了兩種電纜︰Standard-A至Standard-B和Standard-A至Mini-B。OTG新增了兩種電纜︰Mini-A至Standard-B和Mini-A至Mini-B。Mini-A-to-Mini-B電纜的延遲被減少到可以在"A端〃使用適配器,如︰用Standard-A插頭連接OTG兩用設備需要一個Standard-A插座至Mini-A插頭的適配器,而用Mini-A插頭連接Standard-A插座時需要一個Mini-A插座至Standard-A插頭的適配器。


2.3 USB OTG 匯流排的電流要求

在USB OTG 系統中,A 設備(指處於Host 地位的設備)必須至少為匯流排提供8mA 的電流,電壓為4.4~5.25V。如果A 設備能提供100mA 以上的電流,那麼,電壓範圍為4.75~5.25V。在未被配置的情況下,OTG DRD 所提取的電流不得超過150uA,而POD 提取的電流不得超過8mA。


 


3USBOn-The-Go設備類型


OTG有兩種設備︰兩用OTG設備和外接設備式OTG設備。兩用OTG設備可以作為USB外接設備或者USBOTG主機,並且可為匯流排提供8mA電流。而外接設備式OTG設備不具備主機性能,它必須在向兩用設備(主機)的請求獲準後才能通信。兩用OTG設備必須能以全速模式營運,而高速營運的模式是可選的。外接設備型OTG設備可以設計在高速、全速和低速中的任意一種模式下工作。


3。1兩用OTG設備


兩用OTG設備都有一個Mini-AB插槽,所以一個Mini-A至Mini-B電纜可以直接將兩個兩用OTG設備連接在一起,而此時用戶不會覺察到兩個設備的不同,也不知道它們的預設主從配置。


A-device主機必須在事務傳輸過程中提供匯流排電源,這是A-device和B-device的主要不同,同時也說明了兩個設備的連接的非對等關係。A-device負責為匯流排供電因此它控制通信發生的時機,B-device只有透過SRP協議向"主機"請求傳輸。


設計一個兩用設備是比較困難的,因為它要具備︰有限的主機能力、可作為一個全速的外接設備(可選的高速模式)、OTG目標設備的清單、目標設備的驅動程式、支援SRP、支援HNP、一個Mini-AB插座、VBUS上不小於8mA的電流輸出、與用戶通信的模式。


3。2外接設備式OTG設備(Peripheral-onlyOTGdevice)


外接設備式OTG設備是普通的USB外接設備。它有一個OTG功能描述符說明其支援事務請求協議SRP而且它不是兩用OTG設備。此外,外接設備式OTG設備只能配置Mini-B型插座或者必須有一個帶Mini-A插頭的附屬電纜,而不能使用Mini-AB型插座。


SRP是B-device(此處指外接設備式設備)向A-device請求傳輸事務時必須使用的協議。它由前面提到的數據線脈波調製和VBUS脈波調製(B-device產生)兩種方法構成。A-device必須能檢測這兩種方法之一的信號,並開始一個相應的傳輸事務。除了固件(firmware)略有增加外,B-device同時可產生兩種信號的成本並沒有增加成本,而且還使實現A-device更加簡單(只需根據實際情況提供其中一種模式的檢測)。


一個OTG設備不必實現OTG的所有性能。例如,一個外接設備式OTG設備可能只需支援SRP和一個小於等於8mA的預設電流消耗配置。其實,添加對SRP支援也較簡單︰在VBUS上接一個驅動電阻並增加一些簡單的邏輯,從而產生VBUS脈波調製信號。


另外,無論是兩用OTG設備還是外接設備式OTG設備,都可以和通用的計算機相連,只不過兩用OTG設備具有一定的主機能力(可以驅動特定的一組OTG設備工作)。


4驅動程式


與PC主機不同,便攜式設備沒有便捷的模式和足夠的空間裝載新的驅動程式。因此,OTG規範要求每個兩用OTG設備有一個支援的外接設備式OTG目標設備的清單,清單中包括設備的類型和製造商等訊息。USBIF正計畫定義"OTGType"規範。對於符合此規範的設備,OTG主機只需提供一個驅動程式即可,這將使OTG主機無需為每個設備提供單獨的驅動程式,從而支援盡量多的OTG外接設備。


與PC機不同,OTG兩用設備的驅動程式棧由USB主機棧和USB設備棧構成以滿足兩種工作模式的需要。OTG驅動程式透過連接器的不同或者是否有HNP交換設備的工作模式來決定使用USB主機棧還是USB設備棧。


當OTG兩用設備以主機模式工作時,USB主機棧工作。其中的主機控制單元驅動程式負責USB主機棧與硬體端點的數據交換,USB驅動程式枚舉並儲存設備的訊息,目標外接設備主機類驅動程式支援目標設備清單裡的設備。主機類驅動程式由晶片製造商提供,同時,OTG提供通用的主機類驅動程式(可以修改以用於非通用設備)。


當OTG兩用設備以從機模式工作時,USB設備棧工作。其中的設備控制單元驅動程式負責USB設備棧與硬體端點的數據交換,USB協議層負責處理USB協議規範,設備類驅動程式的功能取決於該兩用設備的功能(如數碼照相機、存儲設備、印表機等)。


OTG驅動程式負責處理兩用OTG設備的工作模式轉換,同時,它還可以返回其結果(如設備是否支援HNP)並處理匯流排錯誤。應用層程式透過OTG驅動程式開始或者結束一個傳輸事務,透過USB主機棧或設備棧與硬體層交換數據。


5數據流模型


OTG主機和設備被劃分為功能層、USB設備層和USB界面層三個不同的層次。


USB界面層為OTG主機和OTG設備提供物理連接,USB系統軟體使用主機控制單元來管理主機與USB設備的數據傳輸。USB系統軟體相對於主機控制單元而言,處理的是以客戶角度觀察的數據傳輸及客戶與設備的交互。USB設備層為USB主機系統軟體提供一個可用的邏輯設備。主機透過與之功能匹配的客戶軟體實現其各種功能。


OTG設備與以往的USB設備一樣由兩種通道︰數據流通道和消息通道。數據流通道沒有定義好的架構,而消息通道則有固定的架構。但是,每個通道都有一定的帶寬、傳輸類型、傳輸方向和緩沖區大小。自供電設備配置一個預設的控制通道,由它提供該設備的配置和狀態等訊息。


USBOTG規範是USB2。0規範的補充而不是替代品。PC主機和標準外接設備並沒有被取代,因為新的OTG僅適用於需要具有主機功能和更小體積的便攜式設備。OTG在這些外接設備間引入了點對點的(point-to-point)通信模式,這使得便攜式儀器的發展有了更加廣闊的空間。USBOTG已受到Cypress等晶片供應商、軟體開發商和設備製造商的廣泛支援,OTG不久將會成為新一代的"移動計算"解決方案。


6 USB OTG 設備的功能

USB OTG 定義了兩種設備類型:雙角色設備DRD 和單外部設備(Peripheral-OnlyDevice,簡稱為POD)。DRD 具備Host 和外接設備的兩種功能,POD 基本與外接設備功能近似,因此,我們這裏著重討論DRD。

要成為一個USB Host,必須具有存儲外接設備驅動程式、提供足夠的USB 埠電流和A型Host 插座的能力。而其所要實現的基本功能包括3 部分:

管理和控制匯流排,包括提供USB 埠電源管理;
檢測外接設備的接入和斷開,枚舉(Enumerate)設備;
初始化匯流排上所有的資料包傳輸等活動。

同樣,USB 外接設備也具有特定的功能:
響應USB Host 的命令,執行又Host 發起的發送設備描述符、傳送資料等活動;
遠端喚醒處於掛起(Suspend)狀態的主機;

提供自供電(Self-Powered)電源(如果所需電流大於匯流排能提供的限額,選此項)。
DRD 具有USB Host 和外接設備的雙重功能,但是,正因為具有了雙重的角色任務,DRD又必須有切換角色等新的任務和功能,因此,我們可以用(1)式來簡單的定義OTG DRD的功能:

( ) 1 Other Peripheral L L + + = Host DRD

由(1)式可知,完整的USB OTG DRD 還必須具有除了通常的Host 和外接設備之外的一些功能,當然DRD 的Host 功能是有限的,不要求完全實現PC Host 的功能,不過,這正符合了嵌入式領域中對USB 靈活性和便攜性的要求:
作為外接設備,支援12Mbps 的全速模式(或者是480Mbps 的高速模式);
作為Host,也支援全速模式(或者是低速和高速模式);
產生目標外接設備列表(Targeted Peripheral List,簡寫為TPL);
會話請求協定(Session Request Protocol,簡寫為SRP);
主機交流協定(Host Negotiation Protocol,簡寫為HNP);
有且僅有1 個Mini-AB 插座;
至少為匯流排提供8mA 的電流;
能及時將匯流排活動狀態通知給設備用戶。


7 USB OTG 體系的軟體描述

7.1 OTG 配置描述符

在OTG 系統處於枚舉過程時,A 設備就會發送GetDescriptor 命令給B 設備(開始處於外接設備狀態的設備),要求B 設備發送OTG 配置描述符。配置描述符包括3 個位元組,分別是bLength、bDescriptorType 和bmAttributes。


7.2 會話請求協定(Session Request Protocol,簡寫為SRP)
SRP 用於B 設備向A 設備請求建立會話和使用匯流排。


一般,OTG 系統中的A 設備採用的是電池供電,因為這些設備是攜帶型和可移動的,這就決定了,OTG 系統電源管理是非常重要的一個專題。因此,為了節省OTG 系統的電源開支,OTG 2.0 規定A 設備在沒有匯流排活動的時候,可以關掉VBus 上的電源。這樣,當一個B 設備連接到A 設備上之後,就要初始化SRP,併發送給A 設備,請求A 設備在VBus上提供電流支援,進而進行通信。OTG 中,DRD 可以作為A 設備,也可以作為B 設備,
因此,DRD 必須支持初始化SRP 和回應SRP;POD 只能作B 設備,所以,只能初始化SRP。SRP 中,B 設備有兩種方式可以向A 設備發送請求,要求建立SRP:一種是資料線脈沖(Data-Line Pulsing),一種是VBus 脈衝(VBus Pulsing)。
具體的脈衝方法在OTG 2.0 中有詳細的說明。任何一個A 設備只要求能回應一種SRP 方式,而B 設備必須能初始化兩種SRP方式。這樣,當B 設備先初始化一種SRP,而A 設備無法回應是,則B 設備就要用另一種SRP 方式。


7.3 主機交流協定(Host Negotiation Protocol,簡寫為HNP)
HNP 用於初始B 設備與初始A 設備之間切換Host 角色。

OTG DRD 具有Mini AB 型插座,因此,DRD 既可作為Host,也可以作為外接設備。而在
某一個OTG 連接中,這個DRD 到底是作Host(即A 設備),還是作外接設備(即B 設備),則
要根據接入的另一個OTG 設備來定。如果,接入的是OTG POD,那麼,毫無疑問,這個
DRD 肯定是作A 設備。但,如果接入的是另一個DRD,那麼這兩個DRD 之間,就可以HNP
來隨時切換Host 角色。


一次完整的HNP 流程是這樣的:B 設備希望控制匯流排,成為Host;在A 設備發送了SetFeature 命令後,B 設備就可以來請求控制匯流排;A 設備掛起匯流排,通知B 設備可以控制匯流排;B 設備發送信號,斷開與A 設備的連接;A 設備啟動D+信號線上的上拉電阻,將D+置高;這樣,A 設備就開始作為外接設備,放棄了匯流排的控制權,B 設備成為了Host;在B設備完成了對匯流排的控制,就需要上拉其上的D+電阻,放棄匯流排控制權。

當然,這一系列的HNP 活動,不僅僅是通過信號線上的電平變化來實現的。電平變化只是一種標誌,真正內部對匯流排的控制權的變化,則要通過軟體來實現。


7.4 OTG 的軟體結構
OTG 的軟體結構包括3 部分:
OTG 系統硬體驅動:包括SRP 和HNP;
OTG 系統外接設備軟體:實現標準的USB 類,來實現特定的USB 外接設備功能;
OTG 系統Host 軟體:包括Host 驅動程式、作業系統支援軟體、支援外接設備的類庫。


    全站熱搜

    立你斯 發表在 痞客邦 留言(0) 人氣()