近幾年,,隨著嵌入式系統(tǒng)的日益發(fā)展和32位嵌入式處理器以及圖形顯示設(shè)備的廣泛應(yīng)用,目標(biāo)產(chǎn)品對GUI(圖形用戶界面)的需求越來越多,。由于嵌入式系統(tǒng)一般實時性要求很高,,所以嵌入式系統(tǒng)下的GUI需要具有輕量級型、占用資源少,、高性能等特點,。此外,嵌入式系統(tǒng)往往是一種定制設(shè)備,,它對GUI的需求各不相同,,因此,GUI必須也可以定制,。而MiniGUI是一個非常適合實時嵌入式產(chǎn)品的高效,、可靠、可定制,、小巧靈活的圖形用戶界面支持系統(tǒng),,被廣泛的應(yīng)用于高端科技產(chǎn)品中。利用MiniGUI開發(fā)出良好的人機交互界面已成為嵌入式開發(fā)中的迫切需求,。本文實現(xiàn)了在ARM-Linux環(huán)境下進行基于QVFB的MiniGUI的模擬開發(fā),、調(diào)試,通過在PC機上的仿真模擬,,將應(yīng)用程序完成之后,,利用交叉編譯工具編譯產(chǎn)生在目標(biāo)機上運行的代碼,然后把MiniGUI和可執(zhí)行應(yīng)用程序移植到S3C2410目標(biāo)板上,,這樣既節(jié)省了開發(fā)時間,,又提高了開發(fā)效率和質(zhì)量,。
1 MiniGUI的特點和體系結(jié)構(gòu)
MiniGUI項目的最初目標(biāo)是為基于Linux的實時嵌入式操作系統(tǒng)提供一個輕量級的圖像用戶界面支持系統(tǒng)。作為操作系統(tǒng)和應(yīng)用程序之間的中間件,,MiniGUI將底層操作系統(tǒng)與硬件平臺之間的差別隱藏起來,,并對上層應(yīng)用程序提供了一致的功能特性,。
1.1MiniGUI的特點
(1)占用資源少:MiniGUI本身占用的空間非常小,,整個MiniGUI系統(tǒng)占用空間在2~4MB,在某些系統(tǒng)上,,MiniGUI系統(tǒng)本身所占用的空間可進一步縮小到1MB以內(nèi),。
(2)高性能、高可靠性:MiniGUI良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,,可確保最快的圖形繪制速度,。
(3)可定制配置:和Linux內(nèi)核類似,MiniGUI也具有大量的編譯配置選項,,通過這些選項可指定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è)計的,,結(jié)構(gòu)如圖1所示。
3 MiniGUI在S3C2410上的移植
3.1安裝MiniGUI資源文件
在PC機的/opt目錄下創(chuàng)建target目錄,,將資源文件minigui-res-1.3.3.tar.gz復(fù)制到/opt/target目錄下進行解壓,,編輯/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)鏈接庫,可以正確運行MiniGUI的應(yīng)用程序,。在/opt/target /libminigui-1.3.3下,,輸入命令make menuconfig進行配置,。當(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ī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機上的存放路徑為/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下進入可執(zhí)行文件所在的目錄/usr/sbin,,可執(zhí)行程序bomb在S3C2410目標(biāo)板上運行的結(jié)果如下圖3所示:
