1 綜述 移動數(shù)據(jù)交換和存儲,是近年來IT行業(yè)的熱點。如今,各式各樣的移動存儲有如雨后春筍般出現(xiàn)。從最早的存儲量為幾K、能存儲用戶個人信息的USB小鑰匙,到容量可與PC硬盤媲美的USB活動硬盤,再到以Flash作為存儲介質(zhì)的真正能夠“移動”起來的USB閃盤和優(yōu)盤,直到今天大量的PC外設(shè)和多媒體家電中大量使用的數(shù)據(jù)存儲器……可見,數(shù)據(jù)交換的可移動性和便捷性是整個數(shù)字化時代大廈的根基。移動數(shù)據(jù)交換刺激了IT業(yè)的發(fā)展,便利了人們的生活。 與此同時,我們還應(yīng)注意到這樣一個問題:移動數(shù)據(jù)交換業(yè),是伴隨著通用串行總線(Universal Serial Bus,簡稱為USB)的成熟而興起的。USB既是數(shù)據(jù)交換的媒介,又是其核心?梢赃@樣說,沒有USB,就不會有移動數(shù)據(jù)業(yè)務(wù)如此迅猛地發(fā)展。 2 為什么要開發(fā)嵌入式的USB主機? 從USB問世,到協(xié)議規(guī)范2.0版本,USB在不斷自我完善,并走向成熟。從普通計算機用戶,計算機工程師,到硬件芯片生產(chǎn)廠商,都已經(jīng)完全認可了USB。廠商對于USB的硬件和軟件支持的也越來越完備,現(xiàn)在開發(fā)一 個USB外設(shè)產(chǎn)品,所需要投入的成本和時間大大降低了,幾年前是沒有辦法做到這一點的。但是,隨著USB應(yīng)用領(lǐng)域的逐漸擴大,人們對于USB的期望也越來越高,希望USB能應(yīng)用在各種計算機領(lǐng)域中,尤其是在移動數(shù)據(jù)領(lǐng)域中,希望能通過PDA等移動設(shè)備直接和USB外設(shè)通信,使得USB能應(yīng)用在沒有PC的領(lǐng)域中。 非PC應(yīng)用領(lǐng)域? 這正是USB一個致命的弱點。USB的拓撲結(jié)構(gòu)中居于核心地位的是Host(也稱為主機),任何一次USB的數(shù)據(jù)傳輸都必須由主機來發(fā)起和控制,所有的USB外設(shè)都只能和主機建立連接,任何兩個外設(shè)之間或是兩個主機之間無法直接通信。而目前,大量的扮演主機角色的是個人電腦PC。因此,我們目前所買到和使用的USB移動設(shè)備,都是USB的外設(shè)(device),比如USB的移動硬盤、比如USB接口的數(shù)碼相機等等。所有這些設(shè)備都只能在PC上使用,只能通過PC來進行相互的文件和數(shù)據(jù)交換。沒有了PC,這些設(shè)備就“失靈”了(指數(shù)據(jù)交換的功能)。 因此,“如何將USB應(yīng)用到嵌入式領(lǐng)域?如何實現(xiàn)USB點對點的通信?”等問題,開始進入了USB開發(fā)者的討論議程。正是在這種新的需求之下,USB 主機的嵌入式應(yīng)用成了USB領(lǐng)域新的興奮點。 正是在這種背景下,業(yè)界和用戶的需求呼喚USB主機實現(xiàn)嵌入式化,也就是開發(fā)和設(shè)計嵌入式的USB主機。 3 嵌入式USB主機在數(shù)據(jù)存儲和交換中的應(yīng)用 我們來看一幅圖,如圖1所示,這里有3個我們?nèi)粘I钪锌赡芘龅降膱鼍埃?br /> ● 朋友的移動硬盤上有一些好聽得MP3歌曲,我想直接通過我的MP3播放器拷貝過來; ● 想換掉手機,買個PDA,手機里的電話本想直接復(fù)制到PDA中; ● 出門在外,用數(shù)碼相機照了很多漂亮的風(fēng)景,想在身邊的打印機上直接打印出來; …… 這樣的場景我們可能早已夢想著能夠?qū)崿F(xiàn)。圖中的每一個設(shè)備都是一個USB的外設(shè),現(xiàn)在的技術(shù)條件下,我們只能通過PC作為數(shù)碼文件的“交換器”。比如第3中場景,我們首先是把數(shù)碼相機連接到PC上,并且安裝相應(yīng)的驅(qū)動程序和用戶界面,把數(shù)碼相機存儲盤上的內(nèi)容復(fù)制到PC硬盤上。然后,把USB打印機連接到PC。最后,再把照片打印出來。整個過程,很是復(fù)雜,更是不方便。 因此,有了嵌入式的USB主機,那么圖1所示的場景將不再是夢想!這里,需要做的就是在MP3播放器、數(shù)碼相機里嵌入USB主機模塊,使其由傳統(tǒng)的USB外設(shè)成為USB主機,這樣,這些嵌入式的主機就可以直接和移動硬盤、打印機等USB的外設(shè)連接,實現(xiàn)特定的功能。那么,而當我們需要再次把數(shù)碼相機等連接到PC上時,就需要讓其恢復(fù)USB外設(shè)的功能。 可以預(yù)見,嵌入式USB 主機最大的市場和增長點在于移動家電,比如PDA與USB記憶棒傳遞數(shù)據(jù)、MP3之間傳遞歌曲、數(shù)碼相機連接打印機。因此,具有很強的應(yīng)用背景和市場前景。 4 以嵌入式USB主機作為核心的USB On-The-Go USB On-The-Go,顧名思義,是USB應(yīng)用在便攜式移動設(shè)備領(lǐng)域中,因此,我們姑且將其翻譯為“便攜式USB”(或者“移動USB”),簡記成USB OTG。符合USB OTG的設(shè)備完全拋開了PC,既可以作為Host,也可以作為外設(shè),而與另一個OTG設(shè)備直接實現(xiàn)點對點(Pear to Pear)通信。因此,這類OTG設(shè)備也被稱為是雙角色設(shè)備(Dual-Role Device,簡稱為DRD),并能夠根據(jù)接入設(shè)備的特性和數(shù)據(jù)傳輸過程中的情況,自動切換為Host或是外設(shè)。 可見,USB OTG正是符合了圖1所示的場景需求。 我們注意到,USB OTG雖然是具備了更強大的功能,但是其核心仍然是嵌入式USB主機,只不過需要加入一個能夠自動切換角色的功能。而這個新功能的實現(xiàn),就要借助于USB OTG接口芯片的物理層來實現(xiàn)。而且,在很多場合下,不需要實現(xiàn)USB外設(shè)的功能,只需要實現(xiàn)USB主機功能。比如一個工業(yè)數(shù)據(jù)采集的領(lǐng)域中,我們需要使用USB優(yōu)盤作為數(shù)據(jù)存儲的載體,那么就要在項目中實現(xiàn)一個嵌入式的USB主機來采集數(shù)據(jù),并且把數(shù)據(jù)存儲到優(yōu)盤中。這里,這個USB主機就不必實現(xiàn)外設(shè)的功能,因為其根本不用連接到PC。而且,很多USB方案的提供商,在設(shè)計USB OTG時,就是設(shè)計一個嵌入式的USB主機,然后通過軟件實現(xiàn)角色切換的功能。 可以說,嵌入式USB主機,是整個USB系統(tǒng)發(fā)展的未來和趨勢。 5 設(shè)計嵌入式USB主機 傳統(tǒng)意義的USB開發(fā),僅僅是對USB外設(shè)的開發(fā),USB底層驅(qū)動程序和USB主控制器驅(qū)動程序都由Windows等操作系統(tǒng)提供,有關(guān)這些驅(qū)動程序的細節(jié)過程都蒙著一層神秘的面紗。所以,要設(shè)計USB 主機,就須設(shè)計這兩部分驅(qū)動程序,Windows源碼不公開,這些細節(jié)資料就無從得到。 因此,設(shè)計就要遵循USB主機的協(xié)議規(guī)范?梢蚤営[參考文獻。具體的設(shè)計就要包括固件Firmware和硬件兩大部分。 硬件上首先要選擇USB主機的接口芯片,F(xiàn)在比較成熟的有Cypress公司的SL811HS和Philips公司的ISP1161。并且選用一款合適的MCU和MPU來控制。那么這款MCU的選用需要比較講究。因為,整個USB協(xié)議框架是非常復(fù)雜的。那么這就需要MCU具有足夠的RAM,用以處理大量的數(shù)據(jù)緩沖區(qū)、大量的變量、數(shù)據(jù)存儲等等。一般8KB的RAM是最最基本的要求,而且越大越好,當然,小到2K,也可以實現(xiàn)基本功能,但是已經(jīng)非常捉襟見肘了。其次系統(tǒng)要有大量的程序存儲區(qū),一般Flash的需求大概在10~60KB左右。之所以有如此大的范圍,這是因為USB定義很多的類,用以支持不同類型的USB外設(shè)。每一類就有其不同的驅(qū)動程序,因此,設(shè)計的嵌入式USB主機支持的類越多,那么需要的程序空間就越大。有個例子就是,要實現(xiàn)Mass Storage類就需要10K所有的Flash空間。 固件方面,就是要實現(xiàn)完整的USB主機協(xié)議類,包括設(shè)備的上電檢測、設(shè)備重起、分配地址、讀取設(shè)備的各種描述符等基本的操作,更重要的是要實現(xiàn)每一類USB設(shè)備的協(xié)議棧。簡單來說,每一類設(shè)備的協(xié)議棧,就是一個特定的驅(qū)動程序,傳統(tǒng)的做法,我們是在PC上使用WDM來編制驅(qū)動程序。這里,在我們的嵌入式系統(tǒng)的開發(fā)環(huán)境里,我們就要像開發(fā)嵌入式的軟件一樣,可以用C語言、可以用匯編語言等來實現(xiàn)。限于篇幅所限,這里,無法進一步展開。筆者將在以后進一步展開討論。 筆者目前就已經(jīng)設(shè)計出了一款USB主機的演示系統(tǒng),選用的USB主機接口芯片是Cypress公司的SL811HS,MCU選用的是Motorola公司的16位單片機MC68HC912D60A。整個USB主機系統(tǒng)支持的是USB的Mass Storage類,也就是海量存儲類,這一類是USB專門為支持磁盤存儲功能設(shè)計的。因此,現(xiàn)在的結(jié)果是,這個嵌入式的USB主機能夠具有同裝有Windows 2000操作系統(tǒng)的PC一樣的功能,能夠直接對USB的移動存儲設(shè)備進行讀取,能夠自動識別設(shè)備并把設(shè)備配置為標準的磁盤驅(qū)動器,因此能夠直接進行文件的讀取、格式化等一系列操作。為了通用,選用了朗科公司的USB優(yōu)盤作為外設(shè)。目前整個系統(tǒng)可以直接對優(yōu)盤進行操作,讀取優(yōu)盤中的文件、寫文件到優(yōu)盤中,等等。 6 嵌入式USB主機的其他應(yīng)用前景分析 1. 以嵌入式USB主機做為核心的數(shù)據(jù)采集系統(tǒng),可以應(yīng)用在大量工業(yè)和民用領(lǐng)域中,比如城市輕軌鐵路的數(shù)據(jù)采集黑匣子中。中國幅員遼闊,鐵路線縱橫馳騁,如果每輛機車上都安裝一套這樣的“黑匣子”系統(tǒng),那么需求量將是非常大的,同時將帶來很大的經(jīng)濟效益和市場前景。 2. 嵌入式USB 主機作為USB的延伸,國外處于剛剛起步的階段,僅有不多的半導(dǎo)體公司提供接口芯片,還沒有完整的嵌入式USB 主機產(chǎn)品上市。廠家和USB論壇所能提供的Demo也限于依靠嵌入式操作系統(tǒng)WinCE和Linux等。國內(nèi)的研究也剛開始起步。因此,項目研究具有一定的領(lǐng)先和前瞻性。 3. 在開發(fā)USB 主機,編寫底層驅(qū)動程序的同時,注意整個系統(tǒng)的可移植性,使得有關(guān)USB通信的各個任務(wù)模塊化,盡量編寫API。這樣,就可以在不同的操作系統(tǒng)、不同的主控制器CPU上盡量方便的實現(xiàn)USB 主機的功能。這就可以為日后嵌入式USB 主機的產(chǎn)品化和進一步研究打好基礎(chǔ)。這個工作有待進一步完善。 |