陳鍇
摘要: 該文主要討論了一種新方法,實(shí)現(xiàn)了主機(jī)通過一種新的自定義設(shè)備請求,獲取存儲于USB3.0設(shè)備固件中詳細(xì)的UI信息。從而可使OEM/IHV廠商不必再隨其生產(chǎn)的USB3.0設(shè)備分發(fā)任何特定的安裝媒體。
關(guān)鍵詞: USB3.0;設(shè)備自定義;固件;UI;設(shè)備請求
中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)07-1648-03
1 背景
USB(Universal Serial Bus)即通用串行總線,是一種靈活,快速的總線接口。USB技術(shù)的出現(xiàn)讓IT產(chǎn)業(yè)的接口產(chǎn)生了巨大的革命。其主要特征是低成本,同步,高速,雙向,高速,可即時(shí)連接,是對當(dāng)今計(jì)算機(jī)體系結(jié)構(gòu)的一種工業(yè)標(biāo)準(zhǔn)擴(kuò)展,因此支持USB的設(shè)備現(xiàn)在已經(jīng)十分廣泛。主機(jī)通過USB總線對設(shè)備的操作,完成對其連接,配置,使用和斷開等功能。隨著硬件設(shè)備的不斷發(fā)展進(jìn)步,更高的傳輸速度和更大的帶寬越來越被人們所重視,由此各界對USB 3.0的需求也愈來愈高。2008年11月發(fā)行的USB 3.0通用串行總線( Universal Serial Bus)是最新規(guī)范,該規(guī)范由英特爾等大公司發(fā)起,其最高傳輸速度可達(dá)5 Gb/ s,并且兼容USB 2. 0 及以下接口標(biāo)準(zhǔn)。
2 設(shè)備請求介紹
設(shè)備請求是USB3.0的重要組成部分。設(shè)備的信息和功能都存在它的設(shè)備描述符(descriptor)中,要想得到這些信息,或是修改這些信息,就要對描述符進(jìn)行讀寫操作,完成這些讀寫的行為稱為設(shè)備請求。
設(shè)備請求包括標(biāo)準(zhǔn)請求、設(shè)備類請求和廠商自定義請求。
1) 標(biāo)準(zhǔn)請求:USB3.0協(xié)議定義了一系列所有USB3.0設(shè)備都必須支持的請求。它們用于配置一個(gè)設(shè)備、控制USB接口的狀態(tài),還有其他特征。
2) 設(shè)備類請求:每個(gè)USB3.0設(shè)備類都可以定義類的特定請求,除了集線器設(shè)備之外,這些請求由設(shè)備類的協(xié)議說明文檔定義,它們并不包含在USB3.0協(xié)議的主體部分。
3) 廠商自定義請求:一個(gè)USB3.0設(shè)備可以支持設(shè)備廠商自定義的請求,這些請求和設(shè)備廠商對設(shè)備的具體實(shí)現(xiàn)相關(guān)。廠商自定義的請求只有設(shè)備和主機(jī)端對應(yīng)的設(shè)備驅(qū)動(dòng)程序知道。
所有的設(shè)備在設(shè)備的缺省控制通道處對主機(jī)的請求發(fā)出響應(yīng)。這些請求是通過使用控制傳輸來發(fā)送的,請求及請求的參數(shù)通過Setup階段的數(shù)據(jù)包發(fā)向設(shè)備,主機(jī)負(fù)責(zé)設(shè)置Setup數(shù)據(jù)包內(nèi)的每個(gè)域的值,每個(gè)Setup包有8個(gè)字節(jié),見表1。
3 設(shè)備自定義請求的實(shí)現(xiàn)
高層主機(jī)的應(yīng)用程序和操作系統(tǒng)廠商,會(huì)根據(jù)實(shí)際應(yīng)用需要對設(shè)備定義一些特定的設(shè)備請求與響應(yīng)。而底層的硬件制造商(OEMs)和獨(dú)立硬件商(IHVs),即設(shè)備生產(chǎn)和發(fā)行方,會(huì)對主機(jī)軟件和操作系統(tǒng)的這些額外的自定義設(shè)備請求提供支持。雖然USB3.0協(xié)議主體中規(guī)范了多種類型的設(shè)備請求,但并沒有對上述的主機(jī)自定義請求進(jìn)行詳細(xì)說明。
一般情況下設(shè)備安裝過程為: USB3.0設(shè)備與主機(jī)連接后,用戶需要安裝OEM/IHV提供的光盤或應(yīng)用程序。安裝程序通常包括設(shè)備特定的設(shè)置和資源,如下所示:
A.設(shè)備驅(qū)動(dòng)
B.用戶界面(UI),包含圖標(biāo),字體,圖片,標(biāo)志,幫助頁面,通用資源定位符(URL)。
C.詳細(xì)的說明,設(shè)置和資源定位信息文件。
在安裝過程中,操作系統(tǒng)通過設(shè)備提供的USB標(biāo)準(zhǔn)類和子類信息碼,來判斷此設(shè)備是否為通用設(shè)備,或可用默認(rèn)驅(qū)動(dòng)來控制此設(shè)備。通常情況下大部分USB3.0設(shè)備都可使用系統(tǒng)默認(rèn)驅(qū)動(dòng)控制,所以用戶就可不必再安裝OEM/IHV提供驅(qū)動(dòng)。
隨著USB3.0設(shè)備大范圍的普及,OEM/IHV廠商們更希望操作系統(tǒng)能夠自行加載設(shè)備某些自定義信息(如,圖標(biāo),字體,圖片,標(biāo)志,幫助頁面,通用資源定位符(URL)),這樣即使用戶不用安裝任何額外的程序或驅(qū)動(dòng),操作系統(tǒng)也能為設(shè)備提供恰當(dāng)?shù)腢I和信息。如果解決了這個(gè)問題,將大大簡化了設(shè)備安裝過程,提高了設(shè)備的易用性。同樣,也降低了OEM/IHV廠商的成本。
本文根據(jù)這個(gè)問題,提出一種解決方案。即把設(shè)備自定義的UI信息存儲于USB3.0設(shè)備固件中。當(dāng)主機(jī)與設(shè)備通信時(shí),設(shè)備響應(yīng)主機(jī)的請求,把設(shè)備的UI,配置信息傳輸給主機(jī)。設(shè)備使用系統(tǒng)默認(rèn)驅(qū)動(dòng)時(shí),不用安裝廠商提供的任何文件,也能完成對設(shè)備的正確配置。
如圖1示例系統(tǒng),設(shè)備自定義的設(shè)置和資源信息都存儲于固件中。操作系統(tǒng)或應(yīng)用程序可以通過主機(jī)自定義請求讀取這些信息,從而為用戶提供恰當(dāng)?shù)腢I和設(shè)備信息。
系統(tǒng)由主機(jī)與設(shè)備組成,兩部分通過USB總線相連。主機(jī)一般為PC或其他類型計(jì)算機(jī)。主機(jī)中具有一個(gè)或多個(gè)處理器,存儲設(shè)備(如內(nèi)存,硬盤等)。操作系統(tǒng)如(Windows)和各種應(yīng)用程序會(huì)存儲于硬盤和內(nèi)存中,通過處理器運(yùn)行。主機(jī)中還包含操作系統(tǒng)所支持的USB驅(qū)動(dòng)和端口。主機(jī)與設(shè)備的通信過程為:高層的應(yīng)用程序?qū)Σ僮飨到y(tǒng)的系統(tǒng)服務(wù)進(jìn)行操作, 然后由系統(tǒng)服務(wù)配置低層的通信細(xì)節(jié)后完成通信,最后把設(shè)備返回的信息反饋給應(yīng)用程序。
圖1中的設(shè)備可以是硬盤,閃存,數(shù)碼相機(jī),鼠標(biāo)等等。設(shè)備中也包含了一個(gè)或多個(gè)處理器,各種類型的存儲器和USB總線端口。其中存儲器存儲了控制設(shè)備與主機(jī)通信的控制邏輯,并可由處理器運(yùn)算后執(zhí)行。
設(shè)備通過USB總線,對主機(jī)的請求發(fā)出響應(yīng)。這些請求是通過使用控制傳輸來發(fā)送的,請求及請求的參數(shù)通過Setup包發(fā)向設(shè)備。設(shè)備接收到Setup數(shù)據(jù)包后,響應(yīng)主機(jī)返回?cái)?shù)據(jù)。
圖1設(shè)備中定義了一種新的設(shè)備自定義描述符-擴(kuò)展屬性描述符。描述符中存儲著設(shè)備自定義的UI信息。這些UI信息的格式是由操作系統(tǒng)廠商所定義的。OEM/IHV廠商依據(jù)規(guī)范格式可把UI信息(如:圖標(biāo),字體,標(biāo)志,URL等)寫入擴(kuò)展屬性描述符,并存儲于設(shè)備存儲器,即固件中。
此系統(tǒng)可以實(shí)現(xiàn):設(shè)備使用前,主機(jī)發(fā)送自定義請求給設(shè)備,命令返回相應(yīng)的設(shè)備自定義UI信息,然后設(shè)備響應(yīng)主機(jī)請求返回?cái)?shù)據(jù)。最后主機(jī)根據(jù)設(shè)備返回的UI信息配置操作系統(tǒng),提供相應(yīng)的UI及組件。
舉例說明:普通數(shù)碼攝像機(jī)和PC相連后,Windows系統(tǒng)通常只會(huì)識別為邏輯磁盤設(shè)備(只顯示默認(rèn)卷標(biāo)),且只提供磁盤存儲設(shè)備的UI。但是,如果設(shè)備加入了擴(kuò)展屬性描述符,而且經(jīng)過主機(jī)自定義請求后獲得此描述符,操作系統(tǒng)就可以根據(jù)描述符中的數(shù)據(jù)獲得有關(guān)數(shù)碼相機(jī)的詳細(xì)信息。這些信息可使Windows為數(shù)碼相機(jī)提供更加恰當(dāng)?shù)臉?biāo)識(如,卷標(biāo)顯示Digital Camera)和相機(jī)相關(guān)的UI,而不僅僅只當(dāng)成磁盤存儲設(shè)備。
本文所提出的方法,即為各式USB3.0設(shè)備定義了可嵌入在USB3.0標(biāo)準(zhǔn)協(xié)議中,一種新的設(shè)備請求-主機(jī)自定義設(shè)備請求。此主機(jī)自定義設(shè)備請求可由操作系統(tǒng)廠商或應(yīng)用程序規(guī)范,設(shè)備廠商能夠從底層支持這些請求。
置如下:
持主機(jī)的自定義請求,從而不會(huì)進(jìn)行下一步操作。反之驗(yàn)證無誤,則主機(jī)識別出設(shè)備支持自定義設(shè)備請求。讀取bVendorCode域中的設(shè)備自定義請求碼。隨后,主機(jī)根據(jù)此設(shè)備自定義請求碼,配置下一階段的主機(jī)自定義請求。主機(jī)自定義請求中各個(gè)域的含義和數(shù)值,不再遵循與表1中的標(biāo)準(zhǔn)設(shè)備請求的規(guī)范。其實(shí)際含義由系統(tǒng)廠商所自定義。
從而接下來的主機(jī)控制傳輸中各個(gè)域值設(shè)置成:
bmRequestType=1100001,表示此次請求是設(shè)備到主機(jī),廠商自定義,接受者為設(shè)備的請求類型。
bRequest=bVendorCode域中相應(yīng)的值,指明主機(jī)所要讀取的設(shè)備自定義描述符。
wValue和wIndex域中根據(jù)不同請求含義不同。
wLength域表示有多少字節(jié)的數(shù)據(jù)返回。
由此,對主機(jī)自定義請求配置完畢后,通過USB3.0總線發(fā)送到設(shè)備,隨后設(shè)備響應(yīng)主機(jī)自定義請求,返回設(shè)備固件中所存儲的自定義描述符。如圖1所搭建系統(tǒng)中的擴(kuò)展屬性描述表。從而操作系統(tǒng)獲取描述表中有關(guān)此設(shè)備的UI信息。
4 小結(jié)
對比于傳統(tǒng)的USB3.0設(shè)備使用前,用戶必須使用OEM/IHV廠商為USB3.0設(shè)備所提供的特定安裝程序,才能提供恰當(dāng)?shù)腢I信息而言。該文所論述的方法在兼容USB3.0協(xié)議基礎(chǔ)上。通過實(shí)現(xiàn)一種新的主機(jī)自定義設(shè)備請求,直接從USB3.0設(shè)備中獲取其自定義的UI信息配置操作系統(tǒng)或程序。從而OEM/IHV廠商,只需在USB3.0設(shè)備中加入對應(yīng)于主機(jī)自定義設(shè)備請求的自定義描述符,就可使用戶無需安裝任何文件,系統(tǒng)也能為其提供相應(yīng)的UI,提高了USB3.0設(shè)備的靈活性,易用性。為OEM/IHV廠商提供了方便,降低了成本。
參考文獻(xiàn):
[1] Intel,Microsoft,NEC,Universal Serial Bus Specification 3.0.2008-11.
[2] Suguru Ishii.Peripheral Device And Method Of Connecting Peripheral Device With Host Device,United States Patent Application,2011.
[3] Moore,Terrill M. Usb Hub Supporting Unequal Numbers Of High-Speed And Super-Speed Ports, United States Patent Application,2011.
[4] ADERSON Don .USB系統(tǒng)體系,2007.