----------------------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://sjj0412.cublog.cn/
----------------------------------------------------------
Minigui移植的主要工作是移植GAL和IAL。在Mini2440开发板上已经提供了Framebuffer设备的驱动,因此GAL可以直接使用fbcon。 Mini2440的输入部分有触摸屏,因此要有触摸屏的输入驱动ial。
我们用sourceinsight参看minigui源代码知道,ial初始化在initial中,
Initial()
{
……
……….
for (i = 0; i < NR_INPUTS; i++) {
if (strncmp (engine, inputs[i].id, LEN_ENGINE_NAME) == 0) {
__mg_cur_input = inputs + i;
break;
}
}
if (__mg_cur_input == NULL) {
fprintf (stderr, "IAL: Does not find the request engine: %s.\n", engine);
if (NR_INPUTS) {
__mg_cur_input = inputs;
fprintf (stderr, "IAL: Use the first engine: %s\n", __mg_cur_input->id);
}
else
return ERR_NO_MATCH;
}
……………..
……………..
}
static INPUT inputs [] =
{
……………
#ifdef _MC68X328_IAL
{"MC68X328", InitMC68X328Input, TermMC68X328Input},
#endif
#ifdef _SMDK2410_IAL
{"SMDK2410", Init2410Input, Term2410Input},
#endif
#ifdef _DMGSTB_IAL
{"dmg-stb", InitDMGSTBInput, TermDMGSTBInput},
#endif
…..
…..
/* ... end of board-specific IAL engines */
};
其实2440和2410差不多,故需要实现init2410input其相关函数,我们在1.6.10能看到2410.c,和2410.h两个文件,但是都没有实现,故我们实现它,
我已经修改minigui1.6.2中2410.c,2410.h得到适合mini2440的1.6.10版本的2410.c和2410.h两个文件,大家在可以在下面的链接中下载后解压得到这两个文件。
http://blogimg.chinaunix.net/blog/upfile2/090223131801.tar
然后下载minigui相关文件:下载
libminigui-1.6.10.tar.gz.gz
minigui-res-1.6.10.tar.gz.gz
mg-samples-1.6.10.tar.gz.gz
下面地址可以下载
建一个文件夹/home/minigui
1.首先开始libminigui-1.6.10.tar.gz.gz.
解压tar –zxvf libminigui-1.6.10.tar.gz.gz
Cd libminigui-1.6.10文件夹中
修改minigui1.6.10/include/common.h
加入如下内容
#Ifndef _SMDK2410_IAL
#define _SMDK2410_IAL
#endif
因为与Ial相关的文件都include 了common.h文件,因此这个操作相当于在所有文件中定义了_SMDK2410_IAL,这样在如上面的input定义中就会定义smdk2410的输入驱动
#ifdef _SMDK2410_IAL
{"SMDK2410", Init2410Input, Term2410Input},
#endif
将前面下载的2410.c,2410.h复制到libminigui-1.6.10/src/ial/中
修改libminigui-1.6.10中.configure文件
在开始位置添加
CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
CPP=/usr/local/arm/2.95.3/bin/cpp
LD=/usr/local/arm/2.95.3/bin/arm-linux-ld
AR=/usr/local/arm/2.95.3/bin/arm-linux-ar
RANLIB=/usr/local/arm/2.95.3/bin/arm-linux-ranlib
STRIP=/usr/local/arm/2.95.3/bin/arm-linux-strip
然后./configure --host=arm-linux --enable-jpgsupport=no --enable-pngsupport=no --enable-gifsupport=no --disable-lite --prefix=/home/minigui --enable-smdk2410ial=yes
Make
Make install
注意红色的部分,因为我们没有编译jpg,png,gif库文件,这些要选no。
这时可以在/home/minigui 看到三个文件夹etc ,include,lib
2.资源文件安装
tar minigui-res-1.6.10.tar.gz.gz
进入 minigui-res-1.6.10
修改config.linux
将TOPDIR修改为
TOPDIR=/home/minigui
执行make install
这时可以在/home/minigui下看到usr文件夹
然后将/home/minigui/lib/usr/local/lib/minigui拷贝到/home/minigui/lib中
3.mg-samplse-1.6.10.tar.gz.gz编译
解压
进入mg-samples-1.6.10/src
这里有实例源码
通过执行/usr/local/arm/2.95.3/bin/arm-linux-gcc
–o helloworld helloworld.c –L/home/minigui/lib –I/home/minigui/include
–lminigui –lpthread –lm –lc
这时生成了helloworld可执行文件
将这个文件拷贝到/home/minigui,cp helloworld /home/minigui
4嵌入式根目录文件制作
mkdir /home/rootdir
进入这个目录Cd /home/rootdir
首先为这个根目录创建根文件系统必备的文件,这个可以用busybox制作,制作完了后应该有usr目录
将/home/minigui/lib所有文件包括其下的minigui文件夹拷贝到/home/rootdir/usr/lib
创建/home/rootdir/usr/local
进入此文件夹cd /home/rootdir/usr/local
创建etc,bin文件夹mkdir –p etc bin
并建立链接文件lib, ln –s /usr/lib lib
拷贝配置文件到etc中 cp /home/minigui/etc/Minigui.cfg etc
修改配置文件 vi etc/Minigui.cfg
# GAL engine
gal_engine=qvfb
# IAL engine
ial_engine=qvfb
mdev=/dev/mouse
mtype=IMPS2
[fbcon]
defaultmode=1024x768-16bpp
改为
# GAL engine
gal_engine=fbcon
# IAL engine
ial_engine=SMDK2410
mdev=/dev/input/ts0
mtype=none
[fbcon]
defaultmode=240x320-16bpp
注意mdev要是你鼠标的设备文件,我的是触摸屏设备文件,你们要查到自己的鼠标设备文件,当你查到鼠标设备文件了,可以通过cat /dev/*(你的鼠标设备)命令验证,执行这个命令,你然后点鼠标或触摸屏,如果有数据显示说明你查对了,如果没反应,你要检查了,要么是鼠标设备文件不对,要么鼠标接入有问题。
此时根目录文件做好。
如果要制作yaffs文件系统
./mkyaffsimage /home/rootdir root.yaffs
然后将yaffs映像下载到开发板运行。
进入/usr/local/bin
执行helloworld即可。
如果出现如下错误
GAL fbcon engine: Can't open /dev/tty0: No such file or directory
GAL: Init GAL engine failure: fbcon.
GDI: Can not initialize graphics engine!
则需输入:
[root@FriendlyARM /]# mknod /dev/tty0 c 4 0即可,当然如果是cramfs文件系统,因为是只读文件系统,这个命令执行会失败。
这时你要要么在制作根文件系统映像前就在/home/minigui/rooddir/dev中执行mknod tty0 c 4 0
要么用可写的根文件系统