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