期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
摘 要:詳細介紹了MiniGUI到EV44B0II的移植過程,主要就是編寫適用于目標硬件的GAL圖形引擎和IAL輸入引擎。上述移植可以快速構建一個可視化軟件系統,“嵌入式Linux+MiniGUI圖形系統”的設計模式是嵌入式可視化軟件系統較理想的設計模式,將大大縮短嵌入式可視化軟件的開發周期。
關鍵詞:MiniGUI;圖形引擎;EV44B0II;移植
引言
要在自己的ARM嵌入式系統[1]中使用MiniGUI,首先目標板要有足夠的硬件資源;之后為目標板編寫MiniGUI的圖形引擎(GAL)和輸入引擎(IAL)[2];接下來就可以配置MiniGUI交叉編譯MiniGUI函數庫及其應用程序;編譯通過后,就可以在目標板上搭建MiniGUI應用環境;最后就可以啟動MiniGUI應用程序了。
1 MiniGUI
只要某個硬件平臺上運行有MiniGUI所支持的操作系統,MiniGUI就能在這個平臺上運行。MiniGUI本身的占用空間非常小,在2MB到4M左右。在某些系統上,尤其是在傳統嵌入式操作系統中,功能完備的MiniGUI系統本身所占用的空間可進一步縮小到1MB以內。和其它針對嵌入式產品的圖形系統相比,MiniGUI對系統的需求具有如下幾大優勢:可伸縮性強、輕型、占用資源少、高性能、高可靠性和可配置性。
2 移植過程
2.1在PC機上安裝MiniGUI
將MiniGUI函數庫源代碼、資源文件復制到PC機的Linux操作系統的特定目錄下,解壓,以便于進行交叉編譯。在“終端”窗口使用以下命令完成解壓,對于較長的文件名或目錄名,可以使用“*”通配符指定。
#cd /home/minigui
#tar zxf lib*.gz
#tar zxf mini*.gz
#tar zxf mg*.gz
2.2 MiniGUI的GAL移植
MiniGUI引入了圖形抽象層和輸入抽象層(Graphics and Input Abstract Layers,即GAL和IAL)的概念。在libminigui-str-1.6.2/src/gal/native目錄下建立一個源文件commlcd.c,編寫老的GAL接口的幾個接口函數[3]。
//使用native圖形引擎的數據結構和fb(Framebuffer)的驅動程序
#include "native.h"
#include "fb.h"
#include "lcddrive.h"
//圖形引擎初始化函數
//初始化正確返回PSD結構,否則返回NULL
Static PSD fb_open(PSD psd)
{ PSUBDRIVER subdriver;
TftInit();
Fprintf(stderr,"GAL Common engine:Init LCM!\n");
psd->planes=1; //單屏
#if SWAP_XY_EN==1
psd->xres=GUI_LCM_YMAX;
psd->yres=GUI_LCM_XMAX;
#else
psd->xres=GUI_LCM_XMAX;
psd->yres=GUI_LCM_YMAX;
#endif
};
在libminigui-str-1.6.2/src/gal/native目錄下建立液晶驅動程序文件lcddrive.c和lcddrive.h,由于在lcddrive.c文件中使用了S3C44B0的頭文件,所以要將此文件復制到libminigui-str-1.6.2/src/gal/native目錄下。設置libminigui-str-1.6.2/src/gal/native目錄下的Makefile.am文件,在lib_native_la_SOURCES變量最后加入lcddrive.c和commlcd.c等文件。