微軟制訂了一套名為媒體傳輸協議(MTP)的新USB類別,希望協助Windows CE設備與Apple iPod產品系列匹敵。MTP協議與MSC的主要差異在於通信的層次、低階傳輸協議及設備控制的層級。本文將討論MTP協議的細節、MSC與MTP之間的 異同之處,並介紹一些MTP傳輸範例.
安全地傳送數字內容不是一件容易的事,為使用者開發一套簡化操作的底層技術就更加困難。眾多從事創作與傳送數字音頻及視頻內容的廠商現在正面臨這項重大挑 戰。微軟為新一代掌上設備開發了一套具備豐富功能的用戶界面,現已推廣一個新的傳輸協議——媒體傳輸協議(Media Transfer Protocol),簡稱MTP。
數字版權管理(DRM)機制是用來保護有版權或付費的影音內容,這 對於消費性掌上產品市場而言相當重要。由於欠缺數字內容傳送的控制技術,內容供貨商多半不願意發行如電影這類數字內容。若能開發出適合的保護協議,內容供 貨商會樂於將其知識產權加以數字化,微軟表示其MTP正是目前所需的保護協議。
MTP采用分層化設計
MTP與現今大多數的通信協議層次相似,都采用分層化設計。我們將 MTP協議分成三層:物理層(Physical Layer)、傳輸層(Transport Layer)以及指令層(Command Layer)。這些功能層有別於OSI模式的前三個層面,但其概念是相同的。MTP所用的數據傳輸層是Picture Transfer Protocol(PTP)規格。其中許多指令也是PTP指令,並可通過不同廠商的PTP延伸自行擴充。
物理層
需要註意的是,就物理層的層面而言,PTP與MTP是相同的,PTP與MTP在此層中可互通運用。本文將全文使用MTP。
USB設備通過端點與主控端進行通信。一個USB端點對應一個主控 端獨立信道。每個設備需要一個特別的雙向端點,即控制端點,其代號為端點0。主控端會利用這個端點來控制設備並判斷其各項特性。其他端點皆為單向信道,具 備獨立排序與流量控制功能。MTP設備包含提供以下通信信道的四個端點:
◆ 主控端的Data OUT(海量數據輸出端點)
◆ 主控端的Data IN(海量數據輸入端點)
◆ 主控端的Commands(requests) OUT(共享控制端點:EP0)
◆ 傳送至主控端的Events IN(中斷輸入端點)
IN與OUT代表USB設備中的數據傳送方向。USB是一種以主控端為中心的通信協議;所有IN的數據流量都會流向主控端,而OUT的數據流量皆流向設備端。
傳輸層
MTP的數據傳輸層源自於PTP(USB Still Image Class)。USB Still Image Class規格了指令如何通過PTP進行傳輸、如何響應指令、如何中止傳輸,以及指令如何進行格式化。它並沒有規格指令本身,我們將在下面探討指令。
USB傳輸狀態結構有三個主要狀態:指令狀態(Command Phase)、數據狀態(Data Phase)以及響應狀態(Response Phase)。主控端始終通過數據線激活指令狀態。指令狀態可能會持續多個數據包(尤其是較舊的USB 1.1設備),但所有被定義的指令皆小於64位。
在指令狀態中,主控端會傳送一個單一指令到設備端。這些送出的指令會裝在有固定格式的存儲器(Containers)中,如表1所示。
如果指令有一個數據狀態,IN或OUT數據狀態就會緊隨在指令狀態 之後。傳送至存儲器中的數據屬於Container Type 2,而非指令區塊的Container Type 1。最後,設備發出一個響應信號,顯示指令的執行結果。響應編碼與指令有關連,它們通常含有指令所有預期的結果。例如,允許響應 GetObjectHandles出現超過10種可能的響應編碼,其中包括OK以及Store_Not_Available。
指令
PTP與MTP將設備中大部分元素視為對象。日常生活中用戶使用設備的大多數指令都會涉及對象。
通信協議運作流程
觀察樣本數據流量的內容,很容易看出通信協議的運作流程。圖4的CATC流程圖顯示在主控端與設備之間激活通信的過程。
主控端激活所有標示為OUT的傳輸,設備端則傳送所有標示為IN的數據。傳輸時全部采用解碼數據。例如,Transfer35的數據包含在Transaction230776中。
Transfer35:這裏可以看到存儲器實際運作的狀況。長度字段(0x10/16小數)從LSB傳送至MSB,之後有類型(Command=1)及指令碼(OpenSession)。MTP執行ID為0,顯示這是聯機中的第一項傳輸。
Transfer36:結束一項傳輸,顯示主控端成功完成傳輸(Code=OK)。
Transfer37:主控端要求設備中存儲元素清單(GetStorageIDs)。例如,附有擴充卡的Palm Pilot可能有兩個元素,一個支持主存儲器,另一個支持擴充卡。
Transfer38:這是數據存儲器的第一個範例。設備響應它有一個單一存儲元素,標示為0x1(邏輯)與0x1(物理)。這個指令完全編碼如表3所示。
Transfer39:以一個OK指令碼關閉Transaction1。
Transfer40:開始下一項MTP傳輸。
MTP添加延伸技術 擴充PTP規格
我們用了大量篇幅介紹MTP與PTP的共同點,因為MTP需要70%至80%的執行工作,但MTP會在大大小小的層面上提升PTP。在通信協議上進行的小規模改良,會對功能產生極大的影響。
MTP增加了許多以各種新方式定義的新對象。這種設計可為各個播放清單提供支持,這些播放清單是任何MP3或媒體播放裝置的重要關鍵。MTP也增加了對Palm這類PDA設備的支持,可加入日歷、聯系人及群組對象等功能。當然,MTP也加入了對影像對象的支持。
通過加入特定的數字版權管理(DRM)屬性,包括DRM狀態、URL(在授權權限過期時,讓DRM可以要求付費)、使用次數和其他相關屬性,讓產品更容易加入數字版權管理的支持,MTP可讓DRM的支持功能更容易執行。
MTP還添加了許多延伸技術,使數據處理更加容易。它擴充了PTP 規格,因此可傳輸大型(超過4GB)的文件。它也讓存儲器與數據被分割成不同的USB數據包。這樣可以使USB芯片(包括Cypress EZ-USB FX2LP與EZ-USB SX2系列產品)能更有效率地處理數據包。
增強版MTP讓主控端與MTP外圍設備緊密結合
微軟在基本MTP結構中加入一系列優化設計,借此提升在 Windows操作系統中使用MTP設備的效果。如果您是一臺設備(Resopnder),這些功能已包含在微軟的免版稅授權範圍內。若您是主控端 (Initiator),這些“Enhanced Initiator”功能的授權屬於基本功能之外,您必須與微軟公司洽談授權合約。
增強版MTP的目的是讓主控端能與MTP外圍設備緊密結合,獲得更好的終端用戶體驗。許多增強版MTP功能的目的是一次處理多個對象,從而提高同步性能。
法律問題
如果用戶從微軟網站下載MTP規格,就會發現說明書的前三頁是終端用戶授權協議(End User License Agreement,EULA)。建議用戶在開始任何MTP研發工作前,最好請律師詳讀這份授權書。EULA的重點包括:
◆ 基本MTP規格可免費使用:“微軟授予您以下有限的、非獨家、全球性、免版稅、不可讓渡、不可轉讓、不可再授權的使用權限。”
◆ “Enhanced Initiator”功能不在此授權範圍之內。“本協議並未授予您在解決方案中運行“Enhanced Initiator”功能或此規格中所述功能的權限。”
◆ 必須履行整套規格:“您在解決方案中的工具設計,必須遵從整套規格。”
為保護數字內容版權提出對策
追根究底,制定另一種傳輸規範的根本標準還是終端用戶的需求。面對消費性市場要求簡單、多功能的掌上產品的壓力,以及內容創作業界要求妥善保護數字內容版權的呼聲,微軟正致力解決這種兩頭燒的問題。
為了讓雙方都能滿意,微軟提出媒體傳輸協議。技術人員須了解底層技術,方能發現滿足顧客的產品特性和優勢。因此,雖然學習新的通信協議可能不會是件簡單的事,但之後消費者必然會感謝您的努力。