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