![嵌入式Linux環(huán)境下MiniGUI的研究與移植_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/6bd95fc8-5847-40f5-872b-dbc208887b81/6bd95fc8-5847-40f5-872b-dbc208887b811.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式linux環(huán)境下minigui的研究與移植近年來隨著設(shè)備與市場(chǎng)需求的廣泛結(jié)合,手機(jī)、pda等產(chǎn)品的應(yīng)用對(duì)可視化操作界面的簡(jiǎn)潔和便利提出了更高的要求,這都需要一個(gè)穩(wěn)定牢靠的高性能gui系統(tǒng)來提供支持。圖形用戶界面(graphic user interface,簡(jiǎn)稱gui)的廣泛流行是當(dāng)今計(jì)算機(jī)技術(shù)的重要成就之一,它極大地便利了非專業(yè)用戶的用法,人們可以通過窗口、菜單便利地舉行操作。嵌入式系統(tǒng)對(duì)gui的基本要求包括有輕型、占用資源少、高性能、高牢靠性以及可配置等。minigui是目前比較常用的幾種gui系統(tǒng)之一,與其他的gui相比,minigui最顯著的特點(diǎn)就是輕型、占用資源少,而且在這幾年
2、的進(jìn)展里,minigui已經(jīng)十分成熟和穩(wěn)定了,在許多產(chǎn)品和項(xiàng)目中都已得到了實(shí)際應(yīng)用。1 minigui的特點(diǎn)和體系結(jié)構(gòu)1. 1 minigui的特點(diǎn)minigui是由原清華高校老師魏永明主持開發(fā)的輕量級(jí)圖形系統(tǒng),是一種面對(duì)嵌入式或?qū)崟r(shí)系統(tǒng)的圖形用戶界面支持系統(tǒng)。它遵循gpl公約,是基于svgalib及thread庫的多窗口gui支持系統(tǒng)。能跨多種操作系統(tǒng),主要運(yùn)行于linux及一切具有posix線程支持的posix兼容系統(tǒng),包括一般嵌入式linux、ecos、uc/os-ii、等系統(tǒng),是國(guó)內(nèi)最早的自由軟件之一。minigui的主要特點(diǎn)有:(1) 遵循gpl條款的純自由軟件;(2) 提供了完備的
3、多窗口機(jī)制;(3) 多字符集和多字體支持,目前支持iso8859-1、gb2312及big5等字符集,并且支持各種光柵字體和truetype、type1等矢量字體;(4) 全拼和五筆等漢字輸入法支持;(5) bmp、gif、jpeg及pcx等常見圖像文件的支持;(6) windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)、插入符、定時(shí)器及加速鍵等;(7) 可移植性好。1.2 minigui的體系結(jié)構(gòu)1.2.1 多線程的分層設(shè)計(jì)從整體結(jié)構(gòu)上看,minigui是分層設(shè)計(jì)的,結(jié)構(gòu)所示。在最底層,gal(圖形抽象層)和ial(輸入抽象層)及鼠標(biāo)和鍵盤的驅(qū)動(dòng);中間層是minigui的核心層,包括窗口系統(tǒng)必不
4、行少的各個(gè)模塊;最頂層是api,即編程接口。gal和ial為minigui提供了底層的linux控制臺(tái)或者x window上的圖形接口以及輸入接口,而pthread用于提供內(nèi)核級(jí)線程支持的c函數(shù)庫。利用gal和ial,大大提高了minigui的可移植性,并且使程序的開發(fā)和調(diào)試變得越發(fā)簡(jiǎn)單。minigui本身運(yùn)行在多線程模式下,它的許多模塊都以單獨(dú)的線程運(yùn)行,同時(shí),minigui還利用線程來支持多窗口。從本質(zhì)上講,每個(gè)線程有一個(gè)消息隊(duì)列,消息隊(duì)列是實(shí)現(xiàn)線程數(shù)據(jù)交換和同步的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。一個(gè)線程向消息隊(duì)列中發(fā)送消息,而另一個(gè)線程從這個(gè)消息隊(duì)列中獵取消息,同一個(gè)線程中創(chuàng)建的窗口可分享同一個(gè)消息隊(duì)列。
5、一個(gè)線程向消息隊(duì)列中發(fā)送消息,而另一個(gè)線程從這個(gè)消息隊(duì)列中獵取消息,同一個(gè)線程中創(chuàng)建的窗口可分享同一個(gè)消息隊(duì)列。利用消息隊(duì)列和多線程之間的同步機(jī)制,可以實(shí)現(xiàn)下面要講到的微客戶/服務(wù)器機(jī)制。圖1minigui的層次結(jié)構(gòu)1.2.2 微客戶/服務(wù)器結(jié)構(gòu)在多線程環(huán)境中,與多進(jìn)程間的通訊機(jī)制類似,線程之間也有交互和同步的需求。比如, 用來管理窗口的線程維持全局的窗口列表, 而其他線程不能挺直修改這些全局的數(shù)據(jù)結(jié)構(gòu), 而必需依據(jù)“先來先服務(wù)”的原則,依次處理每個(gè)線程的哀求,這就是普通性的客戶/服務(wù)器模式。minigui利用線程之間的同步操作實(shí)現(xiàn)了客戶線程和服務(wù)器線程之間的微客戶/服務(wù)器機(jī)制。2 開發(fā)環(huán)境h
6、2410eb開發(fā)板由北京恒頤高科技術(shù)有限公司設(shè)計(jì)開發(fā),它基于samsung公司的a20嵌入式處理器。s3c2410a20內(nèi)嵌 arm920t 核,帶有全性能的mmu,具有高性能、低功耗、低成本、小體積等優(yōu)點(diǎn),適用于手持設(shè)備、汽車等領(lǐng)域。h2410eb除帶有大容量的sdram和flash以外,還擴(kuò)展了rs-232c串行接口、10mbps以太網(wǎng)接口、接口、音頻輸入/輸出接口、 host、usb slave、uart接口、iic接口、用戶自定義鍵盤、,便利用戶用法和舉行參考設(shè)計(jì)。它支持嵌入式linux操作系統(tǒng)的運(yùn)行,支持mp3/mpeg播放、gui、web 服務(wù)及其它服務(wù),同時(shí)可按照用戶需求開發(fā)特定
7、軟件與設(shè)備驅(qū)動(dòng)程序。操作系統(tǒng)采納裁減后的linux,linux kernel版本為v2.4.18,系統(tǒng)用法的交錯(cuò)編譯器是arm-linux-gcc。另外,還有驅(qū)動(dòng)程序源碼和測(cè)試程序源碼等代碼模塊。3 minigui的移植本文中用法的主機(jī)系統(tǒng)為red hat linux 9.0,移植目標(biāo)系統(tǒng)為linux2.4.18,minigui的版本是1.6.9。在主機(jī)上交錯(cuò)編譯minigui鏈接庫,然后將針對(duì)目標(biāo)機(jī)編譯的庫文件,與根文件系統(tǒng)一起燒寫到目標(biāo)板的ram空間,以后將運(yùn)行在目標(biāo)板上的圖形用戶界面挺直鏈接到該庫,脫離主機(jī)自立運(yùn)行。3.1 linux交錯(cuò)編譯環(huán)境的構(gòu)建gui的編譯通常都是在pc機(jī)上執(zhí)行的
8、,也就是說,編譯器本身能夠在pc機(jī)上執(zhí)行,同時(shí)編譯源代碼生成的二進(jìn)制文件必需能在目標(biāo)機(jī)上執(zhí)行,這類編譯器通常稱為交錯(cuò)編譯器。對(duì)于arm平臺(tái),我們安裝了cross-arm-binutils-2.10-1.i386.rpm、cross-arm-gcc-2.95.3-2.i386.rpm、cross-arm-glibc-2.1.3-2.i386.rpm這三個(gè)包。這些包都可以從網(wǎng)上免費(fèi)獵取。arm-binutils這個(gè)包普通包含了一些針對(duì)arm平臺(tái)的二進(jìn)制工具,比如arm-strip、arm-ar等指令;arm-glibc這個(gè)包包含的是標(biāo)準(zhǔn)c的函數(shù)庫的arm的版本以及對(duì)應(yīng)的頭文件;arm-gcc中包含
9、的則是生成arm平臺(tái)代碼的x86上的交錯(cuò)編譯器。執(zhí)行rpm指令將這些包安裝到pc機(jī)上,若不在系統(tǒng)默認(rèn)搜尋名目下,則必需將安裝名目加到系統(tǒng)的path環(huán)境變量中,這樣在每次編譯時(shí)系統(tǒng)才干找得到編譯器。以root用戶登陸linux系統(tǒng),在主機(jī)上用rpm命令安裝交錯(cuò)編譯工具,arm-linux-gcc將被安裝到/usr/local/arm/2.95.3/下面。此時(shí),gcc為 /usr/local/arm/2.95.3/bin/arm-linux-gcc,而它的include為 /usr/local/arm/2.95.3/arm-linux/include,對(duì)應(yīng)的lib為 /usr/local/arm/
10、2.95.3-/arm-linux/lib。然后,在你的bashrc 中添加環(huán)境變量即可。執(zhí)行vi .bashrc,最后一行加入:export path=$path:/usr/local/arm/2.95.3/bin路徑,保存退出后執(zhí)行source .bashrc。另外需要注重的是,編譯時(shí)所用的函數(shù)庫版本要與目標(biāo)版上運(yùn)行時(shí)所用的函數(shù)庫版本全都。經(jīng)過上述步驟,就已經(jīng)建立了交錯(cuò)編譯環(huán)境,接下來的就是舉行minigui的選項(xiàng)配置和交錯(cuò)編譯。3.2 minigui的配置和交錯(cuò)編譯我們可以從網(wǎng)上()免費(fèi)得到minigui-1.6.9的資源文件壓縮包,minigui1.6.9的源程序包包括以下三個(gè)部分:l
11、ibminigui-1.6.9.tar.gzminigui函數(shù)庫源代碼;miniguires-1.6.9.tar.gzminigui所用法的資源,包括基本字體、圖標(biāo)、位圖、輸入法等;mde-1.6.9.tar.gzminigui的綜合演示程序。3.2.1 minigui函數(shù)庫的安裝和編譯進(jìn)入名目libminigui-1.6.9,再運(yùn)行./configure腳本:cc= arm-linux-gcc ./configure -prefix=/mnt/nfs/local -build=i386-linux -host=arm-linux -target=arm-linux -disable-lite
12、 -disable-micemoveable -disable-cursor在這里,cc是用來指定所用法的編譯器,arm-linux-gcc即為安裝到主機(jī)上的交錯(cuò)編譯工具。另外,prefix為minigui函數(shù)庫的安裝目標(biāo)路徑;build是指執(zhí)行編譯的主機(jī);host交錯(cuò)編譯后的程序?qū)⑦\(yùn)行的系統(tǒng);target是運(yùn)行該編譯器所產(chǎn)生的目標(biāo)文件的平臺(tái);disablelite建立minigui-threads版本的應(yīng)用程序;disablemicemoveable禁止窗口移動(dòng);disablecursor因?yàn)橄到y(tǒng)采納觸摸屏,所以用此選項(xiàng)用來關(guān)閉鼠標(biāo)光標(biāo)顯示。假如運(yùn)行./configure腳本勝利通過,就可繼
13、續(xù)舉行下面的編譯了,執(zhí)行make和make install指令編譯安裝libminigui。這里要注重的是,執(zhí)行make install指令時(shí)要切換到root用戶權(quán)限下,不然安裝時(shí)沒法把文件裝到指定名目下。安裝勝利后,minigui 的函數(shù)庫和頭文件以及配置文件等資源將被安裝到/usr/local/arm/2.95.3/arm-linux/名目中,詳細(xì)狀況為:函數(shù)庫被裝在lib/ 子名目中;頭文件被裝在include/ 子名目中;手冊(cè)被裝在man/ 子名目中;配置文件被裝在etc/ 子名目中。3.2.2 minigui資源的編譯安裝主機(jī)上解壓資源文件:tar zxf miniguires-1.
14、6.9.tar.gz,可生成miniguires-1.6.9名目。在安裝之前先要修改名目中的configure.linux文件,執(zhí)行vi configure.linux打開文件,把prefix選項(xiàng)部分的默認(rèn)值 /usr/local/ 改為 /usr/local/arm/2.95.3/arm-linux/,這樣運(yùn)行make install安裝指令后minigui資源將被安裝到目標(biāo)系統(tǒng)中的/usr/local/arm/2.95.3/arm-linux/lib/minigui-/res的名目下。3.2.3 實(shí)例程序的編譯安裝解壓mde-1.6.9.tar.gz并進(jìn)入該名目,修改名目下配置文件conf
15、igure.in,把其中的ac_check_headers(minigui/commmon.h, have_libminigui=yes, foo=bar)中的minigui/-commmon.h改為$prefix/include/minigui/common.h,來指定交錯(cuò)編譯時(shí)搜minigui的頭文件路徑,防止編譯時(shí)系統(tǒng)找不到頭文件;在全部lib="$lib后加入lprefix/lib來指定編譯時(shí)所需要庫文件的路徑。并將libpopt-dev-arm-cross-1.6.tgz解壓所生成的頭文件和庫文件分離放入目標(biāo)名目的include和lib中,用以支持mde中程序在arm下的交
16、錯(cuò)編譯。然后執(zhí)行./autogen.sh,重新生成configure腳本,用法上面配置的腳本然后執(zhí)行make指令,即可完成實(shí)例程序的編譯。4 拷貝minigui資源到開發(fā)板編譯完minigui和實(shí)例程序之后,需要把minigui庫、資源和應(yīng)用程序拷貝到為目標(biāo)機(jī)器預(yù)備的文件系統(tǒng)名目中,然后生成文件系統(tǒng)映像,再下載到目標(biāo)板上運(yùn)行??梢酝ㄟ^串口、usb口或以太網(wǎng)口將文件系統(tǒng)映像下載到目標(biāo)機(jī)器中。在執(zhí)行程序之前,還有一件重要的事情要做,就是在開發(fā)板上的linux中配置好minigui的運(yùn)行環(huán)境。5 板載linux的環(huán)境配置minigui可以用法多種圖形引擎舉行圖像顯示,有qvfb、svgalib、li
17、bggi等等,固然也可以自己編寫一個(gè)圖形引擎供minigui用法。這里我們用法qvfb來作為minigui的圖形引擎舉行圖像顯示。qvfb(vitural framebuffer)是在宿主機(jī)上模擬幀緩沖的,它是x window用來運(yùn)行和測(cè)試應(yīng)用程序的系統(tǒng)程序,用法了分享存儲(chǔ)區(qū)域(虛擬的幀緩沖)來模擬幀緩沖并且在一個(gè)窗口中模擬一個(gè)應(yīng)用來顯示幀緩沖。首先對(duì)qvfb舉行安裝,可以從這里下載(-1.0.tar.gz),下載下來后舉行解壓:tar zxf qvfb-1.0.tar.gz并進(jìn)入到qvfb-1.0名目,執(zhí)行./configure腳本后即可用make和make install指令舉行編譯安裝。
18、更改minigui的配置文件minigui.cfg設(shè)置設(shè)備驅(qū)動(dòng)程序,設(shè)置顯示區(qū)域及字體等內(nèi)容。修改/usr/local/etc名目下的配置文件minigui.cfg,將其中的驅(qū)動(dòng)引擎gal_engine和ial_engine設(shè)置為qvfb,再將其中qvfb的defaultmode設(shè)置為合適的顯示模式。然后把qvfb加到可執(zhí)行路徑中去,執(zhí)行vi .bashrc指令,在 .bashrc最后面加上export path=/usr/local/arm/2.95.3/bin -:$path,保存退出后用source .bashrc指令執(zhí)行一下即可。在x window中,打開一個(gè)終端程序,執(zhí)行qvfb &指令。在qvfb中選中file configure,將qvfb設(shè)置成嵌入式開發(fā)系統(tǒng)的液晶屏的大小。合理設(shè)置minigui的配置文件后,接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)場(chǎng)急救與個(gè)人安全防護(hù)的融合應(yīng)用
- 智慧商業(yè)與工業(yè)互聯(lián)網(wǎng)平臺(tái)的未來規(guī)劃探討
- 智在行探討青少年的全方位技能開發(fā)
- 網(wǎng)絡(luò)環(huán)境下賓館酒店的品牌建設(shè)講座提綱
- 科技驅(qū)動(dòng)下的創(chuàng)意產(chǎn)品設(shè)計(jì)策略
- 語言運(yùn)用能力在小學(xué)作文教學(xué)中的培養(yǎng)
- 2025年南充貨運(yùn)從業(yè)資格證模擬考試下載什么軟件
- 展會(huì)設(shè)計(jì)的核心展板的創(chuàng)意與功能結(jié)合
- 2025年度洗車房租賃合同及汽車美容、維修業(yè)務(wù)合作框架協(xié)議
- 二零二五年度中小企業(yè)金融貸款服務(wù)合同
- (二模)遵義市2025屆高三年級(jí)第二次適應(yīng)性考試試卷 地理試卷(含答案)
- 二零二五隱名股東合作協(xié)議書及公司股權(quán)代持及回購(gòu)協(xié)議
- IQC培訓(xùn)課件教學(xué)課件
- 2025年計(jì)算機(jī)二級(jí)WPS考試題目
- 高管績(jī)效考核全案
- 2024年上海市中考英語試題和答案
- 教育部《中小學(xué)校園食品安全和膳食經(jīng)費(fèi)管理工作指引》知識(shí)培訓(xùn)
- 長(zhǎng)沙醫(yī)學(xué)院《無機(jī)化學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- eras婦科腫瘤圍手術(shù)期管理指南解讀
- GB/T 750-2024水泥壓蒸安定性試驗(yàn)方法
- 初一到初三英語單詞表2182個(gè)帶音標(biāo)打印版
評(píng)論
0/150
提交評(píng)論