建立基于ARM-uClinux的MiniGUI开发环境

本文详细介绍如何使用arm-elf-gcc交叉编译MiniGUI,使其能在ARM-uClinux平台上运行。包括配置编译环境、GAL和IAL的移植步骤,并提供编译命令。

即交叉编译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.HLCDDRIVE.C定义显示器驱动。

COMMLCD.C图形引擎的定义。

具体步骤如下:

A)      libminigui-str-1.6.2/src/gal/native下建立COMMLCD.CLCDDRIVE.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

即注销ifdefendif

    修改libminigui-str-1.6.2/src/gal/native.h,同样将extern SCREENDEVICE commlcd上下的ifdefendif给注销掉。

   4) IAL移植

需要准备的程序:ADS7843.C ADS7843.H comm._drive.c comminput.c comminput.h CONFIG.H I2C.C I2C.H LPC2294.H

ADS7843.CADS7843.H是触摸屏控制电路的驱动程序。

Comminput.ccomminput.h是普通输入设备(键盘,鼠标,触摸屏)驱动程序。

I2C.CI2C.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

编译后的程序便可在目标系统上运行。

Light Gui的新特性。 1图层和绘图: 支持多图层,使用与有多图层支持的处理器平台。 支持多图层的软件模拟,支持图层的alpha合并和滑动。 同时支持多种颜色格式的图层,如ragb8888模式、rgb565模式、256色调色板模式。 对每个图层,支持双缓存(double buffer)模式,内部进行了窗口剪切优化。 也支持直画(direct draw)模式,支持内存设备,两者可以配合使用。 支持图层和窗口之前的映射,支持一组窗口动态切换显示到不同大小、不同颜色格式的图层。 支持窗口旋转90度、180度、270度,无需硬件支持。 2风格支持: 支持css风格配置,代码中设置控件的类名,就可以和css配置配合使用。 支持css配置控件不同状态的背景属性,如图片、填充色;前景属性,如图片、颜色;字体属性,如大小、颜色;边框属性,如宽度、颜色、调色板位图、补白等。 支持css配置窗口的一些基本属性,如高宽,透明等。 支持皮肤特性,皮肤的属性包括图标、css配置和调色板位图。 支持多种皮肤,支持在线切换皮肤。 3window模拟器支持: 支持完整的window模拟器,使用visual studio 2005,可以独立于设备,在window环境编写界面代码。 全部由C代码编写,自带基本的C函数库,数学函数库,可以在window,嵌入式设备间无缝移植。 模拟器带来良好的调试特性,界面的相关bug,可以方便的在模拟器上调试,极大的加快软件的开发进度。 支持内存调试模式,可以方便的追踪内存越界,泄漏等问题。 4xml支持: 自带xml解释器,配置文件都使用xml编写,有很好的可读性。 实现了基于xml配置文件的多国语言支持,支持在线切换语言。 5简明易用的控件: 自带多种基本的控件,包括静态文本框、按钮、单行和多行编辑框、列表框、进度条、滚动条、图片、等等。 支持自定义控件,控件代码清晰、简明、容易编写。支持组合控件、对话框控件。配合皮肤配置,能快速实现美工效果和风格。 支持一些较复杂的控件,如文本控件、html显示、软件盘等 6良好的应用移植性 自带基本的C函数库,数学函数库等,可以方便的移植程序库和应用程序。 Light Gui的弱点: 实时性能不是Light GUI强项,不建议使用在实时性要就很高的环境。 在使用风格属性的情况下需要有系统盘的支持,用于存放配置文件和资源。 Light Gui目前是一个图形开发包,没有跨任务的窗口管理系统。 目前只有ucos(增强型,支持系统盘),linux,window平台的移植版本。 Light Gui使用的场合: 需要使用图形库快速实现自有风格的嵌入式设备,比如消费电子设备的二次开发,UI设计。 需要使用Light Gui特性的window程序设计。 Light Gui的商业模式: Light Gui是商业收费软件。 提供软件定制服务。 提供自主设计所需的源代码和库。 Light Gui 的其他特性 Light Gui 主要针对嵌入式操作系统,如嵌入式linux, uC/OS-II 等提供支持。在这些 OS 上,Light Gui 支持以多线程模式运行。其主要技术特性描述如下。 1) 硬件适配性: 可支持各种 32 位处理器架构,如 ARM、MIPS、PowerPC、Blackfin等。 支持各种灰度,彩色显示设备。 可支持各种输入设备,键盘(Keypad)、触摸屏、遥控器等等。 2) 资源消耗: Light GUI 的静态存储随配置选项的不同而不同,最少需占用 800K 静态存储空间。 Light GUI 启动后,初始占用动态存储空间最小为128k。建议系统内存为 2MB 以上。 3) 操作系统适配性: 目前支持uC/OS-II 等操作系统,也可以运行在 Linux/uClinux 操作系统之上,Light GUI自带基础的c函数库,可以方便的移植到支持frambuffer的设备上。 针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。 4) 窗口子系统特性: 完备的任务内窗口机制和消息传递机制。 5) 图形子系统特性: 提供有增强 GDI 函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等函数。 在提供有兼容于 C99 规范的数学库平台上,还提供有高级二维绘图函数。 通过 Light GUI图形抽象层及图形引擎技术,我们也可以让上述高级 GDI 接口在低端显示屏上实现。 各种流行图像文件的支持,包括 Windows BMP、GIF、JPEG、PNG 等(JPEG
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值