摘 要:minigui建立在比较成熟的图形引擎之上,其特点是小巧精致并尽量保持与win32的兼容。讲解minigui到ev44b0ii的移植工作,提出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操作系统的特定目录下,解压,以便于进行交叉编译。locaLHoST在“终端”窗口使用以下命令完成解压,对于较长的文件名或目录名,可以使用“*”通配符指定。
#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等文件。
为了使minigui能够正确使用移植的图形引擎,还需要进行注册[4]。
2.3 minigui的ial移植
在libminigui-str-1.6.2/src/ial目录下建立源文件comminput.c及头文件comminput.h,在comminput.c文件中编写ial接口的几个接口函数。
在libminigui-str-1.6.2/src/ial建立键盘驱动程序文件comm_drive.c,实现键盘的读取和键码的转换,具体源代码在micetek ev44b0ii产品的配套光盘上。键盘驱动程序文件comm_drive.c把ev44b0ii开发板上的16个按键定义为0~9、tab、esc和enter等功能。设置libminigui-str-1.6.2/src/ial目录下的makefile.am文件,新定义一个变量comminput_srcs,变量赋值为comminput.c和comm_drive.c等文件,并在libial_la_sources变量最后加入comminput_srcs的引用,这样在编译minigui时就可以编译这些移植的ial源文件了。
为了使minigui能够正确使用移植的输入引擎,还需要进行注册。
[1] [2] 下一页