即交叉编译MiniGUI,使经过arm-elf-gcc编译后的MiniGUI程序能运行在ARM-uClinux平台上。
准备的软件包:libminigui-str-1.6.2.tar.gz minigui-res-str-1.6.tar.gz
交叉编译过程如下:
1)解压minigui-res-str-1.6.tar.gz,设置config.linux文件,将编译器设置为arm-elf-gcc。并将安装路径设置为arm-elf-gcc所在的目录。
2)解压libminigui-str-1.6.2.tar.gz 配置编译环境如下:
CC=arm-elf-gcc /
CFLAGS="-D__linux__ -I/root/minigui_lib/include -fno-builtin -nostartfiles" /
LDFLAGS="-Wall -elf2flt -static -L/root/minigui_lib/lib -lc" /
./configure /
--prefix=/opt/uClinux/arm-elf /
--build=i386-linux /
--host=i686-pc-linux-gnu /
--target=arm-elf /
--disable-shared /
--enable-static /
--with-osname=uclinux /
--disable-lite /
--enable-standalone /
--disable-micemoveable /
--disable-cursor /
--disable-newgal /
--enable-nativegal /
--disable-galfbcon /
--enable-fblin8 /
--disable-textmode /
--enable-dummyial /
--enable-autoial /
--enable-nativeial /
--disable-qvfbial /
--disable-latin9support /
--disable-big5support /
--disable-savebitmap /
--disable-jpgsupport /
--disable-pngsupport /
--disable-imegb2312 /
--disable-aboutdlg /
--disable-savescreen /
--enable-incoreres /
--enable-mousecalibrate /
--enable-fontsserif /
--enable-fontcourier /
--enable-fontsymbol /
--enable-fontvgas /
--enable-vbfsupport /
--enable-rbfsupport /
--enable-rbf16 /
--enable-gifsupport
3) GAL移植
需准备的程序:COMMLCD.C,LCDDRIVE.C,LCDDRIVE.H,LPC2294.H
下面对这些程序进行分析。
LPC2294.H定义ARM的各种寄存器,I/O口,中断口,串行口等的地址。
LCDDRIVE.H和LCDDRIVE.C定义显示器驱动。
COMMLCD.C图形引擎的定义。
具体步骤如下:
A) 在libminigui-str-1.6.2/src/gal/native下建立COMMLCD.C,LCDDRIVE.C,LCDDRIVE.H,LPC2294.H
B) 在Makefile.am里的LIBNATIVE_LA_SOURCES变量所在行末尾添加LCDDRIVE.C LCDDRIVE.H COMMLCD.C LPC2294.H
C) 修改libminigui-str-1.6.2/src/gal/gal.c,在GFX结构添加{“commlcd”,InitNative,TermNative}。
D) 修改libminigui-str-1.6.2/src/gal/native.c,将
#ifdef_Native_GAL_COMMLCD
else if(strcmp(gfx->id,”commlcd”)==0)
psd=commlcd.Open(&commlcd);
#endif
改为
//#ifdef_Native_GAL_COMMLCD
else if(strcmp(gfx->id,”commlcd”)==0)
psd=commlcd.Open(&commlcd);
//#endif
即注销ifdef和endif
修改libminigui-str-1.6.2/src/gal/native.h,同样将extern SCREENDEVICE commlcd上下的ifdef和endif给注销掉。
4) IAL移植
需要准备的程序:ADS7843.C ADS7843.H comm._drive.c comminput.c comminput.h CONFIG.H I2C.C I2C.H LPC2294.H
ADS7843.C和ADS7843.H是触摸屏控制电路的驱动程序。
Comminput.c和comminput.h是普通输入设备(键盘,鼠标,触摸屏)驱动程序。
I2C.C和I2C.H是连接键盘等输入设备的I2C总线控制程序。
具体步骤如下:
A) 在libminigui-str-1.6.2/src/ial下建立ADS7843.C,ADS7843.H,comm._drive.c,comminput.c,comminput.h,CONFIG.H,I2C.C,I2C.H LPC2294.H
B) 配置Makefile.am,新增变量COMMINPUT_SRCS= ADS7843.C ADS7843.H comm._drive.c comminput.c comminput.h CONFIG.H I2C.C I2C.H LPC2294.H
C) 在LIBIAL_LA_SOURCES变量后加入$(COMMINPUT_SRCS)。
D) 修改ial.c,将#include “comminput.h” 上下的#ifdef和#endif注释掉。在INPUT结构中添加{“comm”,InitCOMMInput,TermCOMMInput}。
接着编译和安装即可。安装完毕,便可交叉编译minigui源程序,如下
#arm-elf-gcc –elf2flt –o helloworld helloworld.c –lminigui –lpthread
编译后的程序便可在目标系统上运行。