新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 學(xué)習(xí)方法與實(shí)踐 > 如何選用嵌入式圖形系統(tǒng)

如何選用嵌入式圖形系統(tǒng)

——
作者:王勇 時(shí)間:2007-12-14 來(lái)源:賽迪網(wǎng) 收藏
       高端消費(fèi)類(lèi)電子產(chǎn)品(如PDA、手機(jī))的廣泛應(yīng)用,使原先僅在軍工、工業(yè)控制等領(lǐng)域中使用的實(shí)時(shí)操作系統(tǒng),越來(lái)越受到關(guān)注,業(yè)界相應(yīng)出現(xiàn)了多種各具特色的實(shí)時(shí)操作系統(tǒng)產(chǎn)品。針對(duì)多樣化的供應(yīng),選擇成了一個(gè)難題。 

       而作為除操作系統(tǒng)之外,開(kāi)發(fā)人員關(guān)注的焦點(diǎn),以及現(xiàn)實(shí)的需求也催生出了一批更美觀(guān)和操作方便的圖形用戶(hù)界面。如此琳瑯滿(mǎn)目的市場(chǎng)供應(yīng),開(kāi)發(fā)人員該做出如何選擇呢?為目標(biāo)嵌入式產(chǎn)品選擇適合的嵌入式圖形支持系統(tǒng)已經(jīng)成為與選擇嵌入式操作系統(tǒng)一樣,成為頗具挑戰(zhàn)性的難題。 

       而現(xiàn)實(shí)情況是,在嵌入式系統(tǒng)上的GUI開(kāi)發(fā),并不像普通PC平臺(tái)上的應(yīng)用開(kāi)發(fā)那么容易和方便。一方面是因?yàn)樵O(shè)備的可用資源有限(CPU運(yùn)算能力、靜態(tài)和動(dòng)態(tài)存儲(chǔ)空間等),另外就是操作系統(tǒng)提供的底層機(jī)制有限。這樣一來(lái),就造成了開(kāi)發(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)單、直觀(guān)、可靠、占用資源小且反應(yīng)快速。尤其在實(shí)時(shí)系統(tǒng)中對(duì)GUI的快速反應(yīng)提出很高的要求。 

       嵌入式目前可以大致分為二類(lèi),一類(lèi)是針對(duì)某個(gè)嵌入式系統(tǒng)提供GUI的圖形庫(kù)及接口,一般基于GUI提供了完整的解決方案和應(yīng)用。此類(lèi)除Microsoft的WinCE外,大都隨著嵌入式Linux的發(fā)展而發(fā)展起來(lái)的。在Linux下有成熟的桌面產(chǎn)品,擁有大量的應(yīng)用和應(yīng)用開(kāi)發(fā)人員。此類(lèi)的典型為T(mén)rollTech的Qtopia和GNU的GTK+。 

       另一類(lèi)是專(zhuān)門(mén)針對(duì)嵌入式系統(tǒng)提供的嵌入式圖形中間件。此類(lèi)系統(tǒng)考慮支持不同的硬件環(huán)境和支持不同的嵌入式操作系統(tǒng)。為滿(mǎn)足嵌入式系統(tǒng)的不同需要,都提供了靈活的、可伸縮的軟件架構(gòu)。此類(lèi)的代表為北京飛漫軟件的MiniGUI、SwellSoftware的PEG和TilconSoftware的Tilcon產(chǎn)品。此類(lèi)系統(tǒng)一般是由專(zhuān)業(yè)公司在維護(hù),基于核心的GUI系統(tǒng)針對(duì)某一行業(yè)提供關(guān)鍵應(yīng)用、解決方案和開(kāi)發(fā)工具等系列產(chǎn)品。 

       和微軟的WinCE系統(tǒng)內(nèi)核支持圖形系統(tǒng)不同,絕大多數(shù)嵌入式系統(tǒng)都通過(guò)應(yīng)用層來(lái)完成對(duì)圖形系統(tǒng)的支持。支持單一操作系統(tǒng)的圖形系統(tǒng)可以使用一些系統(tǒng)調(diào)用來(lái)優(yōu)化系統(tǒng)的性能。將滿(mǎn)足嵌入式各種硬件平臺(tái)的任務(wù)交給操作系統(tǒng)來(lái)處理。這樣的方式限制了圖形系統(tǒng)的跨系統(tǒng)能力。支持多操作系統(tǒng)和多硬件平臺(tái)的圖形中間件,通過(guò)優(yōu)化的系統(tǒng)架構(gòu),可以很好地解決嵌入式平臺(tái)各種硬件的問(wèn)題,集中處理圖形方面相關(guān)問(wèn)題,為系統(tǒng)提供優(yōu)秀的圖形系統(tǒng)平臺(tái)。這樣的處理是符合目前的嵌入式系統(tǒng)的發(fā)展的。 

       為此,筆者采訪(fǎng)了飛漫軟件技術(shù)公司研發(fā)部經(jīng)理焦力波,以期從技術(shù)角度對(duì)MiniGUI做以剖析,給致力于此的其他廠(chǎng)商以合理借鑒。 

       MiniGUI 

       MiniGUI是一個(gè)高效、可靠、可定制、小巧靈活的圖形用戶(hù)界面支持系統(tǒng),具有跨硬件平臺(tái)、跨操作系統(tǒng)的可移植性。同時(shí)它又是一個(gè)是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶(hù)界面支持系統(tǒng)。自1999年初遵循GPL條款發(fā)布第一個(gè)版本以來(lái),MiniGUI已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)及工業(yè)儀表等產(chǎn)品和領(lǐng)域。 

       MiniGUI為實(shí)時(shí)嵌入式操作系統(tǒng)提供了非常完善的圖形及用戶(hù)界面支持。MiniGUI本身的可移植性設(shè)計(jì),使得不論在哪個(gè)硬件平臺(tái)、哪種操作系統(tǒng)上運(yùn)行,MiniGUI均能為上層應(yīng)用程序提供一致的應(yīng)用程序編程接口(API)。MiniGUI具有良好的軟件架構(gòu),通過(guò)抽象層將MiniGUI上層和底層操作系統(tǒng)隔離開(kāi)來(lái)如圖1所示。 

       MiniGUI是一個(gè)根據(jù)嵌入式系統(tǒng)應(yīng)用特點(diǎn)量身定做的完整的圖形支持系統(tǒng)。作為操作系統(tǒng)和應(yīng)用程序之間的中間件,MiniGUI將底層操作系統(tǒng)及硬件平臺(tái)差別隱藏了起來(lái),并對(duì)上層應(yīng)用程序提供了一致的功能特性。MiniGUI的整體架構(gòu)圖如圖2所示。 

       MiniGUI在發(fā)展過(guò)程中,引入了很多技術(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基本沒(méi)有影響,但大大方便了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輸入引擎,通過(guò)它可以完成應(yīng)用程序的自動(dòng)測(cè)試。我們可以通過(guò)Shadow圖形引擎支持YUV輸出設(shè)備、提供對(duì)無(wú)法直接訪(fǎng)問(wèn)顯示幀緩沖區(qū)的圖形芯片的支持、提供對(duì)低于8位色顯示屏的支持、實(shí)現(xiàn)屏幕旋轉(zhuǎn)功能等。 

        多字體和多字符集支持 

        這部分通過(guò)設(shè)備上下文(DC)的邏輯字體實(shí)現(xiàn),不管是字體類(lèi)型還是字符集,都可非常方便地進(jìn)行擴(kuò)充。利用DrawText等函數(shù)時(shí),可通過(guò)指定字體而獲得對(duì)各種字符集的支持,如GB2312、GBK、UNICODE(UTF-8、UTF-16編碼)等。這樣,在單個(gè)MiniGUI應(yīng)用程序中,同時(shí)顯示多個(gè)不同語(yǔ)種的文字非常容易。MiniGUI的這種字符集支持不同于通過(guò)UNICODE內(nèi)碼實(shí)現(xiàn)的傳統(tǒng)多字符集支持,這種實(shí)現(xiàn)占用資源少,更加適合于嵌入式系統(tǒng)。 

        針對(duì)不同操作系統(tǒng)特點(diǎn)的運(yùn)行模式 

        和Linux這樣的類(lèi)UNIX操作系統(tǒng)相比,一般意義上的傳統(tǒng)嵌入式操作系統(tǒng)具有一些特殊性。例如象uClinux、uC/OS-II、eCos、VxWorks等操作系統(tǒng),通常運(yùn)行在沒(méi)有MMU的CPU上;這時(shí),往往沒(méi)有進(jìn)程的概念,而只有線(xià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)建華麗的用戶(hù)界面。同時(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è)備來(lái)說(shuō),滿(mǎn)足這一條件是綽綽有余的。 

       高性能、高可靠性 

        MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。考慮到實(shí)時(shí)嵌入式系統(tǒng)的特點(diǎn),在設(shè)計(jì)之初MiniGUI就對(duì)多窗口環(huán)境下的圖形繪制開(kāi)展了大量的研究及開(kāi)發(fā),優(yōu)化了MiniGUI的圖形繪制性能及資源占用。在大量實(shí)際系統(tǒng)中的應(yīng)用,尤其在工業(yè)控制系統(tǒng)的應(yīng)用,證明了MiniGUI的高性能。 

       可配置性 

       為滿(mǎn)足嵌入式系統(tǒng)不同的需求,必須要求GUI系統(tǒng)是可配置的。和Linux內(nèi)核類(lèi)似,MiniGUI為滿(mǎn)足嵌入式系統(tǒng)多樣的需求,也實(shí)現(xiàn)了大量的編譯配置選項(xiàng),通過(guò)這些選項(xiàng)可指定MiniGUI庫(kù)中包括哪些功能而同時(shí)不包括哪些功能。 

       這些配置選項(xiàng)大大增強(qiáng)了MiniGUI的靈活性,對(duì)用戶(hù)來(lái)講,可針對(duì)具體的應(yīng)用需求量體裁衣,開(kāi)發(fā)最適合產(chǎn)品需求的應(yīng)用軟件。MiniGUI很好地將現(xiàn)代窗口和圖形技術(shù)帶入到了嵌入式設(shè)備。 

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉