| USB是一種成功的點(diǎn)對(duì)點(diǎn)連接接口,但通過(guò)IP實(shí)現(xiàn)USB則是項(xiàng)挑戰(zhàn)性的工作。 要 點(diǎn) ●設(shè)計(jì)師成功地將 USB(通用串行總線)用于連接其它通信技術(shù); ●在任何項(xiàng)目中,不明確的含義都是造成錯(cuò)誤和損失時(shí)間的根源; ●一些 USBOIP(互聯(lián)網(wǎng)協(xié)議上工作的 USB)實(shí)現(xiàn)可以使多臺(tái)主控計(jì)算機(jī)串行共享一臺(tái)設(shè)備。 2005年的 USBOIP(互聯(lián)網(wǎng)協(xié)議上工作的通用串行總線)親自動(dòng)手項(xiàng)目探索的是 USB 設(shè)備能在網(wǎng)絡(luò)上工作需要什么條件。該項(xiàng)目試圖激發(fā)對(duì)拓展 USB 設(shè)備功能新方法的興趣與考慮。與其他所有親自動(dòng)手項(xiàng)目一樣,本項(xiàng)目花了數(shù)月時(shí)間進(jìn)行研究、規(guī)劃和實(shí)現(xiàn)。最新推出的無(wú)線 USB 規(guī)范在項(xiàng)目進(jìn)行的大部分時(shí)間中尚未可行,因此對(duì)我們的工作沒(méi)有實(shí)質(zhì)影響。
一個(gè)由七家計(jì)算機(jī)與電信公司組成的聯(lián)盟在 1995 年正式開發(fā)并推出了 USB 規(guī)范。盡管USB 最初的設(shè)計(jì)目標(biāo)是連接計(jì)算機(jī)與電信設(shè)備,但它最終卻成了臺(tái)式機(jī)、外設(shè)與很多消費(fèi)電子產(chǎn)品的通用總線。根據(jù)USB 工具論壇的數(shù)據(jù),今天,全世界有超過(guò) 20 億個(gè)有線 USB 連接。USB 已經(jīng)成為非常成功的即插即用工具,現(xiàn)在亦有通過(guò)USB將計(jì)算機(jī)與實(shí)現(xiàn)其他通信技術(shù)的設(shè)備相連接的,如 USB 轉(zhuǎn)串行口 、USB 轉(zhuǎn)以太網(wǎng),以及 USB 轉(zhuǎn) 802.11 適配器。
我們?cè)?jīng)在 EDN 的一個(gè)親自動(dòng)手項(xiàng)目中,在帶 USB 接口的任天堂 Gameboy Color 之間建立了專有的游戲鏈接接口(參考文獻(xiàn) 1)。該項(xiàng)目的目標(biāo)是證明設(shè)計(jì)師可以用新奇的方法使用普通市售裝置,在本例中,將為游戲設(shè)計(jì)的手持設(shè)備用作一個(gè)重要的商務(wù)與工程平臺(tái)。對(duì)于將 Gameboy 用作便攜平臺(tái)(包括低成本醫(yī)療設(shè)備)的設(shè)計(jì),讀者們給出了很多反饋信息。
本次親自動(dòng)手項(xiàng)目的最初概念是讓一個(gè) USB 主機(jī)通過(guò)一個(gè)無(wú)線網(wǎng)絡(luò)連接,訪問(wèn)一個(gè)既有的 USB 設(shè)備,該 USB 設(shè)備可以正常工作,甚至覺(jué)察不到有網(wǎng)絡(luò)連接的存在(見(jiàn)附文“USB 術(shù)語(yǔ)”)。為了讓 USB 設(shè)備能通過(guò)網(wǎng)絡(luò)進(jìn)行連接,用戶可以將 USB 設(shè)備插入到一個(gè)小盒子中,該小盒子作為本地主控端和網(wǎng)絡(luò)適配器,管理網(wǎng)絡(luò)上與主控計(jì)算機(jī)的交互(圖 1)。在主控計(jì)算機(jī)上,可以對(duì) USB 系統(tǒng)軟件進(jìn)行擴(kuò)展,使它通過(guò)網(wǎng)絡(luò)發(fā)送和接收 USB 事項(xiàng),而不是通過(guò)缺省的 PCI 總線。擴(kuò)展系統(tǒng)軟件時(shí),要讓 USB 的類驅(qū)動(dòng)程序察覺(jué)不到變化,這是可以做到的。最后一點(diǎn)很關(guān)鍵,即仍具備支持現(xiàn)有 USB 設(shè)備的能力。 
這種安排與適配器不同(如 USB 轉(zhuǎn) 802.11 的適配器),它是通過(guò) USB 設(shè)備提供與主系統(tǒng)的無(wú)線連網(wǎng)能力。在這種情況下,適配器是僅連到主控制器上的一個(gè) USB 設(shè)備(圖 2)。因此,這些設(shè)備用 USB 端口增加了對(duì)主控制器的連接能力,而不是對(duì)其他 USB 設(shè)備。 
EDN 認(rèn)為,無(wú)線 USB 的親自動(dòng)手項(xiàng)目過(guò)于雄心勃勃了,因此我們將項(xiàng)目范圍減小,使其能在有線網(wǎng)絡(luò)連接上建立一個(gè) USB 連接。我們打算先在有線連接上完成一個(gè) USB 連接,然后再對(duì)付無(wú)線連接增加的復(fù)雜性。因此這個(gè)改變是可以接受的。
為減少項(xiàng)目的復(fù)雜性,項(xiàng)目的目標(biāo)被定為演示通過(guò)網(wǎng)絡(luò)進(jìn)行的一次成功的 USB 會(huì)話。項(xiàng)目的時(shí)間表還是相當(dāng)緊張的(畢竟這不是一個(gè)全職工作。)因此,我們并不打算制造一個(gè)可以量產(chǎn)的演示方案,或期待有最高的性能。為節(jié)省時(shí)間,我們決定避免為項(xiàng)目制作物理元件,而使用可以支持該項(xiàng)目的市售處理器與電路板。
所需電路板要有能支持至少一個(gè) USB 2.0 設(shè)備連接的軟、硬件,還要求能與我們辦公室的網(wǎng)絡(luò)建立連接和共同工作。這樣,我們能把注意力集中在為主控計(jì)算機(jī)和 USB 服務(wù)器上的 USB 系統(tǒng)軟件開發(fā)新的總線驅(qū)動(dòng)程序,以驗(yàn)證該項(xiàng)目概念(圖 3)。最后,Atmel公司 為我們提供了一塊 AT91RM9200-EK 評(píng)估板,上面有本項(xiàng)目使用的 ARM9 處理器,但收到它以前我們已經(jīng)選擇了原用的處理器和電路板,而且損失了項(xiàng)目不少時(shí)間。  不明確的含義
與許多工程項(xiàng)目一樣,這次的親自動(dòng)手項(xiàng)目也受制于許多模棱兩可的含義所造成的錯(cuò)誤假設(shè)。出現(xiàn)的第一個(gè)“冷不防”問(wèn)題起因于 USB 連接的電氣接口與邏輯接口是非對(duì)稱的。在向 USB 芯片供應(yīng)商采購(gòu)為完成本項(xiàng)目所用芯片時(shí),我們只討論了項(xiàng)目在功能級(jí)上實(shí)現(xiàn)驗(yàn)證的問(wèn)題。
在這種情況下,目標(biāo)電路板不僅要支持至網(wǎng)絡(luò)的以太網(wǎng)連接,而且還要作為連接到 USB 設(shè)備的一個(gè)主機(jī)。暗含的假設(shè)就是目標(biāo)電路板會(huì)帶有一個(gè) USB 主控端口。經(jīng)過(guò)與多家芯片供應(yīng)商討論之后,我們確定了一個(gè)目標(biāo)處理器和開發(fā)電路板,它們既支持 USB,也支持以太網(wǎng),但芯片與電路板都處于發(fā)布前的最后開發(fā)階段。這個(gè)延遲看來(lái)對(duì)項(xiàng)目進(jìn)度沒(méi)有明顯的風(fēng)險(xiǎn),而且也無(wú) 其他的候選部件,因此,我們決定選用這種很有前途的目標(biāo)處理器與電路板。
目標(biāo)處理器是一個(gè)基于 ARM7 的器件。這種有希望的器件與電路板有一個(gè)好處,即它們已經(jīng)有了小型實(shí)時(shí)操作系統(tǒng)的端口,我們可以使用一個(gè)簡(jiǎn)單的操作系統(tǒng)架構(gòu),簡(jiǎn)化項(xiàng)目的工作。雖然對(duì)多項(xiàng)目的應(yīng)用開發(fā)者來(lái)說(shuō),操作系統(tǒng)可以對(duì)其下的硬件作抽象處理來(lái)提高生產(chǎn)率。但這一抽象對(duì)本項(xiàng)目沒(méi)有幫助,因?yàn)槲覀兪且淮涡缘墓ぷ?并且工作層面要低于應(yīng)用開發(fā)者日常所進(jìn)行的。實(shí)際在本例中,若采用龐大的操作系統(tǒng)會(huì)增加項(xiàng)目的復(fù)雜性,因?yàn)槲覀冃枰ㄙM(fèi)時(shí)間來(lái)學(xué)習(xí)它的界面和架構(gòu)。
芯片與電路板的進(jìn)度均按部就班地進(jìn)行,但是當(dāng)我們?cè)陔娐钒褰回浨安榭葱缕骷臄?shù)據(jù)表時(shí)卻冷不防地發(fā)現(xiàn)了問(wèn)題。雖然新芯片能在同一個(gè)器件上同時(shí)支持以太網(wǎng)和 USB,但它有 USB 設(shè)備端口,而沒(méi)有 USB 主控端口。這會(huì)造成通信錯(cuò)誤,因?yàn)?USB 設(shè)備端口可以連接到 USB 主控端口,但不能連接到其他的 USB 設(shè)備端口。于是我們飛快地確定了一個(gè)新的目標(biāo): Atmel公司的 AT91RM9200EK 評(píng)估套件所含有的基于 ARM9 處理器。
這次改變不僅花費(fèi)了我們幾周時(shí)間,而且也增加了項(xiàng)目的復(fù)雜性。操作系統(tǒng)只有 WindowsCE 或 Linux 可供選擇,因此操作系統(tǒng)架構(gòu)比原先預(yù)計(jì)的更大、更復(fù)雜。我們選擇了 Windows CE,因?yàn)樗歉傻墓ぞ咛准?也因?yàn)槲覀円陧?xiàng)目的臺(tái)式機(jī)部分使用 Windows 對(duì) USB 的支持。這一決定也導(dǎo)致了一個(gè)不利的結(jié)果,即由于我們加州辦公室與法國(guó)技術(shù)支持供應(yīng)商之間存在時(shí)區(qū)的差異,拖長(zhǎng)了我們的調(diào)試過(guò)程。 |