嵌入式Linux環(huán)境下MiniGUI的研究與移植
3.2.2 MiniGUI函數(shù)庫(kù)的安裝和編譯
進(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――disable-micemoveable――disable-cursor在這里,CC是用來(lái)指定所使用的編譯器,arm-linux-gcc即為安裝到主機(jī)上的交叉編譯工具。另外,
--prefix為MiniGUI函數(shù)庫(kù)的安裝目標(biāo)路徑
--build是指執(zhí)行編譯的主機(jī)
--host交叉編譯后的程序?qū)⑦\(yùn)行的系統(tǒng)
--target是運(yùn)行該編譯器所產(chǎn)生的目標(biāo)文件的平臺(tái)
--disable-lite建立MiniGUI-Threads版本的應(yīng)用程序
--disable-micemoveable禁止窗口移動(dòng)
--disable-cursor由于系統(tǒng)采用觸摸屏,所以用此選項(xiàng)用來(lái)關(guān)閉鼠標(biāo)光標(biāo)顯示
如果運(yùn)行./configure腳本成功通過,就可繼續(xù)進(jìn)行下面的編譯了,執(zhí)行make和make install命令編譯安裝libminigui。這里要注意的是,執(zhí)行make install命令時(shí)要切換到Root用戶權(quán)限下,不然安裝時(shí)沒法把文件裝到指定目錄下。安裝成功后,MiniGUI 的函數(shù)庫(kù)和頭文件以及配置文件等資源將被安裝到/usr/local/arm/2.95.3/arm-linux/目錄中,具體情況為:函數(shù)庫(kù)被裝在lib/ 子目錄中;頭文件被裝在include/ 子目錄中;手冊(cè)被裝在man/ 子目錄中;配置文件被裝在etc/ 子目錄中。
3.2.3 MiniGUI資源的編譯安裝
主機(jī)上解壓資源文件:tar zxf miniguires-1.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.4 實(shí)例程序的編譯安裝
解壓mde-1.6.9.tar.gz并進(jìn)入該目錄,修改目錄下配置文件configure.in,把其中的AC_CHECK_HEADERS(minigui/commmon.h, have_libminigui=yes, foo=bar)改為
AC_CHECK_HEADERS($prefix/include/minigui/common.h,have_libminigui=yes,foo=bar),來(lái)指定交叉編譯時(shí)搜minigui的頭文件路徑,防止編譯時(shí)系統(tǒng)找不到頭文件;在所有LIB=$LIB后加入CL{prefix}/lib來(lái)指定編譯時(shí)所需要庫(kù)文件的路徑。并將libpopt-dev-arm-cross-1.6.tgz解壓所生成的頭文件和庫(kù)文件分別放入目標(biāo)目錄的include和lib中,用以支持mde中程序在ARM下的交叉編譯。
然后執(zhí)行./autogen.sh,重新生成configure腳本,使用上面配置的腳本然后執(zhí)行make命令,即可完成實(shí)例程序的編譯。
4 拷貝MiniGUI資源到開發(fā)板
編譯完MiniGUI和實(shí)例程序之后,需要把MiniGUI庫(kù)、資源和應(yīng)用程序拷貝到為目標(biāo)機(jī)器準(zhǔn)備的文件系統(tǒng)目錄中,然后生成文件系統(tǒng)映像,再下載到目標(biāo)板上運(yùn)行??梢酝ㄟ^串口、USB口或以太網(wǎng)口將文件系統(tǒng)映像下載到目標(biāo)機(jī)器中。如果發(fā)現(xiàn)子目錄lib 中的MiniGUI 庫(kù)文件很大,很難全部拷貝到開發(fā)板上的話,可以對(duì)庫(kù)文件執(zhí)行arm-linux-strip操作,arm-linux-strip指令會(huì)除去文件中的調(diào)試信息,使文件體積大大縮小。另外需要注意的是,有些庫(kù)函數(shù)是鏈接文件,如果單純的拷貝,會(huì)將原先的鏈接信息丟失,造成不必要的麻煩。使用tar命令將所需拷貝的資源打包,其中包括etc子目錄下的配置文件MiniGUI.cfg;lib 子目錄下的libmgext-1.6.9.so.0.0、libminigui-1.6.9.so.0.0、libvcongui-1.6.9.so.0.0和minigui子目錄;mde-1.6.9目錄下的可執(zhí)行程序。將這些資源燒寫進(jìn)ramdisk文件系統(tǒng)中,解壓后將MiniGUI的配置文件MiniGUI.cfg放入/usr/local/etc目錄中,MiniGUI的庫(kù)文件放入/usr/local/lib目錄中。在執(zhí)行程序之前,還有一件重要的事情要做,就是在開發(fā)板上的Linux中配置好MiniGUI的運(yùn)行環(huán)境。
MiniGUI可以使用多種圖形引擎進(jìn)行圖像顯示,有qvfb、SVGALib、LibGGI等等,當(dāng)然也可以自己編寫一個(gè)圖形引擎供MiniGUI使用。這里我們使用qvfb來(lái)作為MiniGUI的圖形引擎進(jìn)行圖像顯示。qvfb(vitural framebuffer)是在宿主機(jī)上模擬幀緩沖的,它是X Window用來(lái)運(yùn)行和測(cè)試應(yīng)用程序的系統(tǒng)程序,允許我們?cè)谧烂婕捌渖祥_發(fā)Qt嵌入式程序,而不需要在命令臺(tái)和程序之間來(lái)回切換。qvfb使用了共享存儲(chǔ)區(qū)域(虛擬的幀緩沖)來(lái)模擬幀緩沖并且在一個(gè)窗口中(qvfb)模擬一個(gè)應(yīng)用來(lái)顯示幀緩沖,顯示的區(qū)域被周期性的改變和更新。通過指定顯示設(shè)備的寬度和顏色深度,虛擬出來(lái)的緩沖幀和物理的顯示設(shè)備在每個(gè)像素上保持一致。這樣我們?cè)诿看握{(diào)試應(yīng)用時(shí)不需要總是刷新嵌入式設(shè)備的FLASH存儲(chǔ)空間,從而加速了應(yīng)用的編譯、連接和運(yùn)行周期。
首先對(duì)qvfb進(jìn)行安裝,可以從這里下載http://www.minigui.com/downloads/dep-libs/qvfb
-1.0.tar.gz),下載下來(lái)后進(jìn)行解壓:tar zxf qvfb-1.0.tar.gz并進(jìn)入到qvfb-1.0目錄,執(zhí)行./configure腳本后即可用make和make install命令進(jìn)行編譯安裝。
更改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的配置文件后,接著就可以運(yùn)行MiniGUI應(yīng)用程序了。
執(zhí)行應(yīng)用程序順利的話,屏幕上可以看到程序的運(yùn)行界面。至此,MiniGUI已經(jīng)成功移植到目標(biāo)系統(tǒng)上。此后,我們可以根據(jù)需要,繼續(xù)修改MiniGUI庫(kù)函數(shù)及各種資源,并且編寫自己的應(yīng)用程序,使圖形用戶界面更加完善。
6 結(jié)束語(yǔ)
隨著嵌入式產(chǎn)品應(yīng)用領(lǐng)域的日益增長(zhǎng),開發(fā)出優(yōu)秀的人機(jī)交互界面,是嵌入式發(fā)展的趨勢(shì),擁有廣闊的市場(chǎng)前景。MiniGUI可以穩(wěn)定可靠的運(yùn)行在Linux系統(tǒng)下,通過上述具體的移植和后續(xù)的MiniGUI下嵌入式軟件的開發(fā)過程,能快速構(gòu)建一個(gè)嵌入式可視化軟件系統(tǒng),相信這種嵌入式系統(tǒng)將會(huì)得到越來(lái)越多的應(yīng)用。
評(píng)論