掌握介面描述元結構 強化手機USB複合設計

USB能做的不只是資料傳輸,事實上,若使用與設計得宜,USB強大的通訊協定功能,可能增強目前的手機功能。現在多數手機廠商推出的產品已不只提供通話功能,手機還能當作行事曆、數據機、MP3播放器及資料儲存等裝置。但問題是許多手機製造業者同時也要求使用者,透過眼花撩亂的功能選單建立系統設定,或改變功能模式,這讓使用者在操作過程中反而更加困惑。而USB到底能從哪些方面協助消費者呢?USB通訊協定該如何為手機市場帶來更多功能,並同時擁有簡單的操作模式?可以確定的是即使手機功能繁瑣,只要使用介面簡易,產品就有機會受到歡迎。了解USB資料傳輸以外的附加用途,首先必須先了解當它作為資料連線時的運作模式為何,同時還須清楚USB的基本原理、傳輸資料的通訊協定、及在手機中提供USB功能的軟硬體需求。
在USB世界中,連線的兩端有一端為主控端(Master或Host),而另一端則為從屬端(Slave)或裝置端(Device)。以手機而言,電腦通常具主控端的功能,而手機則是裝置端。當裝置首次用USB連接到主控端系統時,會先進行裝置列舉(Enumeration)的處理程序,此程序剛開始時,電腦的主控端會先要求周邊裝置表明身分,每個USB裝置都必須要有自己的供應商識別碼(Vendor ID)和產品識別碼(Product ID),接著主控端會尋找已安裝的USB驅動軟體對應到特定裝置。  

最常見的裝置如滑鼠、鍵盤、外接儲存器、隨身碟、相機等,都會採用電腦作業系統中的類別驅動程式(Class Drivers)。若為新裝置或罕見裝置,首次連線時則配合產品附帶的光碟片,或由裝置本身的記憶體中,下載類別驅動程式。這些驅動程式能讓對應的裝置運作,並讓主控端的中央處理器能進行各項應用及操作,當裝置端與主控端的連線正確時,就可進行資料傳輸與通訊等功能。  

透過分封式通訊協定與電腦相連  

裝置的通訊是透過USB獨有的通訊協定進行,在協定中已訂定每個傳輸封包長度為512個位元組,因此傳輸較大資料時要分成多個封包傳送。每個封包內含封包標頭(Header)標示封包的訊息內容,封包尾端則有CRC資訊確認封包的正確性。接收端在正確收到封包後會回應ACK(Acknowledgment)給傳送端(圖1)。

圖1 USB連續傳送之訊框

此外,每隔125微訊框就會傳送訊框起始(SOF)的封包,以維持匯流排的時序。USB理論上最大頻寬是每個微訊框可允許十三個連續封包傳送,相當於每秒53,248,000位元組的傳輸速率。這樣的頻寬是否足夠須視手機執行的應用種類而定。對任何可能會連接電腦的手機而言,這種分封式通訊協定,讓USB成為此系統中理想的通訊協定。  

當USB裝置嘗試尋找已安裝的驅動程式時,很明顯會需要軟硬體整合設計,這些設計是流暢、精心規畫過的程序,或是艱澀難懂的程序,必須以設計人員如何設計為主,而利用類別驅動程式為確保流暢及簡潔解決方案的一種方式,因此類別驅動程式在USB系統中是很重要的一環。目前常見的USB裝置類別包含人機介面裝置(HID),如滑鼠、鍵盤及其他控制器;另外還有儲存裝置如磁碟機、MP3播放器、通訊裝置的數據機與網路卡、音訊、視訊、及照相機和掃描器等靜態影像裝置。乍看之下上述內容似乎不符合手機應用,實際上這些驅動程式所具備的功能,比字面上名稱還要多。如微軟就利用了靜態影像類別(Still Image Class),來設計新的媒體傳輸通訊協定(MTP)類別。而HID類別可用於連接手機與全球衛星定位系統(GPS)地圖軟體的介面,如此一來就不用重新設計專屬的驅動程式。  

雖然建置類別驅動程式就能達到的功能使用,有些公司仍會嘗試自行開發專屬的驅動程式,或委託其他設計公司開發。但利用既有類別驅動程式的優勢在於,將可減少設計風險、成本、時程、除錯及複雜度等問題。  

複合式設計讓USB使用領域更寬  

缺乏善用USB複合裝置(USB Composite Devices)的觀念,成為當前手機市場最受關注的問題。一般USB複合裝置會包含各自單獨或共同運作的數個介面,如Maxtor推出的OneTouch硬碟備分系統,即是USB複合裝置常見的應用案例,該裝置包含一組HID介面,利用單一按鈕就可以啟動備分程式。因為電腦與磁碟機能同時運作的因素,用戶使用電腦時就不需於按鈕與硬碟機之間來回切換。  

若手機中的多功能也具備類似的同時運作效能,就能大幅提升目前手機的運作能力。  

另外,手機於設計時,提供給使用者設定手機數據機的操作模式不能太複雜,否則容易讓使用者產生困擾與混淆,以Motorola手機如何更改手機USB數據機的設定指令為例(圖2),雖然文字描述清楚,但對使用者來說,要進行設定時仍會不清楚其指令設定的流程。而複合裝置的驅動程式設計得宜,手機廠商就能設計出可同時啟用多種功能的手機產品,對複合裝置而言,使用者就不需在層層選單下尋找開啟功能的選項,因為它們會同時被啟動。

圖2 Motorola手機設定數據機連線的實際操作指令

描述元掌握裝置設定  

設計複合裝置,必須先了解USB的描述元(Descriptor)。主控端從USB裝置讀取的第一個描述元稱為裝置描述元,它是一組能讓主控端辨識裝置的資料結構,包含各USB裝置中獨有的Vendor ID /Product ID;此資料結構還包含下一層級中設定描述元的個數(圖3)。

圖3 多介面之裝置描述元

裝置中的多個設定描述元,包含了多個不同的設定,主控端可從中選擇採用。某裝置可能擁有高功率設定模式做為電池充電用,或低功率設定模式以相容於鍵盤控制和PC卡USB連接埠;而攝影機可能具備高速USB所需的高頻寬設定,及全速USB所需的低解析度設定模式,每種配置模式都包含一個或多個介面,因此多個設定模式的建立能力和多個介面的建立能力無關。  

USB 2.0的規範中遺漏了很重要的一層,原USB 2.0規範沒有提供任何將多個介面群組成一個較大單元的機制。就電視周邊而言,可能具備能調整亮度與對比控制的視訊使用者介面及音量控制的音訊使用者介面。2003年USB-IF採用ECN(Engineering Change Notice)方式增加了新的描述元型態,讓這類介面關連(Interface Association),或微軟所稱介面匯集(Interface Collection)功能得以運作。  

規範層級中的下一級為介面描述元(Interface Descriptor),其中包含介面會用到的端點(Endpoints)與類別碼(Class Code)。視窗的裝置管理員工具中,每個介面描述元顯示成各自單獨的裝置,當主控端看到一個複合裝置時,它就會載入複合裝置的驅動程式,就像虛擬集線器(Hub)的運作一樣,將每個介面配上一個裝置驅動程式,結果就像是在一個產品中,有許多單獨裝置在其中運作。  

每個介面的運作就跟使用者預期的功能一樣,數據機提供數據連線、大量儲存裝置介面與Windows系統的磁碟機相同、攝影機介面也等同其他網路攝影機的使用。如此一來就可提供多介面、多功能選項,使用者也不用被強迫要記得更改裝置模式時的繁瑣按鍵操作。  

了解裝置需求 避免複合設計衝突  

但複合裝置也有缺點,在多數獨立式的USB晶片中,每個端點都有專屬的緩衝記憶體可存取進出資料,由於使用緩衝記憶體即表示會增加成本,因此可用的端點個數便會受到限制。如某些晶片可配置成兩組四緩衝的端點,或四組雙緩衝的端點,且此裝置若要同時支援大量儲存功能與RNDIS,就須用上所有可用的端點,因此其他市面裝置,可用的緩衝空間就更少。但較新的USB晶片則可具備高達十六組端點,足夠讓大量儲存裝置、RNDIS、數據機、網路攝影機介面等功能同時啟用,因此設計人員在評估手機中所需的複合功能時,也須了解該裝置的端點需求。  

設計複合裝置的另一項挑戰,就是支援主控端與裝置硬體的作業系統。微軟在Windows CE Embedded 6.0中增加了複合裝置驅動程式,但新版的Windows Mobile尚未提供支援,因此在裝置端要增加複合裝置的支援,會牽涉到一些重要的更動,且細部上具備一定困難度。所以在複合裝置中的所有介面,都必須要處理全域事件,這表示其須要管理全域事件的起迄程序,如USB Reset或主控端送給裝置設定命令SET_CONFIGURATON的程序,這類命令可能須要送給三個或多個驅動程式,非一般系統中送給單一驅動程式即可。  

儘管有上述挑戰,當USB具備的能力不再是單純的資料傳輸,就可成為手機拓撲中十分重要的技術。越來越多的功能將加到行動裝置中,但是消費者絕不會為了要使用這些新功能,去接受更複雜的系統選單;因此希望設計人員必須能為消費者設想周到,發展更有效的技術解決方案。  

(本文作者任職於賽普拉斯半導體)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!