三種主流嵌入式圖形用戶界面的移植及性能比較
摘 要:本文在ARM920T嵌入式開發(fā)板上對MiniGUI、MicroWindows和Qt/Embedded三種GUI進行了移植,并在此基礎上對這三種目前主流的嵌入式GUI進行了性能上的比較。
引言
與通用的GUI系統(tǒng)相比,嵌入式系統(tǒng)下對GUI基本要求包括:輕型、占用資源少、高性能、高可靠性和可配置。目前,面向嵌入式Linux系統(tǒng)的有代表性的GUI系統(tǒng)有北京飛漫軟件公司的MiniGUI、美國Century軟件公司的MicroWindows、挪威Troltech公司的Qt/Embedded。本文對這三種主流的GUI系統(tǒng)進行了移植,并對它們的性能進行了比較。
三種嵌入式GUI的移植
我們采用的項目平臺是華恒科技公司提供的用于高端手持設備、微型智能控制設備的HHARM2410-FEC-R1開發(fā)套件,采用203MHz 的ARM920T 內核的處理器S3C2410。
HHARM2410-FEC-R1 套件由核心板和底板(外設板或稱基本板)組成,核心板上集成Samsung 公司S3C2410 處理器,64MB SDRAM以及16MB 的FLASH(閃存),為我們進行嵌入式GUI研發(fā)提供了足夠的空間。底板上則提供以下外設接口:一個四線RS-232 串口(COM1),一個10M/100M自適應以太網接口,一個TFT LCD接口, 一個觸摸屏接口。核心板和底板配合即構成一個最小的完整應用系統(tǒng)。
移植過程中我們采取了宿主機和目標板的開發(fā)模式。宿主機是一臺運行Linux 的PC 機服務器,目標板即開發(fā)板。先在宿主機上調試通過后,再移植到目標板上。
移植工作主要集中在兩個方面:
在華恒開發(fā)板附帶的軟件包中,已經包括有了交叉編譯所需要的二進制工具Binutils、標準C函數(shù)庫libc以及生成ARM平臺代碼的x86交叉編譯器gcc、g++等工具軟件包。將這些工具軟件安裝到宿主機上,將該安裝路徑添加至PATH環(huán)境變量中去,以便shell能夠找得到,這樣就完成了交叉編譯環(huán)境的設置。
接下來就可以將GUI運行所需要的資源文件和可執(zhí)行文件都采取交叉的方式進行編譯,然后將編譯生成的文件添加到原來的文件系統(tǒng)中去,就可以將其下載到目標板上進行調試了。
下面著重對Mini GUI系統(tǒng)的移植進行介紹。
MiniGUI圖形系統(tǒng)由函數(shù)庫、資源、演示程序三部分組成,相應地在對MiniGUI進行移植時也要對這三部分分別進行移植。
MiniGUI使用了自由軟件常用的“automake”和“autoconf”接口,因此其配置和編譯非常容易。進入MiniGUI源代碼樹,運行autogen.sh腳本文件,該文件可以簡單地重新生成所有與配置相關的文件,然后為當前的構建環(huán)境配置軟件。配置MiniGUI,加上啟動交叉編譯的選項,關鍵有如下幾個選項:
CC=armv4l-unknown-linux-gcc
-host=arm-linux
-build=i686-pc-linux-gnu
-prefix=/opt/host/armv4l/armv4l-unknown-linux
-enable-lite
armv4l-unknown-linux-gcc是ARM的交叉編譯器,它被安在/opt/host/armv4l/armv4l-unknown-linux目錄下。Host指定了目標機類型,build指定了交叉編譯的系統(tǒng)環(huán)境,Prefix指定了MiniGUI安裝的函數(shù)庫、頭文件和手冊頁等資源的安裝路徑,enable-lite指定將MiniGUI配置為Lite版本。關于其他的配置選項可以根據(jù)應用的特殊要求來打開或者關閉,例如disable-jpgsupport去掉對jpeg庫的支持。關于這些配置選項的詳細說明可以使用help打印清單或者參考《MiniGUI用戶手冊》。
configure結果生成了一個標準的Makefile文件。接下來只要進行簡單的編譯、安裝就可以了。
安裝MiniGUI資源文件minigui-res比較簡單,只要修改目錄樹下的config.linux文件,將prefix選項改為和剛才的安裝路徑一致就可以了。然后直接執(zhí)行make install。
參照以上步驟對MiniGUI的演示程序MDE進行交叉編譯,過程類似,不再贅述。
最后將安裝目錄下的庫文件、運行時自動查找的配置文件及編譯后生成的可執(zhí)行文件加入到Linux文件系統(tǒng)中去,重新制作ramdisk文件系統(tǒng)映像,再將新的文件系統(tǒng)下載到板子上,重新燒寫FLASH就可以進行調試了。運行時需要先執(zhí)行一個Mginit服務器進程,它將啟動一個虛擬控制臺窗口,然后在這個窗口中運行應用程序,如運行bomb后可以在LCD上看到和Windows中類似的掃雷界面。
Mcrowindows的資源包可以從http://microwindows.org下載,介紹從略。
Qt/Embedded的資源可以從http://www.trolltech.com下載,介紹從略。
三種主流嵌入式GUI的比較
由于嵌入式GUI系統(tǒng)的開發(fā)人員對實時嵌入式系統(tǒng)在理解上的不同,使得這些GUI系統(tǒng)在接口定義、體系結構、功能特性等方面存在著很大的差別,還有就是它們所采用的技術路線也有所不同。
MiniGUI的策略是首先建立在比較成熟的圖形引擎之上,比如 SVGALib和LibGGI,開發(fā)的重點在于窗口系統(tǒng)如圖形接口。在MiniGUI的開發(fā)中,引入了圖形抽象層和輸入抽象層(GAL和IAL)的概念。利用GAL和IAL,MiniGUI才可以在多種圖形引擎上運行,并且便于移植。它盡量保持與Win32的兼容,這樣在WinCE應用的任何場合,也可以使用MiniGUI。
MicroWindows目前的開發(fā)重點則在底層的圖形引擎,窗口系統(tǒng)和圖形接口方面的功能還比較欠缺。但是它能夠在沒有任何操作系統(tǒng)或其他圖形系統(tǒng)的支持下運行,它能夠對裸顯示設備進行直接操作,因而顯得十分小巧,便于移植到各種硬件和軟件系統(tǒng)上。最上層的API支持Win32和Nano X接口,這樣就與Win32和X Window窗口系統(tǒng)保持了兼容,在這些系統(tǒng)間移植應用軟件就很容易了。
Qt/Embedded是一個多平臺的C++圖形用戶界面應用程序框架,它注重于能給用戶提供精美的圖形用戶界面所需要的所有元素。而且它是基于一種面向對象的思想,所以用戶對其對象的擴展是相當容易的,并且它還支持真正的組件編程。
另外,這些GUI系統(tǒng)所使用的授權條款也各有不同。MiniGUI、MicroWindows和Qt/Embedded均為自由軟件,只是所遵循的條款不同。
上述GUI的詳細性能比較如表1所示。
結語
MiniGUI最初是為了滿足一個工業(yè)控制系統(tǒng)(計算機數(shù)控系統(tǒng))的需求而設計和開發(fā)的,它在設計之初就考慮到了小巧、高性能和高效率,因此比較適合于工控領域的簡單應用;而MicroWindows和Qt/Embedded則偏重于便攜式和手持PC/Device的需求。MiniGUI是由我國開發(fā)的,中文的支持文檔比較多,大都可以從飛漫公司的網站(http://www.minigui.com)上免費獲得;而MicroWindows和Qt/Embedded均是外國項目,相對來說發(fā)展得較成熟,文檔大多是英文的,在Qt的中文站點(http://www.qiliang.net)上也有部分翻譯文檔?!?/P>
參考文獻:
1. 北京飛漫軟件技術有限公司,MiniGUI技術白皮書,版本1.2FM
2. 吳升艷、胡冰、岳春,‘Micro Windows體系結構及應用程序接口’,單片機與嵌入式系統(tǒng)應用,2003,5
評論