當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ARM-Linux的MiniGUI的仿真與移植

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

圖1 MiniGUI的分層體系結(jié)構(gòu)

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

圖2 MiniGUI在QVFB上的仿真

[!--empirenews.page--]3 MiniGUI在S3C2410上的移植
3.1安裝MiniGUI資源文件
      在PC機(jī)的/opt目錄下創(chuàng)建target目錄,將資源文件minigui-res-1.3.3.tar.gz復(fù)制到/opt/target目錄下進(jìn)行解壓,編輯/opt/target /minigui-res-1.3.3目錄下的config.linux文件,將“TOPDIR=”改為“TOPDIR= /opt /target/minigui”,保存退出。然后輸入make install將資源文件安裝在/opt/target /minigui /usr/local/lib/minigui/res目錄下。同時把/opt/target/minigui/usr/local/lib目錄下的minigui目錄復(fù)制到需要制作的文件系統(tǒng)的文件夾中。
3.2 配置安裝MiniGUI庫文件
      在編譯MiniGUI的庫文件libminigui -1.3.3之前,首先要正確安裝了交叉編譯器,即armv41-unknow-linux系列的交叉編譯器。使用交叉編譯器可以把libminigui-1.3.3庫文件編譯成一個動態(tài)鏈接庫,通過調(diào)用該動態(tài)鏈接庫,可以正確運(yùn)行MiniGUI的應(yīng)用程序。在/opt/target /libminigui-1.3.3下,輸入命令make menuconfig進(jìn)行配置。當(dāng)配置完成后,保存退出。然后輸入make和make install,這樣就將交叉編譯后的MiniGUI庫文件安裝在/opt/host/armv41/armv41–unkn own-linux/lib目錄下,分別是libminigui-1. 3.so.3.0.0和libmgext -1.3.so.3.0.0。同時,還有指向這些庫的符號鏈接,指向庫文件libminigui-1.3.so.3.0.0的符號鏈接是libminigui -1.3.so.3和libminigui.so,指向庫文件libmgext-1.3.so.3.0.0符號鏈接是libgext  -1.3.so.3和lib-mgext.so。MiniGUI所使用的頭文件安裝在/opt/host/armv41/armv41  -unknown-linux/include/minigui文件夾內(nèi)。同時在/opt/host/armv41/armv41-unknown– linux/etc/中還有一個minigui.cfg的配置文件。
3.3 MiniGUI的移植
      將MiniGUI成功移植到S3C2410目標(biāo)板上,一般要經(jīng)過以下幾個過程:
(1) 把MiniGUI庫文件libminigui-1.3. so.3.0.0和libgext -1.3.so.3.0.0,以及它們的符號鏈接文件,一同復(fù)制到要制作成cramfs文件系統(tǒng)的目錄root_tech中的/lib下。
(2) 把/opt/target/minigui/usr/local/lib下的minigui目錄復(fù)制到要制作cramfs文件系統(tǒng)的目錄中,比如放到該目錄的/usr/sbin/下。當(dāng)嵌入式系統(tǒng)運(yùn)行時,應(yīng)用程序在該minigui目錄下調(diào)用相關(guān)的資源文件。
(3) 在root_tech文件夾內(nèi),用mkdir –p /opt/host/armv41/armv41-unknown-linux/ 命令創(chuàng)建一個目錄,然后使用命令ln –s /lib /opt/host/armv41/armv41-unknown-linux/lib創(chuàng)建符號鏈接,上述命令確保系統(tǒng)能夠找到正確的動態(tài)鏈接庫。
(4) 修改/opt/host/armv41/armv41–un known–linux/etc目錄下的MiniGUI.cfg文件,把存放資源的路徑改為root_tech目錄下對應(yīng)的路徑,從而使應(yīng)用程序能夠找到它使用的資源文件。例如,在PC機(jī)上的存放路徑為/usr/local/lib,那么在root_tech目錄下,如果把MiniGUI資源目錄放到了/usr/sbin下,則MiniGUI.cfg文件中的路徑必須由/usr/local/lib改為/usr/sbin/,同時還要將“ial_engine=console”改為“ial_engine =ads”。另外,將[fbcon]下的“defaultmode =1024×768-16 bpp”改為“defaultmode =640×480-16 bpp”。將修改后的MiniGUI.cfg文件要放到root_tech目錄的/mnt/etc目錄下。
(5) 最后,把準(zhǔn)備好的root_tech文件夾,利用mkcramfs命令生成cramfs文件系統(tǒng),利用NFS網(wǎng)絡(luò)文件系統(tǒng)將生成的文件系統(tǒng)移植到S3C2410中。然后從minicom下進(jìn)入可執(zhí)行文件所在的目錄/usr/sbin,可執(zhí)行程序bomb在S3C2410目標(biāo)板上運(yùn)行的結(jié)果如下圖3所示:

圖3 MiniGUI在S3C2410開發(fā)板上運(yùn)行

4結(jié)束語
      本文將MiniGUI-1.3.3版本在ARM - Linux環(huán)境下,首先在QVFB中進(jìn)行了仿真應(yīng)用,同時經(jīng)過交叉編譯后成功的移植到了S3C2410開發(fā)板的硬件平臺上,試驗(yàn)結(jié)果表明能夠穩(wěn)定可靠的運(yùn)行,為后續(xù)基于圖形用戶界面程序的實(shí)際項(xiàng)目的開發(fā)與應(yīng)用打下了基礎(chǔ)。隨著嵌入式產(chǎn)品應(yīng)用領(lǐng)域的日益增長,基于MiniGUI開發(fā)出良好的人機(jī)交互界面,是嵌入式發(fā)展的趨勢,同時也擁有廣闊的市場前景。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉