如何選用嵌入式圖形系統(tǒng)
——
而嵌入式圖形系統(tǒng)作為除操作系統(tǒng)之外,開發(fā)人員關(guān)注的焦點(diǎn),以及現(xiàn)實(shí)的需求也催生出了一批更美觀和操作方便的圖形用戶界面。如此琳瑯滿目的市場(chǎng)供應(yīng),開發(fā)人員該做出如何選擇呢?為目標(biāo)嵌入式產(chǎn)品選擇適合的嵌入式圖形支持系統(tǒng)已經(jīng)成為與選擇嵌入式操作系統(tǒng)一樣,成為頗具挑戰(zhàn)性的難題。
而現(xiàn)實(shí)情況是,在嵌入式系統(tǒng)上的GUI開發(fā),并不像普通PC平臺(tái)上的應(yīng)用開發(fā)那么容易和方便。一方面是因?yàn)樵O(shè)備的可用資源有限(CPU運(yùn)算能力、靜態(tài)和動(dòng)態(tài)存儲(chǔ)空間等),另外就是操作系統(tǒng)提供的底層機(jī)制有限。這樣一來,就造成了開發(fā)人員在為具有不同硬件配置的嵌入式產(chǎn)品以及實(shí)時(shí)嵌入式操作系統(tǒng)選擇功能完備、且又適合目標(biāo)產(chǎn)品特點(diǎn)的GUI支持系統(tǒng)時(shí),面臨諸多技術(shù)挑戰(zhàn)。
嵌入式圖形技術(shù)現(xiàn)狀
嵌入式GUI為嵌入式系統(tǒng)提供了一種應(yīng)用于特殊場(chǎng)合的人機(jī)交互接口。嵌入式GUI要求簡(jiǎn)單、直觀、可靠、占用資源小且反應(yīng)快速。尤其在實(shí)時(shí)系統(tǒng)中對(duì)GUI的快速反應(yīng)提出很高的要求。
嵌入式圖形系統(tǒng)目前可以大致分為二類,一類是針對(duì)某個(gè)嵌入式系統(tǒng)提供GUI的圖形庫(kù)及接口,一般基于GUI提供了完整的解決方案和應(yīng)用。此類除Microsoft的WinCE外,大都隨著嵌入式Linux的發(fā)展而發(fā)展起來的。在Linux下有成熟的桌面產(chǎn)品,擁有大量的應(yīng)用和應(yīng)用開發(fā)人員。此類的典型為TrollTech的Qtopia和GNU的GTK+。
另一類是專門針對(duì)嵌入式系統(tǒng)提供的嵌入式圖形中間件。此類系統(tǒng)考慮支持不同的硬件環(huán)境和支持不同的嵌入式操作系統(tǒng)。為滿足嵌入式系統(tǒng)的不同需要,都提供了靈活的、可伸縮的軟件架構(gòu)。此類圖形系統(tǒng)的代表為北京飛漫軟件的MiniGUI、SwellSoftware的PEG和TilconSoftware的Tilcon產(chǎn)品。此類系統(tǒng)一般是由專業(yè)公司在維護(hù),基于核心的GUI系統(tǒng)針對(duì)某一行業(yè)提供關(guān)鍵應(yīng)用、解決方案和開發(fā)工具等系列產(chǎn)品。
和微軟的WinCE系統(tǒng)內(nèi)核支持圖形系統(tǒng)不同,絕大多數(shù)嵌入式系統(tǒng)都通過應(yīng)用層來完成對(duì)圖形系統(tǒng)的支持。支持單一操作系統(tǒng)的圖形系統(tǒng)可以使用一些系統(tǒng)調(diào)用來優(yōu)化系統(tǒng)的性能。將滿足嵌入式各種硬件平臺(tái)的任務(wù)交給操作系統(tǒng)來處理。這樣的方式限制了圖形系統(tǒng)的跨系統(tǒng)能力。支持多操作系統(tǒng)和多硬件平臺(tái)的圖形中間件,通過優(yōu)化的系統(tǒng)架構(gòu),可以很好地解決嵌入式平臺(tái)各種硬件的問題,集中處理圖形方面相關(guān)問題,為系統(tǒng)提供優(yōu)秀的圖形系統(tǒng)平臺(tái)。這樣的處理是符合目前的嵌入式系統(tǒng)的發(fā)展的。
為此,筆者采訪了飛漫軟件技術(shù)公司研發(fā)部經(jīng)理焦力波,以期從技術(shù)角度對(duì)MiniGUI做以剖析,給致力于此的其他廠商以合理借鑒。
MiniGUI
MiniGUI是一個(gè)高效、可靠、可定制、小巧靈活的圖形用戶界面支持系統(tǒng),具有跨硬件平臺(tái)、跨操作系統(tǒng)的可移植性。同時(shí)它又是一個(gè)是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng)。自1999年初遵循GPL條款發(fā)布第一個(gè)版本以來,MiniGUI已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)及工業(yè)儀表等產(chǎn)品和領(lǐng)域。
MiniGUI為實(shí)時(shí)嵌入式操作系統(tǒng)提供了非常完善的圖形及用戶界面支持。MiniGUI本身的可移植性設(shè)計(jì),使得不論在哪個(gè)硬件平臺(tái)、哪種操作系統(tǒng)上運(yùn)行,MiniGUI均能為上層應(yīng)用程序提供一致的應(yīng)用程序編程接口(API)。MiniGUI具有良好的軟件架構(gòu),通過抽象層將MiniGUI上層和底層操作系統(tǒng)隔離開來如圖1所示。
MiniGUI是一個(gè)根據(jù)嵌入式系統(tǒng)應(yīng)用特點(diǎn)量身定做的完整的圖形支持系統(tǒng)。作為操作系統(tǒng)和應(yīng)用程序之間的中間件,MiniGUI將底層操作系統(tǒng)及硬件平臺(tái)差別隱藏了起來,并對(duì)上層應(yīng)用程序提供了一致的功能特性。MiniGUI的整體架構(gòu)圖如圖2所示。
MiniGUI在發(fā)展過程中,引入了很多技術(shù)創(chuàng)新點(diǎn),如圖形和輸入抽象層、多字體和多字符集支持和針對(duì)不同操作系統(tǒng)特點(diǎn)的運(yùn)行模式等。正是由于這些技術(shù)上的創(chuàng)新,才使得MiniGUI對(duì)實(shí)時(shí)嵌入式系統(tǒng)的適應(yīng)性更強(qiáng),靈活性更好。
圖形和輸入抽象層
圖形和輸入抽象層對(duì)頂層API基本沒有影響,但大大方便了MiniGUI自身及應(yīng)用程序的移植和調(diào)試等。MiniGUI能夠在基于i386、ARM(包括StrongARM、xScale等)MIPS、PowerPC及低端的DragonBall、ColdFire等CPU的嵌入式系統(tǒng)上流暢運(yùn)行。
利用圖形和輸入抽象層,還可以實(shí)現(xiàn)基于軟件結(jié)構(gòu)的引擎。比如模擬現(xiàn)實(shí)輸入的random輸入引擎,通過它可以完成應(yīng)用程序的自動(dòng)測(cè)試。我們可以通過Shadow圖形引擎支持YUV輸出設(shè)備、提供對(duì)無法直接訪問顯示幀緩沖區(qū)的圖形芯片的支持、提供對(duì)低于8位色顯示屏的支持、實(shí)現(xiàn)屏幕旋轉(zhuǎn)功能等。
多字體和多字符集支持
這部分通過設(shè)備上下文(DC)的邏輯字體實(shí)現(xiàn),不管是字體類型還是字符集,都可非常方便地進(jìn)行擴(kuò)充。利用DrawText等函數(shù)時(shí),可通過指定字體而獲得對(duì)各種字符集的支持,如GB2312、GBK、UNICODE(UTF-8、UTF-16編碼)等。這樣,在單個(gè)MiniGUI應(yīng)用程序中,同時(shí)顯示多個(gè)不同語種的文字非常容易。MiniGUI的這種字符集支持不同于通過UNICODE內(nèi)碼實(shí)現(xiàn)的傳統(tǒng)多字符集支持,這種實(shí)現(xiàn)占用資源少,更加適合于嵌入式系統(tǒng)。
針對(duì)不同操作系統(tǒng)特點(diǎn)的運(yùn)行模式
和Linux這樣的類UNIX操作系統(tǒng)相比,一般意義上的傳統(tǒng)嵌入式操作系統(tǒng)具有一些特殊性。例如象uClinux、uC/OS-II、eCos、VxWorks等操作系統(tǒng),通常運(yùn)行在沒有MMU的CPU上;這時(shí),往往沒有進(jìn)程的概念,而只有線程或任務(wù)的概念,這樣,GUI系統(tǒng)的運(yùn)行環(huán)境也就大相徑庭。因此,為了適合不同的操作系統(tǒng)環(huán)境,可將MiniGUI配置成MiniGUI-Threads、MiniGUI-Processes及MiniGUI-Standalone三種運(yùn)行模式。
MiniGUI的技術(shù)優(yōu)勢(shì)
M*iniGUI在對(duì)系統(tǒng)的需求上主要有以下幾點(diǎn)優(yōu)勢(shì):
可伸縮性強(qiáng)
MiniGUI豐富的功能和可配置特性,使得它既可運(yùn)行于CPU主頻只有60MHz的低端產(chǎn)品中,亦可運(yùn)行于高端嵌入式設(shè)備中,并且可使用MiniGUI的高級(jí)控件風(fēng)格及皮膚界面等技術(shù),創(chuàng)建華麗的用戶界面。同時(shí),它的跨操作系統(tǒng)特性,使得MiniGUI不僅可運(yùn)行在最簡(jiǎn)單的嵌入式操作系統(tǒng)之上,也可運(yùn)行在具有現(xiàn)代操作系統(tǒng)特性的嵌入式操作系統(tǒng)之上(如Linux),并且為嵌入式Linux系統(tǒng)提供了完整的多窗口圖形環(huán)境。
輕型、占用資源少
作為一個(gè)定位于輕量級(jí)的嵌入式圖形庫(kù),MiniGUI完全考慮到了系統(tǒng)資源對(duì)嵌入式設(shè)備的硬件的需求,如MiniGUI庫(kù)所占的空間最小可以裁剪到500K左右,對(duì)目前的嵌入式設(shè)備來說,滿足這一條件是綽綽有余的。
高性能、高可靠性
MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度??紤]到實(shí)時(shí)嵌入式系統(tǒng)的特點(diǎn),在設(shè)計(jì)之初MiniGUI就對(duì)多窗口環(huán)境下的圖形繪制開展了大量的研究及開發(fā),優(yōu)化了MiniGUI的圖形繪制性能及資源占用。在大量實(shí)際系統(tǒng)中的應(yīng)用,尤其在工業(yè)控制系統(tǒng)的應(yīng)用,證明了MiniGUI的高性能。
可配置性
為滿足嵌入式系統(tǒng)不同的需求,必須要求GUI系統(tǒng)是可配置的。和Linux內(nèi)核類似,MiniGUI為滿足嵌入式系統(tǒng)多樣的需求,也實(shí)現(xiàn)了大量的編譯配置選項(xiàng),通過這些選項(xiàng)可指定MiniGUI庫(kù)中包括哪些功能而同時(shí)不包括哪些功能。
這些配置選項(xiàng)大大增強(qiáng)了MiniGUI的靈活性,對(duì)用戶來講,可針對(duì)具體的應(yīng)用需求量體裁衣,開發(fā)最適合產(chǎn)品需求的應(yīng)用軟件。MiniGUI很好地將現(xiàn)代窗口和圖形技術(shù)帶入到了嵌入式設(shè)備。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論