基于A(yíng)RM-Linux的MiniGUI的仿真與移植

發(fā)布時(shí)間:2010-11-18 11:16    發(fā)布者:eetech
關(guān)鍵詞: arm , linux , MiniGUI , 仿真 , 移植
近幾年,隨著(zhù)嵌入式系統的日益發(fā)展和32位嵌入式處理器以及圖形顯示設備的廣泛應用,目標產(chǎn)品對GUI(圖形用戶(hù)界面)的需求越來(lái)越多。由于嵌入式系統一般實(shí)時(shí)性要求很高,所以嵌入式系統下的GUI需要具有輕量級型、占用資源少、高性能等特點(diǎn)。此外,嵌入式系統往往是一種定制設備,它對GUI的需求各不相同,因此,GUI必須也可以定制。而MiniGUI是一個(gè)非常適合實(shí)時(shí)嵌入式產(chǎn)品的高效、可靠、可定制、小巧靈活的圖形用戶(hù)界面支持系統,被廣泛的應用于高端科技產(chǎn)品中。利用MiniGUI開(kāi)發(fā)出良好的人機交互界面已成為嵌入式開(kāi)發(fā)中的迫切需求。本文實(shí)現了在ARM-Linux環(huán)境下進(jìn)行基于QVFB的MiniGUI的模擬開(kāi)發(fā)、調試,通過(guò)在PC機上的仿真模擬,將應用程序完成之后,利用交叉編譯工具編譯產(chǎn)生在目標機上運行的代碼,然后把MiniGUI和可執行應用程序移植到S3C2410目標板上,這樣既節省了開(kāi)發(fā)時(shí)間,又提高了開(kāi)發(fā)效率和質(zhì)量。

1 MiniGUI的特點(diǎn)和體系結構

MiniGUI項目的最初目標是為基于Linux的實(shí)時(shí)嵌入式操作系統提供一個(gè)輕量級的圖像用戶(hù)界面支持系統。作為操作系統和應用程序之間的中間件,MiniGUI將底層操作系統與硬件平臺之間的差別隱藏起來(lái),并對上層應用程序提供了一致的功能特性。

1.1 MiniGUI的特點(diǎn)

(1)占用資源少:MiniGUI本身占用的空間非常小,整個(gè)MiniGUI系統占用空間在2~4MB,在某些系統上,MiniGUI系統本身所占用的空間可進(jìn)一步縮小到1MB以?xún)取?br />
(2)高性能、高可靠性:MiniGUI良好的體系結構及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。

(3)可定制配置:和Linux內核類(lèi)似,MiniGUI也具有大量的編譯配置選項,通過(guò)這些選項可指定MiniGUI庫中包括哪些用戶(hù)所需要的功能。

(4)跨操作系統支持:MiniGUI支持Linux/uClinux、eCos、uC/OS-II、VxWorks等嵌入式操作系統。同時(shí),在不同操作系統上的MiniGUI,提供完全兼容的API接口。

1.2 MiniGUI的體系結構

從整體結構上看,MiniGUI采用的是分層設計的,結構如圖1所示。







圖1 MiniGUI的分層體系結構


在最底層,GAL(圖形抽象層)和IAL(輸入抽象層)及鼠標和鍵盤(pán)的驅動(dòng);中間層是MiniGUI的核心層,包括窗口系統必不可少的各個(gè)模塊;最頂層是API,即編程接口。GAL和IAL為MiniGUI提供了底層的Linux控制臺或者X-Window上的圖形接口以及輸入接口,而Pthread用于提供內核級線(xiàn)程支持的C函數庫。利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序開(kāi)發(fā)和調試變得更加容易。

2 MiniGUI在QVFB上的仿真應用

MiniGUI能夠在PC機上運行,也能夠移植到目標板上運行。在運行Linux的PC機上,MiniGUI應用程序可以通過(guò)以下兩種方式運行:

(1)在X-Window上,在虛擬FrameBuffer的QVFB中運行;

(2)在Linux的字符控制臺上,在Linux內核提供的FrameBuffer驅動(dòng)上運行;

這里主要介紹MiniGUI在QVFB中的仿真運行。QVFB是Qt(Qt是Linux窗口管理器KDE使用的底層函數庫)提供的一個(gè)虛擬FrameBuffer工具,該程序是基于Qt開(kāi)發(fā)的。

2.1 建立MiniGUI在Linux上的運行環(huán)境

在Linux環(huán)境下,將已經(jīng)下載好的壓縮安裝文件qvfb-1.0.tar.gz復制到/opt目錄下,在該目錄下解壓,利用makeinstall命令把QVFB安裝到系統默認的/usr/local/bin目錄下。在X-Window環(huán)境下,打開(kāi)終端,鍵入qvfb&命令,啟動(dòng)QVFB模擬程序。接下來(lái)對QVFB的運行環(huán)境進(jìn)行配置,這里配置為640×480,Depth為16bit。QVFB提供了一種軟件的方法,通過(guò)這種方法,可以看到自己的圖像應用程序在PC上運行的效果。它能模擬不同的分辨率及顯示的顏色數,因此可以模擬目標機上的嵌入式顯示屏,從而大大方便了應用程序的開(kāi)發(fā)與調試。

2.2 安裝資源文件和配置MiniGUI的庫文件

在Linux環(huán)境下,將已下載好的壓縮資源文件
minigui-res-1.3.3.tar.gz(該文件包含字體、光標、圖標、位圖等資源)復制到/opt/emulation目錄下(emulation目錄為新創(chuàng )建的目錄),然后運行./configure腳本成功通過(guò),就可以執行make和makeinstall命令,將資源文件安裝到系統默認的/usr/local/lib/minigui/res目錄中。將下載好的壓縮庫文件libminigui-1.3.3.tar.gz復制到/opt/emulation目錄下,輸入解壓縮命令然后進(jìn)入解壓后的目錄,在該目錄下輸入makemenuconfig,啟動(dòng)圖像界面的配置工具,當配置完成后,輸入make對庫文件進(jìn)行重新編譯,如果編譯成功,輸入makeinstall命令,將MiniGUI庫安裝到默認的/usr/local/lib/目錄下。接下來(lái),查看文件/etc/ld.so.conf,如果文件中沒(méi)有/usr/local/lib這一行,將該行添加到文件的最后,然后執行ldconfig。

2.3 MiniGUI在QVFB上的仿真

將已下載的mg-samples-1.3.1和mde-1.3.0.tar.gz復制到/opt/emlation/目錄下,在終端下進(jìn)入該目錄,依次執行./configure和make命令,將這些示例程序編譯成能夠在QVFB上可執行的程序。首先修改/usr/local/etc目錄下的配置文件MiniGUI.cfg,將gal_engine=fbcon改為gal_engine=qvfb,ial_engine=console改為ial_engine=qvfb。然后使用qvfb&命令啟動(dòng)qvfb,運行/opt/emulation/mg-samples/src目錄中的可執行程序,如bomb,即可看到運行在QVFB內的MiniGUI程序,如圖2所示:





圖2MiniGUI在QVFB上的仿真

3 MiniGUI在S3C2410上的移植

3.1 安裝MiniGUI資源文件

在PC機的/opt目錄下創(chuàng )建target目錄,將資源文件minigui-res-1.3.3.tar.gz復制到/opt/target目錄下進(jìn)行解壓,編輯/opt/target/minigui-res-1.3.3目錄下的config.linux文件,將“TOPDIR=”改為“TOPDIR=/opt/target/minigui”,保存退出。然后輸入makeinstall將資源文件安裝在/opt/target/minigui/usr/local/lib/minigui/res目錄下。同時(shí)把/opt/target/minigui/usr/local/lib目錄下的minigui目錄復制到需要制作的文件系統的文件夾中。

3.2 配置安裝MiniGUI庫文件

在編譯MiniGUI的庫文件libminigui-1.3.3之前,首先要正確安裝了交叉編譯器,即armv41-unknow-linux系列的交叉編譯器。使用交叉編譯器可以把libminigui-1.3.3庫文件編譯成一個(gè)動(dòng)態(tài)鏈接庫,通過(guò)調用該動(dòng)態(tài)鏈接庫,可以正確運行MiniGUI的應用程序。在/opt/target/libminigui-1.3.3下,輸入命令makemenuconfig進(jìn)行配置。當配置完成后,保存退出。然后輸入make和makeinstall,這樣就將交叉編譯后的MiniGUI庫文件安裝在/opt/host/armv41/armv41–unknown-linux/lib目錄下,分別是libminigui-1.3.so.3.0.0和libmgext-1.3.so.3.0.0。同時(shí),還有指向這些庫的符號鏈接,指向庫文件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文件夾內。同時(shí)在/opt/host/armv41/armv41-unknown–linux/etc/中還有一個(gè)minigui.cfg的配置文件。

3.3 MiniGUI的移植

將MiniGUI成功移植到S3C2410目標板上,一般要經(jīng)過(guò)以下幾個(gè)過(guò)程:

(1)把MiniGUI庫文件libminigui-1.3.so.3.0.0和libgext-1.3.so.3.0.0,以及它們的符號鏈接文件,一同復制到要制作成cramfs文件系統的目錄root_tech中的/lib下。

(2)把/opt/target/minigui/usr/local/lib下的minigui目錄復制到要制作cramfs文件系統的目錄中,比如放到該目錄的/usr/sbin/下。當嵌入式系統運行時(shí),應用程序在該minigui目錄下調用相關(guān)的資源文件。

(3)在root_tech文件夾內,用mkdir–p/opt/host/armv41/armv41-unknown-linux/命令創(chuàng )建一個(gè)目錄,然后使用命令ln–s/lib/opt/host/armv41/armv41-unknown-linux/lib創(chuàng )建符號鏈接,上述命令確保系統能夠找到正確的動(dòng)態(tài)鏈接庫。

(4)修改/opt/host/armv41/armv41–unknown–linux/etc目錄下的MiniGUI.cfg文件,把存放資源的路徑改為root_tech目錄下對應的路徑,從而使應用程序能夠找到它使用的資源文件。例如,在PC機上的存放路徑為/usr/local/lib,那么在root_tech目錄下,如果把MiniGUI資源目錄放到了/usr/sbin下,則MiniGUI.cfg文件中的路徑必須由/usr/local/lib改為/usr/sbin/,同時(shí)還要將“ial_engine=console”改為“ial_engine=ads”。另外,將[fbcon]下的“defaultmode=1024×768-16bpp”改為“defaultmode=640×480-16bpp”。將修改后的MiniGUI.cfg文件要放到root_tech目錄的/mnt/etc目錄下。

(5)最后,把準備好的root_tech文件夾,利用mkcramfs命令生成cramfs文件系統,利用NFS網(wǎng)絡(luò )文件系統將生成的文件系統移植到S3C2410中。然后從minicom下進(jìn)入可執行文件所在的目錄/usr/sbin,可執行程序bomb在S3C2410目標板上運行的結果如下圖3所示:







圖3 MiniGUI在S3C2410開(kāi)發(fā)板上運行

4 結束語(yǔ)

本文將MiniGUI-1.3.3版本在A(yíng)RM-Linux環(huán)境下,首先在QVFB中進(jìn)行了仿真應用,同時(shí)經(jīng)過(guò)交叉編譯后成功的移植到了S3C2410開(kāi)發(fā)板的硬件平臺上,試驗結果表明能夠穩定可靠的運行,為后續基于圖形用戶(hù)界面程序的實(shí)際項目的開(kāi)發(fā)與應用打下了基礎。隨著(zhù)嵌入式產(chǎn)品應用領(lǐng)域的日益增長(cháng),基于MiniGUI開(kāi)發(fā)出良好的人機交互界面,是嵌入式發(fā)展的趨勢,同時(shí)也擁有廣闊的市場(chǎng)前景。
本文地址:http://selenalain.com/thread-40412-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页