Chinaunix首页 | 论坛 | 博客
  • 博客访问: 515600
  • 博文数量: 95
  • 博客积分: 5168
  • 博客等级: 大校
  • 技术积分: 1271
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-28 23:31
文章分类

全部博文(95)

文章存档

2013年(2)

2012年(3)

2011年(1)

2010年(8)

2009年(81)

分类: LINUX

2009-02-23 13:15:41

----------------------------------------------------------

本文系本站原创,欢迎转载!

转载请注明出处:http://sjj0412.cublog.cn/

----------------------------------------------------------

Minigui移植的主要工作是移植GALIAL。在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 */

};

 

其实24402410差不多,故需要实现init2410input其相关函数,我们在1.6.10能看到2410.c,2410.h两个文件,但是都没有实现,故我们实现它,

我已经修改minigui1.6.22410.c,2410.h得到适合mini24401.6.10版本的2410.c2410.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
要么用可写的根文件系统。
阅读(2480) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~