新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM-Linux的MiniGUI的仿真與移植

基于ARM-Linux的MiniGUI的仿真與移植

作者: 時(shí)間:2009-12-16 來(lái)源:網(wǎng)絡(luò) 收藏
近幾年,隨著嵌入式系統(tǒng)的日益發(fā)展和32位嵌入式處理器以及圖形顯示設(shè)備的廣泛應(yīng)用,目標(biāo)產(chǎn)品對(duì)GUI(圖形用戶界面)的需求越來(lái)越多。由于嵌入式系統(tǒng)一般實(shí)時(shí)性要求很高,所以嵌入式系統(tǒng)下的GUI需要具有輕量級(jí)型、占用資源少、高性能等特點(diǎn)。此外,嵌入式系統(tǒng)往往是一種定制設(shè)備,它對(duì)GUI的需求各不相同,因此,GUI必須也可以定制。而是一個(gè)非常適合實(shí)時(shí)嵌入式產(chǎn)品的高效、可靠、可定制、小巧靈活的圖形用戶界面支持系統(tǒng),被廣泛的應(yīng)用于高端科技產(chǎn)品中。利用開(kāi)發(fā)出良好的人機(jī)交互界面已成為嵌入式開(kāi)發(fā)中的迫切需求。本文實(shí)現(xiàn)了在環(huán)境下進(jìn)行QVFB的的模擬開(kāi)發(fā)、調(diào)試,通過(guò)在PC機(jī)上的模擬,將應(yīng)用程序完成之后,利用交叉編譯工具編譯產(chǎn)生在目標(biāo)機(jī)上運(yùn)行的代碼,然后把MiniGUI和可執(zhí)行應(yīng)用程序到S3C2410目標(biāo)板上,這樣既節(jié)省了開(kāi)發(fā)時(shí)間,又提高了開(kāi)發(fā)效率和質(zhì)量。
1MiniGUI的特點(diǎn)和體系結(jié)構(gòu)
MiniGUI項(xiàng)目的最初目標(biāo)是為Linux的實(shí)時(shí)嵌入式操作系統(tǒng)提供一個(gè)輕量級(jí)的圖像用戶界面支持系統(tǒng)。作為操作系統(tǒng)和應(yīng)用程序之間的中間件,MiniGUI將底層操作系統(tǒng)與硬件平臺(tái)之間的差別隱藏起來(lái),并對(duì)上層應(yīng)用程序提供了一致的功能特性。
1.1MiniGUI的特點(diǎn)
(1)占用資源少:MiniGUI本身占用的空間非常小,整個(gè)MiniGUI系統(tǒng)占用空間在2~4MB,在某些系統(tǒng)上,MiniGUI系統(tǒng)本身所占用的空間可進(jìn)一步縮小到1MB以內(nèi)。
(2)高性能、高可靠性:MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。
(3)可定制配置:和Linux內(nèi)核類(lèi)似,MiniGUI也具有大量的編譯配置選項(xiàng),通過(guò)這些選項(xiàng)可指定MiniGUI庫(kù)中包括哪些用戶所需要的功能。
(4)跨操作系統(tǒng)支持:MiniGUI支持Linux/uClinux、eCos、uC/OS-II、VxWorks等嵌入式操作系統(tǒng)。同時(shí),在不同操作系統(tǒng)上的MiniGUI,提供完全兼容的API接口。
1.2MiniGUI的體系結(jié)構(gòu)
從整體結(jié)構(gòu)上看,MiniGUI采用的是分層設(shè)計(jì)的,結(jié)構(gòu)如圖1所示。

圖1MiniGUI的分層體系結(jié)構(gòu)
在最底層,GAL(圖形抽象層)和IAL(輸入抽象層)及鼠標(biāo)和鍵盤(pán)的驅(qū)動(dòng);中間層是MiniGUI的核心層,包括窗口系統(tǒng)必不可少的各個(gè)模塊;最頂層是API,即編程接口。GAL和IAL為MiniGUI提供了底層的Linux控制臺(tái)或者X-Window上的圖形接口以及輸入接口,而Pthread用于提供內(nèi)核級(jí)線程支持的C函數(shù)庫(kù)。利用GAL和IAL,大大提高了MiniGUI的可性,并且使程序開(kāi)發(fā)和調(diào)試變得更加容易。
2MiniGUI在QVFB上的應(yīng)用
MiniGUI能夠在PC機(jī)上運(yùn)行,也能夠到目標(biāo)板上運(yùn)行。在運(yùn)行Linux的PC機(jī)上,MiniGUI應(yīng)用程序可以通過(guò)以下兩種方式運(yùn)行:
(1)在X-Window上,在虛擬FrameBuffer的QVFB中運(yùn)行;
(2)在Linux的字符控制臺(tái)上,在Linux內(nèi)核提供的FrameBuffer驅(qū)動(dòng)上運(yùn)行;
這里主要介紹MiniGUI在QVFB中的運(yùn)行。QVFB是Qt(Qt是Linux窗口管理器KDE使用的底層函數(shù)庫(kù))提供的一個(gè)虛擬FrameBuffer工具,該程序是Qt開(kāi)發(fā)的。
2.1建立MiniGUI在Linux上的運(yùn)行環(huán)境
在Linux環(huán)境下,將已經(jīng)下載好的壓縮安裝文件qvfb-1.0.tar.gz復(fù)制到/opt目錄下,在該目錄下解壓,利用makeinstall命令把QVFB安裝到系統(tǒng)默認(rèn)的/usr/local/bin目錄下。在X-Window環(huán)境下,打開(kāi)終端,鍵入qvfb命令,啟動(dòng)QVFB模擬程序。接下來(lái)對(duì)QVFB的運(yùn)行環(huán)境進(jìn)行配置,這里配置為640×480,Depth為16bit。QVFB提供了一種軟件的方法,通過(guò)這種方法,可以看到自己的圖像應(yīng)用程序在PC上運(yùn)行的效果。它能模擬不同的分辨率及顯示的顏色數(shù),因此可以模擬目標(biāo)機(jī)上的嵌入式顯示屏,從而大大方便了應(yīng)用程序的開(kāi)發(fā)與調(diào)試。
2.2安裝資源文件和配置MiniGUI的庫(kù)文件
在Linux環(huán)境下,將已下載好的壓縮資源文件
minigui-res-1.3.3.tar.gz(該文件包含字體、光標(biāo)、圖標(biāo)、位圖等資源)復(fù)制到/opt/emulation目錄下(emulation目錄為新創(chuàng)建的目錄),然后運(yùn)行./configure腳本成功通過(guò),就可以執(zhí)行make和makeinstall命令,將資源文件安裝到系統(tǒng)默認(rèn)的/usr/local/lib/minigui/res目錄中。將下載好的壓縮庫(kù)文件libminigui-1.3.3.tar.gz復(fù)制到/opt/emulation目錄下,輸入解壓縮命令然后進(jìn)入解壓后的目錄,在該目錄下輸入makemenuconfig,啟動(dòng)圖像界面的配置工具,當(dāng)配置完成后,輸入make對(duì)庫(kù)文件進(jìn)行重新編譯,如果編譯成功,輸入makeinstall命令,將MiniGUI庫(kù)安裝到默認(rèn)的/usr/local/lib/目錄下。接下來(lái),查看文件/etc/ld.so.conf,如果文件中沒(méi)有/usr/local/lib這一行,將該行添加到文件的最后,然后執(zhí)行l(wèi)dconfig。
2.3MiniGUI在QVFB上的仿真
將已下載的mg-samples-1.3.1和mde-1.3.0.tar.gz復(fù)制到/opt/emlation/目錄下,在終端下進(jìn)入該目錄,依次執(zhí)行./configure和make命令,將這些示例程序編譯成能夠在QVFB上可執(zhí)行的程序。首先修改/usr/local/etc目錄下的配置文件MiniGUI.cfg,將gal_engine=fbcon改為gal_engine=qvfb,ial_engine=console改為ial_engine=qvfb。然后使用qvfb命令啟動(dòng)qvfb,運(yùn)行/opt/emulation/mg-samples/src目錄中的可執(zhí)行程序,如bomb,即可看到運(yùn)行在QVFB內(nèi)的MiniGUI程序,如圖2所示:

圖2MiniGUI在QVFB上的仿真
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 移植 仿真 MiniGUI ARM-Linux 基于

評(píng)論


相關(guān)推薦

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

關(guān)閉