新聞中心

        EEPW首頁 > 嵌入式系統 > 學習方法與實踐 > 如何選用嵌入式圖形系統

        如何選用嵌入式圖形系統

        ——
        作者:王勇 時間:2007-12-14 來源:賽迪網 收藏
               高端消費類電子產品(如PDA、手機)的廣泛應用,使原先僅在軍工、工業控制等領域中使用的實時操作系統,越來越受到關注,業界相應出現了多種各具特色的實時操作系統產品。針對多樣化的供應,選擇成了一個難題。 

               而作為除操作系統之外,開發人員關注的焦點,以及現實的需求也催生出了一批更美觀和操作方便的圖形用戶界面。如此琳瑯滿目的市場供應,開發人員該做出如何選擇呢?為目標嵌入式產品選擇適合的嵌入式圖形支持系統已經成為與選擇嵌入式操作系統一樣,成為頗具挑戰性的難題。 

               而現實情況是,在嵌入式系統上的GUI開發,并不像普通PC平臺上的應用開發那么容易和方便。一方面是因為設備的可用資源有限(CPU運算能力、靜態和動態存儲空間等),另外就是操作系統提供的底層機制有限。這樣一來,就造成了開發人員在為具有不同硬件配置的嵌入式產品以及實時嵌入式操作系統選擇功能完備、且又適合目標產品特點的GUI支持系統時,面臨諸多技術挑戰。 

              嵌入式圖形技術現狀 

               嵌入式GUI為嵌入式系統提供了一種應用于特殊場合的人機交互接口。嵌入式GUI要求簡單、直觀、可靠、占用資源小且反應快速。尤其在實時系統中對GUI的快速反應提出很高的要求。 

               嵌入式目前可以大致分為二類,一類是針對某個嵌入式系統提供GUI的圖形庫及接口,一般基于GUI提供了完整的解決方案和應用。此類除Microsoft的WinCE外,大都隨著嵌入式Linux的發展而發展起來的。在Linux下有成熟的桌面產品,擁有大量的應用和應用開發人員。此類的典型為TrollTech的Qtopia和GNU的GTK+。 

               另一類是專門針對嵌入式系統提供的嵌入式圖形中間件。此類系統考慮支持不同的硬件環境和支持不同的嵌入式操作系統。為滿足嵌入式系統的不同需要,都提供了靈活的、可伸縮的軟件架構。此類的代表為北京飛漫軟件的MiniGUI、SwellSoftware的PEG和TilconSoftware的Tilcon產品。此類系統一般是由專業公司在維護,基于核心的GUI系統針對某一行業提供關鍵應用、解決方案和開發工具等系列產品。 

               和微軟的WinCE系統內核支持圖形系統不同,絕大多數嵌入式系統都通過應用層來完成對圖形系統的支持。支持單一操作系統的圖形系統可以使用一些系統調用來優化系統的性能。將滿足嵌入式各種硬件平臺的任務交給操作系統來處理。這樣的方式限制了圖形系統的跨系統能力。支持多操作系統和多硬件平臺的圖形中間件,通過優化的系統架構,可以很好地解決嵌入式平臺各種硬件的問題,集中處理圖形方面相關問題,為系統提供優秀的圖形系統平臺。這樣的處理是符合目前的嵌入式系統的發展的。 

               為此,筆者采訪了飛漫軟件技術公司研發部經理焦力波,以期從技術角度對MiniGUI做以剖析,給致力于此的其他廠商以合理借鑒。 

               MiniGUI 

               MiniGUI是一個高效、可靠、可定制、小巧靈活的圖形用戶界面支持系統,具有跨硬件平臺、跨操作系統的可移植性。同時它又是一個是面向實時嵌入式系統的輕量級圖形用戶界面支持系統。自1999年初遵循GPL條款發布第一個版本以來,MiniGUI已廣泛應用于手持信息終端、機頂盒、工業控制系統及工業儀表等產品和領域。 

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

               MiniGUI是一個根據嵌入式系統應用特點量身定做的完整的圖形支持系統。作為操作系統和應用程序之間的中間件,MiniGUI將底層操作系統及硬件平臺差別隱藏了起來,并對上層應用程序提供了一致的功能特性。MiniGUI的整體架構圖如圖2所示。 

               MiniGUI在發展過程中,引入了很多技術創新點,如圖形和輸入抽象層、多字體和多字符集支持和針對不同操作系統特點的運行模式等。正是由于這些技術上的創新,才使得MiniGUI對實時嵌入式系統的適應性更強,靈活性更好。 

               圖形和輸入抽象層 

                圖形和輸入抽象層對頂層API基本沒有影響,但大大方便了MiniGUI自身及應用程序的移植和調試等。MiniGUI能夠在基于i386、ARM(包括StrongARM、xScale等)MIPS、PowerPC及低端的DragonBall、ColdFire等CPU的嵌入式系統上流暢運行。 

                利用圖形和輸入抽象層,還可以實現基于軟件結構的引擎。比如模擬現實輸入的random輸入引擎,通過它可以完成應用程序的自動測試。我們可以通過Shadow圖形引擎支持YUV輸出設備、提供對無法直接訪問顯示幀緩沖區的圖形芯片的支持、提供對低于8位色顯示屏的支持、實現屏幕旋轉功能等。 

                多字體和多字符集支持 

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

                針對不同操作系統特點的運行模式 

                和Linux這樣的類UNIX操作系統相比,一般意義上的傳統嵌入式操作系統具有一些特殊性。例如象uClinux、uC/OS-II、eCos、VxWorks等操作系統,通常運行在沒有MMU的CPU上;這時,往往沒有進程的概念,而只有線程或任務的概念,這樣,GUI系統的運行環境也就大相徑庭。因此,為了適合不同的操作系統環境,可將MiniGUI配置成MiniGUI-Threads、MiniGUI-Processes及MiniGUI-Standalone三種運行模式。 

                MiniGUI的技術優勢 

                M*iniGUI在對系統的需求上主要有以下幾點優勢: 

                可伸縮性強 

                MiniGUI豐富的功能和可配置特性,使得它既可運行于CPU主頻只有60MHz的低端產品中,亦可運行于高端嵌入式設備中,并且可使用MiniGUI的高級控件風格及皮膚界面等技術,創建華麗的用戶界面。同時,它的跨操作系統特性,使得MiniGUI不僅可運行在最簡單的嵌入式操作系統之上,也可運行在具有現代操作系統特性的嵌入式操作系統之上(如Linux),并且為嵌入式Linux系統提供了完整的多窗口圖形環境。 

               輕型、占用資源少 

                作為一個定位于輕量級的嵌入式圖形庫,MiniGUI完全考慮到了系統資源對嵌入式設備的硬件的需求,如MiniGUI庫所占的空間最小可以裁剪到500K左右,對目前的嵌入式設備來說,滿足這一條件是綽綽有余的。 

               高性能、高可靠性 

                MiniGUI良好的體系結構及優化的圖形接口,可確保最快的圖形繪制速度。考慮到實時嵌入式系統的特點,在設計之初MiniGUI就對多窗口環境下的圖形繪制開展了大量的研究及開發,優化了MiniGUI的圖形繪制性能及資源占用。在大量實際系統中的應用,尤其在工業控制系統的應用,證明了MiniGUI的高性能。 

               可配置性 

               為滿足嵌入式系統不同的需求,必須要求GUI系統是可配置的。和Linux內核類似,MiniGUI為滿足嵌入式系統多樣的需求,也實現了大量的編譯配置選項,通過這些選項可指定MiniGUI庫中包括哪些功能而同時不包括哪些功能。 

               這些配置選項大大增強了MiniGUI的靈活性,對用戶來講,可針對具體的應用需求量體裁衣,開發最適合產品需求的應用軟件。MiniGUI很好地將現代窗口和圖形技術帶入到了嵌入式設備。 

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 潢川县| 利津县| 怀集县| 涿鹿县| 金秀| 南郑县| 民权县| 淳化县| 邢台市| 东丽区| 温州市| 灵山县| 区。| 饶平县| 岳池县| 腾冲县| 万宁市| 莆田市| 通榆县| 黄浦区| 阿图什市| 宽甸| 崇信县| 阳新县| 河北区| 应城市| 大同县| 临沂市| 吉木萨尔县| 东安县| 肃南| 旌德县| 淳化县| 林口县| 阳谷县| 秦安县| 体育| 平泉县| 林西县| 龙岩市| 汤阴县|