原创 基于AT91SAM9261 AT91SAM9263的MiniGUI移植

2009-10-21 11:41 2207 3 3 分类: MCU/ 嵌入式

基于AT91SAM9261MiniGUI移植<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1、 图形用户界面MiniGUI 简介


MiniGUI 是遵循GPL 条款发布的自由软件,其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。与QT/EmbeddedMicoroWindows 等其它GUI 相比,MiniGUI的最显著特点就是轻型、占用资源少。据称MiniGUI 能够在CPU主频为30MHz,仅有4MB RAM 的系统上正常运行, 这是其它多种GUI所无法达到的。目前,MiniGUI已经非常成熟和稳定,并且在许多实际产品和项目中得到了应用。


2、 MiniGUIAT91SAM9261开发板上的移植过程


(1)       构建Linux 交叉编译环境


使用的交叉编译工具链是arm-linux-gcc-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3.4.1.tar.bz2


详细步骤:


[root@localhost /]# tar zxvf arm-linux-gcc-3.4.1.tar.bz2


[root@localhost /]# vi ~/.bashrc


.bashrc 添加一行 export PATH="/usr/local/arm/"3.4.1/bin/:$PATH


保存退出后执行


[root@localhost /]# source ~/.bashrc


至此交叉编译环境已经建立好了。


(2)       交叉编译MiniGUI


首先,从网上http://www.minigui.com/download/cindex.shtml) 得到MiniGUI 的源程序包,包括三个部分:


libminigui-1.6.2.tar.gz——MiniGUI函数库源代码;


miniguires- 1.6.2.tar.gz——MiniGUI所使用的资源,包括基本字体、图标、位图等;


mg-samples-str-1.6.2. tar.gz——MiniGUI的演示程序。


首先进行M i n i G U I 函数库的编译和安装。解开libminigui-1.6.2.tar.gz软件包,进入该目录,运行./configure脚本


CC=arm-linux-gcc \


./configure --prefix=/usr/local/arm/3.4.1/arm-linux \


    --build=i386-linux \


    --host=arm-linux \


    --target=arm-linux


生成定制的Makefile 文件,然后可以继续执行make make install命令编译并安装libminigui,安装成功后,MiniGUI 的函数库和头文件以及配置文件等资源将被安装到/usr/local/arm/3.4.1/arm-linux 目录中,具体情况为:函数库被装在lib/子目录中;头文件被装在include/ 子目录中;手册被装在man/ 子目录中;配置文件被装在etc/ 子目录中。


下面进行MiniGUI资源的编译安装。解压minigui-res-1.6.2.tar.gz,进入相应目录。这里需要说明的是,在执行 make install操作之前,需要对目录中的configure.linux文件做一些修改。打开configure.linux文件,你会发现prefix 选项部分的默认值为$(TOPDIR)/usr/local,需要将这里修改为prefix=$(TOPDIR)/ usr/local/arm/3.4.1/arm-linux/,这样执行make install 操作之后,安装脚本会自动把MiniGUI资源文件安装到/usr/local/arm/3.4.1/arm-linux/lib/minigui/res/目录下。


最后,编译并安装MiniGUI 的演示程序。解压mg-samples-str-1.6.2. tar.gz,执行脚本:


CC=arm-linux-gcc \


CFLAGS=-I/usr/local/arm/3.4.1/arm-linux /include \


LDFLAGS=-L/usr/local/arm/3.4.1/arm-linux /lib \


./configure \


    --build=i386-linux \


    --target=arm-linux \


    --host=arm-linux \


执行make操作, 完成演示程序的编译。


(3)       拷贝MiniGUI 资源到开发板


进入/usr/local/arm/3.4.1/arm-linux/目录,在etc,lib子目录下有我们需要拷贝到目标机上的资源。将lib下的libminigui.a libminigui.la两个库文件拷贝到9261板子的文件系统/usr/local/lib,将lib/minigui/res/的所有文件也拷贝到9261板子的文件系统/usr/local/lib/minigui/res下,最后将配置文件MiniGUI.cfg拷贝至9261板子文件系统的/usr/local/etc/目录下。重新制作文件系统,烧写至9261板子的NANDFLASH中。


(4)       板载Linux 的环境配置


修改MiniGUI.cfg文件,主要几个参数如下:


[system]


ial_engine=console


mdev=/dev/input/mouse0


mtype=PS2


[fbcon]


defaultmode=480x272-16bpp


板子的输入设备是USB的鼠标、键盘,输出设备是群创4.3TFT液晶屏。


(5)       MiniGUI运行


拷贝mg-samples-str-1.6.2/src/下的显示程序到9261板子上,运行button程序,效果如下。


3、增加MiniGUI 1.6的中文支持


       minigui-res-1.6.2版本里的字体中是没有中文字库的,不能正常显示中文,我们需要通过移花接木来增加MiniGUI 1.6对中文的支持。


       minigui-res-1.3.3里面的font就有两个中文字库,分别是song-12-gb2312.binsong-16-gb2312.bin,把这两个字库复制到我们的res编译的路径/usr/local/arm/3.4.1/arm-linux/lib/minigui/res/font下。因为要显示中文,用上刚才下载的字库(内建资源),就要使内建资源可用,这个是在执行./configure时设置的。编译mg-libminigui-1.6.2时的./configure另外加上选项--enable-incoreres=yes --enable-rbfgb12=yes --enable-rbfgb16=yes 。重新编译安装。


       修改/usr/local/arm/3.4.1/arm-linux/lib/minigui/res/font/font.name文件,在其中增加两行:


        song-12-gb2312.bin Raw Bitmap Font   rbf-fixed-rrncnn-12-12-GB2312.1980-0


        song-16-gb2312.bin Raw Bitmap Font   rbf-fixed-rrncnn-16-16-GB2312.1980-0


MiniGUI的配置文件中进行修改,MiniGUI的应用程序便可显示中文了。


MiniGUI.cfg[systemfont][rambitmap font]就要做相应的改动,如下:


# The first system font must be a logical font using RBF device font.


[systemfont]


font_number=3


font0=rbf-fixed-rrncnn-8-16-ISO8859-1


font1=rbf-fixed-rrncnn-12-12-GB2312.1980-0


font2=rbf-fixed-rrncnn-16-16-GB2312.1980-0


default=1


wchar_def=1


fixed=1


caption=2


menu=1


control=1


[rawbitmapfonts]


font_number=3


name0=rbf-fixed-rrncnn-8-16-ISO8859-1


fontfile0=/usr/local/lib/minigui/res/font/8x16-iso8859-1.bin


name1=rbf-fixed-rrncnn-12-12-GB2312.1980-0


fontfile1=/usr/local/lib/minigui/res/font/song-12-gb2312.bin


name2=rbf-fixed-rrncnn-16-16-GB2312.1980-0


fontfile2=/usr/local/lib/minigui/res/font/song-16-gb2312.bin


重新编译mg-sample-src-1.6.2时的./configure,要加上选项--with-lang=zhcn。再将MiniGUI 资源拷贝到开发板,重新运行例程,就可显示中文了。


4、增加触摸屏输入


libminigui-str-1.6.2/src/ial目录下添加触摸屏的接口驱动程序,我是将libminigui-str-1.6.2自带的S3C2410触摸屏的代码进行适当修改,并在编译libminigui-str-1.6.2./configure时增加--enable-smdk2410ial=yes,编译进了2410.c 2410.h这两个文件。修改配置文件MiniGUI.cfg文件,


[system]


# GAL engine


gal_engine=fbcon


# IAL engine


ial_engine=SMDK2410


#ial_engine=console 


mdev=/dev/input/ts0


#mdev=/dev/input/mouse0


 


还要对触摸屏进行校准,可以移植tslib进行校准(参考tslib移植文档)。


5、结语


MiniGUI 移植过程已通过实践检验。对于其它型号的开发板而言, 移植过程大体相似。可以肯定,带有简洁、美观图形用户界面的嵌入式系统将会在更多的领域具有更好的实用价值。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条