劉妍秀
(長春大學(xué) 計算機科學(xué)技術(shù)學(xué)院,吉林 長春 130022)
USB(Universal Serial BUS)協(xié)議是1994年由Intel、Microsoft等眾多公司聯(lián)合提出的,目的是解決計算機外設(shè)接口眾多,并且速度慢,擴展性差的問題。到如今經(jīng)歷了十幾年的發(fā)展,采用USB協(xié)議的計算機外設(shè)越來越多,例如USB鼠標(biāo),鍵盤,攝像頭,打印機,外置硬盤等等,USB協(xié)議的應(yīng)用越來越廣泛。
從1994年到如今,USB協(xié)議經(jīng)歷了多個版本的發(fā)展,其中USB1.1、USB2.0是目前被PC主機廣泛支持的兩個版本。其中USB2.0協(xié)議能夠達到的最高傳輸速度為60MB/s(理論值),但是隨著今年來高清視頻格式的出現(xiàn)以及大容量移動存儲設(shè)備的出現(xiàn),對USB總線的帶寬和傳輸速率提出了更高的要求。針對這一點,在2008年末,由Intel公司主持設(shè)計并發(fā)布了USB3.0版本。其最高傳輸速度達到了625MB/s(理論值),速度整整提高了10倍。
USB體系包括三個部分:主機,設(shè)備,及物理連接[1]。
最常見的主機例如PC,它具有USB設(shè)備的管理能力。
硬件方面,包含USB主機控制器(USB Host Controller)及根集線器(RootHub)。在USB3.0出現(xiàn)之前,主機控制器接口有 OHCI、UHCI、EHCI三種。其中 OHCI、UHCI符合 USB1.1 規(guī)范,EHCI符合 USB2.0 規(guī)范,并向下兼容。隨著USB3.0協(xié)議的出現(xiàn),Intel公司設(shè)計了XHCI(eXtensible Host Controller Interface),它遵守USB3.0 協(xié)議,并支持 USB1.1、USB2.0 的設(shè)備。較 OHCI、UHCI、EHCI相比,XHCI能夠提供更高的穩(wěn)定性及更好的可擴展性,在系統(tǒng)空閑時保證更低的能源消耗。USB集線器的作用類似于網(wǎng)絡(luò)集線器,作用是提供擴展接口,用來增加可連接的USB設(shè)備數(shù)目。每個USB集線器具有一個上行Port和N個下行Port[2]。
軟件方面,包括USB主機控制器驅(qū)動及USB協(xié)議棧的實現(xiàn)。在PC上常見的Windows操作系統(tǒng)以及在嵌入式設(shè)備上常見的Linux操作系統(tǒng),對USB體系結(jié)構(gòu)都提供了很好的支持。其中Linux更是第一款支持USB3.0規(guī)范的操作系統(tǒng)。
常見USB設(shè)備包括鼠標(biāo),鍵盤,U盤,攝像頭,打印機等等。在USB體系中設(shè)備可以分為很多種類,表1介紹了USB的設(shè)備種類:
從表1中可以看出,USB設(shè)備種類非常之多,可見USB體系應(yīng)用之廣泛。
表1 USB的設(shè)備種類
物理連接指的是主機和USB設(shè)備間的連接方式。主機到USB設(shè)備間的物理連接模型如下圖1所示。
圖1 主機到USB設(shè)備間的物理連接模型
該模型采用的是樹形結(jié)構(gòu)[3]。其中樹根是USB主機及RootHub.其余層次為功能設(shè)備及USBHub。每層通過USB Hub級聯(lián)。USB2.0及USB3.0都支持7層深度,USB1.1支持的最大深度為4層[4]。每層之間通過USB線纜相連。圖2介紹了USB3.0的層次結(jié)構(gòu)。
圖2 USB3.0的層次結(jié)構(gòu)模型
USB3.0中定義了8根信號線,比USB2.0多了SSTX+,SSTX-,SSRX+,SSRX-四根數(shù)據(jù)線。這也是USB3.0速度比USB2.0大幅提升的原因之一。
圖3介紹了主機到USB設(shè)備之間如何進行數(shù)據(jù)傳輸。
圖3 主機到USB設(shè)備的數(shù)據(jù)傳輸模型
端點是USB設(shè)備數(shù)據(jù)接收和傳輸?shù)淖钚挝?。端點具有如下特征:
1)每個USB設(shè)備具有一個或多個端點。
2)端點具有方向性。主機到設(shè)備稱為Out端點,設(shè)備到主機稱為In端點。
3)每個端點都有緩沖區(qū),緩沖區(qū)的大小決定了每次傳輸數(shù)據(jù)的大小。
4)每個端點通過地址,端點號及方向三個屬性唯一決定。
端點有四種類型,分別是控制傳輸端點,中斷傳輸端點,批量傳輸端點,等時傳輸端點。
(1)控制端點用于向USB設(shè)備發(fā)送控制命令,或獲取USB設(shè)備的狀態(tài)信息。每個USB設(shè)備至少擁有一個控制端點[5]。
(2)中斷端點用于少量數(shù)據(jù),隨時發(fā)生的傳輸。例如USB鼠標(biāo),鍵盤等。(3)批量端點用于大量數(shù)據(jù)的傳輸。例如U盤,移動硬盤。(4)等時端點用于實時數(shù)據(jù)的傳輸,例如USB攝像頭等。
在主機與USB設(shè)備端點間建立的通信信道,稱為管道。主機與USB設(shè)備間的通信,就是建立在管道之上的。按照端點類型不同,管道也可以分為四種:分別為控制管道,中斷管道,批量管道,等時管道。其中控制管道是最為重要的管道。
根據(jù)管道類型的不同,數(shù)據(jù)傳輸?shù)臅r序也有所不同。由于控制管道是每個USB設(shè)備必須具備的功能,所以我們以控制管道下的數(shù)據(jù)傳輸為例。管道分為流式管道(Stream Pipe)及消息管道(Message Pipe)。流式管道指的是在管道上傳輸?shù)臄?shù)據(jù)是隨機的,沒有特別含義的數(shù)據(jù)。而消息管道指的是在管道上傳輸?shù)臄?shù)據(jù)是在USB協(xié)議中定義過的,有明確含義的數(shù)據(jù)??刂乒艿谰蛯儆谙⒐艿???刂苽鬏?shù)臅r序如下:
1)主機向設(shè)備發(fā)送控制字。
2)設(shè)備向主機發(fā)送應(yīng)答數(shù)據(jù)。
3)主機向設(shè)備發(fā)送狀態(tài)字。
正常情況下的傳輸是這樣的。但是如果遇到設(shè)備處在忙狀態(tài),則時序如下:
1)主機向設(shè)備發(fā)送控制字。
2)設(shè)備向主機發(fā)送應(yīng)答數(shù)據(jù)。
3)設(shè)備處在忙狀態(tài)。
4)主機間隔一段時間后retry。
5)主機向設(shè)備發(fā)送狀態(tài)字。
6)設(shè)備處在忙狀態(tài)。
7)主機間隔一段時間后retry。
也就是說,如果設(shè)備忙,則主機的策略是等待設(shè)備恢復(fù)到空閑狀態(tài)時繼續(xù)發(fā)送請求。
眾所周知,USB具有熱插拔的特性。USB3.0在USB設(shè)備插入USB總線或從USB總線移除時,主機上的系統(tǒng)軟件需要檢測到這些變化,以保證應(yīng)用軟件對USB設(shè)備的正常訪問。這也是總線枚舉的作用??偩€枚舉的步驟如下:
1)設(shè)備接入到USB Hub的某個下行Port。
2)USB Hub檢測到Port口電平變化后,通過中斷管道通知主機控制器。
3)主機控制器得到設(shè)備接入通知后,向USB Hub發(fā)送復(fù)位Port通知。
4)USB Hub復(fù)位Port后,設(shè)備處在默認(Default)狀態(tài)。此時設(shè)備的控制端點可用。
5)主機控制器通過控制管道向設(shè)備發(fā)送Get_Device_Descriptor控制字,獲取設(shè)備的基本信息。
6)在獲取了設(shè)備的基本信息后,主機在操作系統(tǒng)內(nèi)核中尋找與該設(shè)備匹配的設(shè)備驅(qū)動程序。
7)如果找到設(shè)備驅(qū)動程序,則加載該驅(qū)動,設(shè)備就可以正常使用了。如果未找到,則提示用戶設(shè)備不可用。
USB3.0體系從2008年末到現(xiàn)在經(jīng)歷了接近兩年的時間。宣布支持USB3.0技術(shù)的硬件及軟件廠商非常多,其中即包括Intel、AMD、HP、Microsoft,NEC等眾多知名大廠,也包括眾多開源社區(qū)的支持。其中日本的NEC公司已于2009年開發(fā)出了第一款支持USB3.0規(guī)范的主控制器,并投入實際生產(chǎn)?,F(xiàn)在國內(nèi)已出現(xiàn)華碩,技嘉,微星等眾多廠商的支持USB3.0的主板,但是價格比較昂貴,并且USB3.0的設(shè)備比較少見,所以普及程度并不高。軟件方面,Windows7操作系統(tǒng)已宣布在SP1中加入對USB3.0的支持,但正式版本的SP1將于明年上半年發(fā)布;開源的操作系統(tǒng)Linux早在去年9月份就已實現(xiàn)了對USB3.0的支持,Linux內(nèi)核版本是 2.6.31。
從USB2.0的發(fā)展歷史來看,從規(guī)范的提出到大規(guī)模普及用了四年左右的時間。雖然目前USB3.0的普及程度并不高,但是可以預(yù)見,USB3.0的極速傳輸,低電源消耗等優(yōu)秀的特性,必將使其在更廣泛的領(lǐng)域得到普及和應(yīng)用,例如高分辨率攝像頭,視頻顯示器,外置硬盤,數(shù)碼攝像機,藍光光驅(qū)等等。在眾多硬件及軟件廠商的不斷努力下,在未來的3-5年內(nèi),USB3.0必將獲得長遠發(fā)展。
[1] 李俊.嵌入式LINUX設(shè)備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008:311-313.
[2] Don Anderson.USB系統(tǒng)體系[M].北京:中國電力出版社,2003:37-40.
[3] Jan Axelson.USB Complete The Developer’s Guide[M].New York:Lakeview Research.2009:18 -20.
[4] 胡曉軍,張愛成.USB接口開發(fā)技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005:71-88.
[5] 魏永明,耿岳,鐘書毅.LINUX設(shè)備驅(qū)動程序[M].北京:中國電力出版社,2005:324-356.