<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 三種主流嵌入式圖形用戶(hù)界面的移植及性能比較

三種主流嵌入式圖形用戶(hù)界面的移植及性能比較

作者:國防科技大學(xué)(長(cháng)沙)電子科學(xué)與工程學(xué)院407教研室 丁丁 習勇 魏急波 時(shí)間:2004-09-16 來(lái)源:電子產(chǎn)品世界 收藏


摘  要:本文在A(yíng)RM920T開(kāi)發(fā)板上對MiniGUI、MicroWindows和Qt/Embedded三種GUI進(jìn)行了移植,并在此基礎上對這三種目前主流的GUI進(jìn)行了性能上的比較。

關(guān)鍵詞:GUI;圖形用戶(hù)界面;交叉編譯;移植

引言

  與通用的GUI系統相比,嵌入式系統下對GUI基本要求包括:輕型、占用資源少、高性能、高可靠性和可配置。目前,面向嵌入式Linux系統的有代表性的GUI系統有北京飛漫軟件公司的MiniGUI、美國Century軟件公司的MicroWindows、挪威Troltech公司的Qt/Embedded。本文對這三種主流的GUI系統進(jìn)行了移植,并對它們的性能進(jìn)行了比較。

三種嵌入式GUI的移植

  我們采用的項目平臺是華恒科技公司提供的用于高端手持設備、微型智能控制設備的HHARM2410-FEC-R1開(kāi)發(fā)套件,采用203MHz 的ARM920T 內核的處理器S3C2410。

  HHARM2410-FEC-R1 套件由核心板和底板(外設板或稱(chēng)基本板)組成,核心板上集成Samsung 公司S3C2410 處理器,64MB SDRAM以及16MB 的FLASH(閃存),為我們進(jìn)行嵌入式GUI研發(fā)提供了足夠的空間。底板上則提供以下外設接口:一個(gè)四線(xiàn)RS-232 串口(COM1),一個(gè)10M/100M自適應以太網(wǎng)接口,一個(gè)TFT LCD接口, 一個(gè)觸摸屏接口。核心板和底板配合即構成一個(gè)最小的完整應用系統。

  移植過(guò)程中我們采取了宿主機和目標板的開(kāi)發(fā)模式。宿主機是一臺運行Linux 的PC 機服務(wù)器,目標板即開(kāi)發(fā)板。先在宿主機上調試通過(guò)后,再移植到目標板上。

移植工作主要集中在兩個(gè)方面:

  在華恒開(kāi)發(fā)板附帶的軟件包中,已經(jīng)包括有了交叉編譯所需要的二進(jìn)制工具Binutils、標準C函數庫libc以及生成ARM平臺代碼的x86交叉編譯器gcc、g++等工具軟件包。將這些工具軟件安裝到宿主機上,將該安裝路徑添加至PATH環(huán)境變量中去,以便shell能夠找得到,這樣就完成了交叉編譯環(huán)境的設置。

  接下來(lái)就可以將GUI運行所需要的資源文件和可執行文件都采取交叉的方式進(jìn)行編譯,然后將編譯生成的文件添加到原來(lái)的文件系統中去,就可以將其下載到目標板上進(jìn)行調試了。

  下面著(zhù)重對Mini GUI系統的移植進(jìn)行介紹。


  MiniGUI圖形系統由函數庫、資源、演示程序三部分組成,相應地在對MiniGUI進(jìn)行移植時(shí)也要對這三部分分別進(jìn)行移植。

  MiniGUI使用了自由軟件常用的“automake”和“autoconf”接口,因此其配置和編譯非常容易。進(jìn)入MiniGUI源代碼樹(shù),運行autogen.sh腳本文件,該文件可以簡(jiǎn)單地重新生成所有與配置相關(guān)的文件,然后為當前的構建環(huán)境配置軟件。配置MiniGUI,加上啟動(dòng)交叉編譯的選項,關(guān)鍵有如下幾個(gè)選項:

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指定了目標機類(lèi)型,build指定了交叉編譯的系統環(huán)境,Prefix指定了MiniGUI安裝的函數庫、頭文件和手冊頁(yè)等資源的安裝路徑,enable-lite指定將MiniGUI配置為L(cháng)ite版本。關(guān)于其他的配置選項可以根據應用的特殊要求來(lái)打開(kāi)或者關(guān)閉,例如disable-jpgsupport去掉對jpeg庫的支持。關(guān)于這些配置選項的詳細說(shuō)明可以使用help打印清單或者參考《MiniGUI用戶(hù)手冊》。

  configure結果生成了一個(gè)標準的Makefile文件。接下來(lái)只要進(jìn)行簡(jiǎn)單的編譯、安裝就可以了。

  安裝MiniGUI資源文件minigui-res比較簡(jiǎn)單,只要修改目錄樹(shù)下的config.linux文件,將prefix選項改為和剛才的安裝路徑一致就可以了。然后直接執行make install。

  參照以上步驟對MiniGUI的演示程序MDE進(jìn)行交叉編譯,過(guò)程類(lèi)似,不再贅述。

  最后將安裝目錄下的庫文件、運行時(shí)自動(dòng)查找的配置文件及編譯后生成的可執行文件加入到Linux文件系統中去,重新制作ramdisk文件系統映像,再將新的文件系統下載到板子上,重新燒寫(xiě)FLASH就可以進(jìn)行調試了。運行時(shí)需要先執行一個(gè)Mginit服務(wù)器進(jìn)程,它將啟動(dòng)一個(gè)虛擬控制臺窗口,然后在這個(gè)窗口中運行應用程序,如運行bomb后可以在LCD上看到和Windows中類(lèi)似的掃雷界面。

Mcrowindows的資源包可以從http://microwindows.org下載,介紹從略。

Qt/Embedded的資源可以從http://www.trolltech.com下載,介紹從略。

三種主流嵌入式GUI的比較

  由于嵌入式GUI系統的開(kāi)發(fā)人員對實(shí)時(shí)嵌入式系統在理解上的不同,使得這些GUI系統在接口定義、體系結構、功能特性等方面存在著(zhù)很大的差別,還有就是它們所采用的技術(shù)路線(xiàn)也有所不同。

  MiniGUI的策略是首先建立在比較成熟的圖形引擎之上,比如 SVGALib和LibGGI,開(kāi)發(fā)的重點(diǎn)在于窗口系統如圖形接口。在MiniGUI的開(kāi)發(fā)中,引入了圖形抽象層和輸入抽象層(GAL和IAL)的概念。利用GAL和IAL,MiniGUI才可以在多種圖形引擎上運行,并且便于移植。它盡量保持與Win32的兼容,這樣在WinCE應用的任何場(chǎng)合,也可以使用MiniGUI。

  MicroWindows目前的開(kāi)發(fā)重點(diǎn)則在底層的圖形引擎,窗口系統和圖形接口方面的功能還比較欠缺。但是它能夠在沒(méi)有任何操作系統或其他圖形系統的支持下運行,它能夠對裸顯示設備進(jìn)行直接操作,因而顯得十分小巧,便于移植到各種硬件和軟件系統上。最上層的API支持Win32和Nano X接口,這樣就與Win32和X Window窗口系統保持了兼容,在這些系統間移植應用軟件就很容易了。

  Qt/Embedded是一個(gè)多平臺的C++圖形用戶(hù)界面應用程序框架,它注重于能給用戶(hù)提供精美的圖形用戶(hù)界面所需要的所有元素。而且它是基于一種面向對象的思想,所以用戶(hù)對其對象的擴展是相當容易的,并且它還支持真正的組件編程。

  另外,這些GUI系統所使用的授權條款也各有不同。MiniGUI、MicroWindows和Qt/Embedded均為自由軟件,只是所遵循的條款不同。

  上述GUI的詳細性能比較如表1所示。

結語(yǔ)

  MiniGUI最初是為了滿(mǎn)足一個(gè)工業(yè)控制系統(計算機數控系統)的需求而設計和開(kāi)發(fā)的,它在設計之初就考慮到了小巧、高性能和高效率,因此比較適合于工控領(lǐng)域的簡(jiǎn)單應用;而MicroWindows和Qt/Embedded則偏重于便攜式和手持PC/Device的需求。MiniGUI是由我國開(kāi)發(fā)的,中文的支持文檔比較多,大都可以從飛漫公司的網(wǎng)站(http://www.minigui.com)上免費獲得;而MicroWindows和Qt/Embedded均是外國項目,相對來(lái)說(shuō)發(fā)展得較成熟,文檔大多是英文的,在Qt的中文站點(diǎn)(http://www.qiliang.net)上也有部分翻譯文檔?!?/P>

參考文獻:

1.  北京飛漫軟件技術(shù)有限公司,MiniGUI技術(shù)白皮書(shū),版本1.2FM

2.  吳升艷、胡冰、岳春,‘Micro Windows體系結構及應用程序接口’,單片機與嵌入式系統應用,2003,5



關(guān)鍵詞: 嵌入式 嵌入式

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>