USB應用技術
通用串行總線(Universal Serial Bus,簡稱USB)從誕生后發(fā)展到今天,已將近十年。伴隨著計算機技術的迅猛發(fā)展,USB協(xié)議從1.1過渡到2.0,作為其最重要指標的設備傳輸速度也從1.5Mb/s的低速和12Mb/s的全速提高到如今的480Mb/s的高速。USB作為過去幾年里計算機和嵌入式系統(tǒng)領域中的熱點,推動了計算機外設的飛速發(fā)展。毫無疑問的是,USB已經(jīng)占領了PC和外設的市場;而在未來,USB又將以OTG再次引領計算機外設產(chǎn)業(yè)的發(fā)展方向,同時也將把計算機和嵌入式領域的學術研究帶入更為深入的層次。
圖1 帶有USB接口的PC外設 USB設備開發(fā)技術
1994年11月,以Intel為首的7家公司推出了USB協(xié)議規(guī)范的第一個草案。自從1996年2月USB版本1.0發(fā)布后短短幾年內,USB不光成為了PC主板上的標準接口,而且成為了所有PC外部設備如鍵盤、鼠標、顯示器、打印機、數(shù)碼相機、掃描儀和游戲手柄等與PC相連的標準協(xié)議之一,迅速占領了計算機中低速外部設備的市場,大有取代串口和并口之勢。圖1展示了幾款帶有USB接口的PC外設、數(shù)碼家電和通信產(chǎn)品。
首先,我們總結出USB設備開發(fā)的基本內容:
USB設備作為一個完整的硬件設備,是由硬件和固件兩部分來組成的。其中固件中包括了有關系統(tǒng)配置和CPU的一些設置模塊、USB協(xié)議棧模塊等幾部分。USB總線上的信息有兩種:一種是差模數(shù)據(jù)線上的包;另一種則是有特殊定義的數(shù)據(jù)線的信號,比如復位信號、遠程喚醒信號等等。因此,設備的USB棧就要能夠識別并處理這些不同的信息內容。同時,在上層,這些信息又要被組成各種傳輸?shù)念愋蛠砑右蕴幚?。所以,整個協(xié)議棧的內容是非常龐大的。
一般來說,USB設備在硬件上要由USB的芯片來實現(xiàn)。這個芯片的作用有:管理和實現(xiàn)USB物理層差模信號;提供給連接的端口;電源管理(主要指提供3.3V的電源);以寄存器的形式提供各種端點;提供各種配置和存儲寄存器。因此,固件就是以這些硬件資源為基礎來實現(xiàn)USB的功能。一般的USB芯片都會提供幾個標準的端點,每個端點都支持單一的總線傳輸方式。其中端點0必須支持控制傳輸,而其他的端點則可以支持同步傳輸、批量傳輸或中斷傳輸中的任意一種傳輸方式。管理和使用這些端點,就需要通過相應的控制寄存器、狀態(tài)寄存器、中斷寄存器和數(shù)據(jù)寄存器來實現(xiàn)。其中,控制寄存器用于設置端點的工作模式、啟用端點的功能等;狀態(tài)寄存器用于查詢端點的當前狀態(tài);中斷寄存器則用于設置端點的中斷觸發(fā)和響應功能;數(shù)據(jù)寄存器則是設備與主機交換數(shù)據(jù)用的緩沖區(qū)。合理和有效地使用這些寄存器,是編好USB協(xié)議棧的關鍵。
簡而言之,USB的協(xié)議棧以設備端點的使用和管理作為基礎和核心。而在端點的這些寄存器中,對中斷寄存器的管理尤其重要。也因此,編寫USB的中斷服務程序是整個設備端USB固件編寫的主要內容??梢苑譃槿齻€步驟:
USB主機的嵌入式開發(fā)技術
USB主機嵌入式化的必要性
隨著USB應用領域的逐漸擴大,人們希望USB能應用在各種計算機領域中,尤其是在移動數(shù)據(jù)交換等沒有PC的領域中。
非PC應用領域?這正是USB一個致命的弱點。USB的拓撲結構中居于核心地位的是主機(Host),任何一次USB的數(shù)據(jù)傳輸都必須由主機來發(fā)起和控制,所有的USB設備都只能和主機建立連接,任何兩個外設之間或是兩個主機之間無法直接通信。而目前,大量的扮演主機角色的是個人電腦(PC)。因此,我們目前所買到和使用的USB移動設備,都是USB的設備,比如USB的移動硬盤、USB接口的數(shù)碼相機等等。所有這些設備都只能在PC上使用,只能通過PC來進行相互的文件和數(shù)據(jù)交換。沒有了PC,這些設備就“失靈”了(就數(shù)據(jù)交換的功能而言)。
因此,“如何將USB應用到嵌入式領域?如何實現(xiàn)USB點對點的通信?”等問題,開始進入了USB開發(fā)者的討論議程。正是在這種新的需求之下,USB 主機的嵌入式應用成了USB領域新的興奮點。
PC上USB主機的功能與工作原理
USB主機完成的主要功能包括以下5個方面:檢測USB設備的連接和斷開、管理主機和設備之間的標準控制管道、管理主機和設備之間的數(shù)據(jù)流、收集設備的狀態(tài)和統(tǒng)計總線的活動、控制和管理主機控制器與設備之間的電氣接口。
剖析PC上USB主機部分的結構,可以看到,PC主板上一般都有兩個USB端口,并由一個USB主機接口芯片控制;這個USB主機接口芯片又通過PCI總線,與CPU進行通信;此外,芯片附近還有一些電源管理的部分,用于對USB外設進行電源的供給和管理。這是其硬件部分。軟件部分,很顯然,就是PC的操作系統(tǒng)所能夠提供的各種驅動程序和應用程序支持,具體來說,包括三部分:USB主控制器驅動程序,其負責CPU與USB主機接口芯片的通訊,處理底層USB包的發(fā)送與接收;USB核心驅動程序,這部分是USB底層與用戶程序之間的橋梁,負責解釋用戶程序中對USB的各種操作命令,并解碼后發(fā)送給底層驅動;USB用戶程序和類協(xié)議驅動程序,這部分就是上層的應用層,主要包括操作系統(tǒng)提供給用戶的API、以及用戶自己定義的對USB設備的各種操作,比如讀取USB設備某幾個特定的數(shù)據(jù)等等。
嵌入式USB主機系統(tǒng)的設計內容
毒俟copy;程,獲取USB設備的描述符并加以利用等。
移動USB——USB OTG的發(fā)展
USB On-The-Go,顧名思義,是USB應用在便攜式移動設備領域中,因此,我們姑且將其翻譯為“便攜式USB”(或者“移動USB”),簡記成USB OTG。OTG 1.0作為USB 2.0的補充協(xié)議,基本上符合USB 2.0規(guī)范。但是,有所不同的是符合USB OTG的設備完全拋開了PC,既可以作為主機,也可以作為外設,而與另一個OTG設備直接實現(xiàn)點對點(Pear to Pear)通訊。因此,這類OTG設備也被稱為是雙角色設備(Dual-Role Device,簡稱為DRD),并能夠根據(jù)接入設備的特性和數(shù)據(jù)傳輸過程中的情況,自動切換為主機或是設備。需要
評論