應(yīng)用中的嵌入式USB案例分析
USB是一項(xiàng)隨時(shí)準(zhǔn)備改變設(shè)備的技術(shù),這非常類似于改變個(gè)人計(jì)算機(jī)的外設(shè)。2001年,由英特爾公司和微軟公司提出的這項(xiàng)技術(shù),作為IBM PC在20年前推出的一系列接口的替代物,這些接口包括和鍵盤接口、軟盤接口、串口和并行打印接口。當(dāng)然,進(jìn)行這么大規(guī)模的是具有很多合理理由的,因?yàn)槭褂媚切╆惻f的接口具有很多的問題。例如,不記得那又費(fèi)力又容易產(chǎn)生錯(cuò)誤的串口手工配置(包括波特率、比特?cái)?shù)、奇偶校驗(yàn)以及握手等)方法的人們又將如何辦?另外,即便不說該接口的兼容性問題,收發(fā)器所需要的高電壓也是一個(gè)問題,最后還有點(diǎn)對(duì)點(diǎn)連接屬性這個(gè)并非不重要的問題,這種屬性意味著在多種設(shè)備(如打印機(jī)、調(diào)制解調(diào)器和掃描儀)之間共享接口時(shí),則需要使用大量的以及相互之間的手工轉(zhuǎn)換。
不過,從事嵌入式控制研發(fā)者則把上述這些種種限制看作為可實(shí)現(xiàn)更大自由度的手段。通用異步發(fā)射和接收器()是(至今仍是這樣)研發(fā)人員已經(jīng)掌握如何實(shí)現(xiàn)簡易串行連接的一個(gè)非常簡單的器件。雖然在絕大多數(shù)的微控制器架構(gòu)中都集成了,但卻沒有對(duì)專有方案中連續(xù)碼流中所出現(xiàn)的更高級(jí)別的協(xié)議進(jìn)行定義。
相比較,USB串行接口引擎(SIE)的實(shí)現(xiàn)則需要采用比其要替代的多得多的邏輯門。USB協(xié)議詳細(xì)定義了多個(gè)棧層(ISO/OSI),因此需要更復(fù)雜的代碼。更糟糕的是,取決于所要代替的具體接口類型,還需要專用的(OS)驅(qū)動(dòng)器。這就意味著研發(fā)者在能夠開發(fā)更有潛力的總線之前,需要掌握有關(guān)操作系統(tǒng)方面更復(fù)雜的知識(shí)。
在PC領(lǐng)域非常喜歡USB總線的時(shí)候,嵌入式控制領(lǐng)域盡可能地拒絕這一過渡,實(shí)際上這也不奇怪。不過,對(duì)于嵌入式領(lǐng)域來說,USB總線也有一些固有的優(yōu)點(diǎn),特別是在對(duì)于嵌入式控制研發(fā)者具有極大價(jià)值的最新一代閃存微控制器的實(shí)現(xiàn)中。
定義USB總線的主要目的之一是允許操作系統(tǒng)(如Windows)能夠通過改進(jìn)或增加下列機(jī)制來更好地管理通信資源:
1. 只要建立連接(即眾所周知的即插即用),就能自動(dòng)監(jiān)測和配置應(yīng)用;
2. 同步數(shù)據(jù)傳遞,通過允許OS來管理和規(guī)劃事務(wù)、優(yōu)化吞吐率并實(shí)現(xiàn)可靠的高速率來改善性能;
3. 通過對(duì)應(yīng)用進(jìn)行分級(jí)、允許代碼共享和復(fù)用來標(biāo)準(zhǔn)化接口。
圖1:USB外形圖。
圖2:利用串口連接到帶有USB接口的設(shè)備進(jìn)行升級(jí)維護(hù)。
不過,從更接近應(yīng)用的觀點(diǎn)來看,可以獲得以下的關(guān)鍵特性:
1. 低電壓工作;USB總線不需要高于5V標(biāo)準(zhǔn)電壓的高電壓,而數(shù)據(jù)線工作在3.3V的邏輯電壓上。這就使得集成收發(fā)器、省去±12V電源的相關(guān)電路、從而降低總成本以及應(yīng)用的元器件數(shù)量成為可能;
2. 和的絕對(duì)標(biāo)準(zhǔn)化。只有四對(duì)定義好的插頭和插座,具有清楚的應(yīng)用規(guī)則,從而保證了絕對(duì)兼容;
3. 采用同樣的和提供電源,降低了電纜的復(fù)雜度并進(jìn)一步地降低了系統(tǒng)成本;
4. 它具有總線架構(gòu),允許多達(dá)128臺(tái)設(shè)備的同時(shí)連接。
上面所列功能對(duì)于設(shè)備生產(chǎn)來說具有很重要的暗示,即影響成本、空間和時(shí)間,并能激發(fā)設(shè)計(jì)師對(duì)這一連通性的深層技術(shù)進(jìn)行深入研究。
舉例說明
請看真正的設(shè)備應(yīng)用。在本例中,設(shè)備中已經(jīng)裝備有微控制器,而我們希望通過增加一個(gè)通信口,使得安裝人員(或服務(wù)人員)能夠?qū)⑵溥B接到個(gè)人計(jì)算機(jī)或其它便攜設(shè)備()來提升性能或者獲得以下好處:能夠訪問數(shù)據(jù)記錄日志并報(bào)告最近的設(shè)備使用歷史紀(jì)錄,以實(shí)現(xiàn)擔(dān)保和故障診斷;配置(微調(diào))工作參數(shù),以便優(yōu)化操作或使設(shè)備適應(yīng)本地的環(huán)境。
可以從成本和性能上將USB與許多傳統(tǒng)的串口進(jìn)行比較:
1. USB的自動(dòng)檢測和配置是Windows即插即用技術(shù)的一個(gè)組成部分,從而無需進(jìn)行費(fèi)力的和易出錯(cuò)誤的手工設(shè)置連接;
2. 全速USB接口的高數(shù)據(jù)吞吐率(12Mbps),能夠允許比最快的串口高幾個(gè)數(shù)量級(jí)的速度傳輸數(shù)據(jù),從而減少了所需時(shí)間;
3. 所需的低電壓和收發(fā)器的集成使得電路比其它串口更簡單,實(shí)際上降低了總的元器件數(shù)量和應(yīng)用成本;
4. 應(yīng)用上,USB規(guī)范只需識(shí)別單一的、標(biāo)準(zhǔn)的連接器,而且是一個(gè)體積非常小且具魯棒性的組件,而且成本非常低;
5. 同一連接器可以提供電源(5V)到應(yīng)用板(在服務(wù)過程中應(yīng)用可以關(guān)斷),從而簡化了設(shè)計(jì)并進(jìn)一步降低了成本;
6. 標(biāo)準(zhǔn)的接口數(shù)據(jù)庫(以USB行話來說就是眾所周知的“類”)能夠支持代碼復(fù)用,能夠省去成本和客戶的驅(qū)動(dòng)程序的開發(fā)。
USB和閃存:一個(gè)強(qiáng)有力的結(jié)合
現(xiàn)在是我們應(yīng)該注意微控制器市場有什么的時(shí)候了,特別是最新的具有USB接口的閃存微控制器,現(xiàn)在可以充分地欣賞植入U(xiǎn)SB的各種好處了。實(shí)際上,如果將研究限制在對(duì)現(xiàn)有技術(shù)進(jìn)行修補(bǔ)的范圍,即用一個(gè)USB代替一個(gè)RS-232收發(fā)器--實(shí)現(xiàn)起來非常容易,但該方案的成本較高。單機(jī)USB接口組件,甚至是最便宜的,則只能在成本上與所替代的收發(fā)器競爭。且仍需使用UART(通常被集成在微控制器中),它將成為整個(gè)系統(tǒng)的瓶頸,這將無法實(shí)現(xiàn)USB總線所承諾的高性能。
圖3:單芯片USB示意圖。
一個(gè)新的微控制器提供的一個(gè)較好的方案時(shí)使用本地USB接口。將USB接口和收發(fā)器直接與微控制器內(nèi)核集成到一起,可以使應(yīng)用能夠充分利用總線潛在的各項(xiàng)優(yōu)點(diǎn)(使用全速.0,數(shù)據(jù)率可高達(dá)1MB以上)。由于在片上有大量的閃存程序存儲(chǔ)器,微控制器僅利用一個(gè)單芯片USB方案就可以管理整個(gè)應(yīng)用,從而使得元器件數(shù)大大減少并降低了實(shí)際系統(tǒng)成本。閃存微控制器給設(shè)計(jì)師還提供了額外的自由度,可以實(shí)現(xiàn)維護(hù)現(xiàn)場升級(jí)、錯(cuò)誤修復(fù)、性能提升,甚至是僅僅通過裝配線的末端的實(shí)時(shí)編程和配置應(yīng)用來實(shí)現(xiàn)制造優(yōu)化。
黑匣子
并非所有的閃存處理器都是一樣的。下面的關(guān)鍵性能可能帶來極大的差別:自寫能力,持久性和保持力。持久性指的是存儲(chǔ)器能夠使用的擦寫周期數(shù),而保持力則指存儲(chǔ)器保存內(nèi)容的年數(shù)。這些都是閃存技術(shù)的基本魯棒性參數(shù),因此也決定了應(yīng)用的可靠性。在另一端的自寫能力指的是微控制器在執(zhí)行代碼(從另一端)的同時(shí)修改其自身程序存儲(chǔ)器(或者是其一部分)中內(nèi)容的能力。在可用USB的微控制器的情況下,該能力是相當(dāng)?shù)膶?shí)用并為大量的各種可能性敞開了大門。
圖4:USB快速啟動(dòng)加載與黑匣子。
例如,相同的USB口可以被用來作為一個(gè)升級(jí)設(shè)備固件的手段,而不再需要利用專用的外部編程設(shè)備。一小段通常可以被視作為引導(dǎo)加載程序的代碼,就可以利用該功能,而可以作為獨(dú)立于應(yīng)用程序的一個(gè)普通的程序塊來開發(fā)。
閃存USB微控制器制造商通常按標(biāo)準(zhǔn)方案以黑匣子的方式來提供引導(dǎo)加載代碼程序,經(jīng)常用于提供完整的圖形用戶接口的小型(獨(dú)立于操作系統(tǒng))應(yīng)用。
圖5:基本的啟動(dòng)加載GUI的界面實(shí)例。
使用引導(dǎo)加載(通過連接一個(gè)USB口到PC)使得工作人員可以升級(jí)應(yīng)用代碼或升級(jí)應(yīng)用固件所用的數(shù)據(jù)。這樣的例子包括升級(jí)文本信息,包括參數(shù)的用來定義應(yīng)用的菜單和操作表。同時(shí),還可以從應(yīng)用中讀取數(shù)據(jù)(從內(nèi)部的數(shù)據(jù)中讀取,或者從閃存程序存儲(chǔ)器中讀取)。該功能為上載記錄信息提供了一種方法--即為絕大部分的基本故障診斷工具所用的并行訪問方法。由于該引導(dǎo)加載的黑匣子方案,上述所有這些都可以實(shí)現(xiàn),而無需掌握有關(guān)USB總線的更多知識(shí),或?qū)?yīng)用代碼的任何一部分進(jìn)行重寫。
USB的更先進(jìn)的應(yīng)用
之前,設(shè)計(jì)專家已經(jīng)花費(fèi)了很多時(shí)間,想開發(fā)USB總線更深層的能力,以提供能夠從USB獲取更多好處的能力。事實(shí)上,USB總線可以進(jìn)行各種選擇,來提供各種不同級(jí)別的,或者結(jié)合這些選擇來實(shí)現(xiàn)更多的功能。
雖然進(jìn)一步分析嵌入式USB的所有可能性不屬于本文的范疇,但這里還是給出一些建議:
1. 人機(jī)接口級(jí)方案(HID)——提供簡單的接口,而且不需要操作系統(tǒng)的專用驅(qū)動(dòng)器,可用于比特率相對(duì)較低(大約相當(dāng)于9,600波特率的串口)的應(yīng)用;
2. 通信設(shè)備級(jí)方案(CDC)——為串口競用提供最直接的遷移通道,并提供比傳統(tǒng)串口更高的比特率,但只能在一定的操作系統(tǒng)(如Windows 2K和Windows XP)上才能實(shí)現(xiàn);
3. 海量存儲(chǔ)級(jí)方案(MSC)——使應(yīng)用就像作為存儲(chǔ)設(shè)備(驅(qū)動(dòng))的PC主機(jī)一樣,但代價(jià)是復(fù)雜性的增加;
4. 客戶定制級(jí)方案——為程序員提供了最大的靈活度,但代價(jià)也是成本增加--需要為需求開發(fā)操作系統(tǒng)專用驅(qū)動(dòng)程序。
本文小結(jié)
圖6:USB固件堆棧和解決方案分類。
所關(guān)注的是成本和復(fù)雜度的增加放慢了USB在設(shè)備領(lǐng)域的利用速度。但是,最新的具有本地USB接口的高級(jí)閃存微控制器的出現(xiàn),為應(yīng)用提供了單片解決方案,還有現(xiàn)成的固件方案(如USB閃存引導(dǎo)上載)的易用性,正在為設(shè)備設(shè)計(jì)者提供新的和頗具競爭性的引用USB的理由,即在降低成本的同時(shí)為其產(chǎn)品添加新的強(qiáng)有力的功能。