视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MINIGUI移植到2440嵌入式
2025-09-29 22:29:41 责编:小OO
文档


主要参考网络文章MINIGUI移植到2440嵌入式网络博客

作者:刘溯奇 地点:南宁师专数计系

MiniGUI 1.3.3 移植详解,作者:大漠孤狼

说明:

因为要用MINIGUI做PDA,得把MINIGUI移植到我的开发板MINIGUI上,移植成功,支持PNG,JPG,鼠标和触摸屏可以用,但触摸屏不准,需要较正,较正本打算用tslib.1.3,移植成功后,MINIGUI要使用它做为IAL,还需对libminigui1.6.10/res/ial/2410.c进行修改并用SMDK2410做为它的IAL,但经查1.6.10里己经没有发布2410.c,1.3.33里是有的。

硬件环境:

硬件环境:

Host:X86PC

Target:友善之臂mini2440开发板

软件环境:

Host:VMware虚拟机下的redhat linux 9.0(完全安装)

Target:arm-linux kernel:linux-2.6.13

Crosstool: arm-linux-gcc-3.4.1

2. 准备以下源码包(下载)

http://www.minigui.org/downloads

开发库:libminigui-1.6.10.tar.gz

资源文件:minigui-res-1.6.10.tar.gz

示例程序:mg-samples-str-1.6.10.tar.gz

3. 编译安装

(1) 准备工作

在redhat linux 9.0下新建工作目录

[root@localhost /]# mkdir /minigui 工作目录

[root@localhost /]# mkdir /minigui/compressed /minigui/source

[root@localhost /]# cd /minigui/compressed 进入工作目录

说明:把第2步下载的源码包放到该目录中,即/minigui/compressed

(2)编译安装minigui-res-1.6.10.tar.gz

说明:minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标。

[root@localhost compressed]# tar xzvf minigui-res-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/minigui-res-1.6.10

[root@localhost minigui-res-1.6.10]# make install

把生成的……/minigui/res目录下的所有文件拷贝到开发板上,其开发板上的目录如下形式/usr/local/lib/minigui/res/……,实际上这个目录与配置文件MiniGUI.cfg里的相应内容的目录一致,以便找到相应的资源。

(3)支持jpeg和png

首先安装 zlib 库,这个是后面的库的编译基础。

http://www.zlib.net/zlib-1.2.3.tar.gz 400多K,去下载吧,下载到目录 /opt/mini2440 下

[user]# tar zxf zlib-1.2.3.tar.gz

由于 zlib 库的configure 脚本不支持交叉编译选项,只好自己动用了,手动临时把 gcc 修改成指向我们的交叉编译器 arm-linux-gcc

[Root]# cd /usr/bin

[Root]# mv gcc gcc_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-gcc ./gcc

[Root]# mv ld ld_back

[Root]# ln -s /usr/local/arm/3.4.1/bin/arm-linux-ld ./ld

OK ,修改完成后回到 /opt/mini2410/zlib-1.2.3 目录下

[user]# ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --shared

注意:这里配置指向 /usr/local/arm/3.4.1/arm-linux/ 目录,会自动安装在 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目录下,千万不要装错目录了,不然

后面会找不到这个库的

[user]# make

[Root]# make install

安装完后检查一下目录 /usr/local/arm/3.4.1/arm-linux/ [include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的 *.h 都需要拷过去,在拷库的时候用 cp –a libz.* /…./lib 就行,要用上 –a 选项

记着把刚才改过的 gcc 再改回去,不然后面会出错的!!!!!

安装 png 库,这个是用来显示 png 图形的,MiniGUI 里很多图都是 png 的,如果没有这个库,你的 MiniGUI 将无法正常工作,切记切记!

http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.0.10rc1.tar.gz

还是那句话,库不要用最新的,最新的容易有问题,用这个老一点的就没问题了,呵

[user]# tar zxf libpng-1.0.10rc1.tar.gz

[user]# cd libpng-1.0.10rc1

Libpng 不提供有效的 configure 脚本,所以只好自己动手改 Makefile 文件了

[user]# cp scripts/makefile.linux Makefile //把 Scripts 下的一个 makefile 拷出来自己动手改

[user]# vi Makefile // 自己动手改

CC=arm-linux-gcc //修改这里

# where "make install" puts libpng.a, libpng.so*, png.h and pngconf.h

prefix=/usr/local/arm/3.4.1/arm-linux //修改这里

# Where the zlib library and include files are located

#ZLIBLIB=/usr/local/lib

#ZLIBINC=/usr/local/include

ZLIBLIB=/usr/local/arm/3.4.1/arm-linux/lib //修改这里

ZLIBINC=/usr/local/arm/3.4.1/arm-linux/include //修改这里

好了,保存,然后去编译吧

[user]# make

[user]# make install

如果有错误,检查你前面的步骤哪个没做对 :) 尤其是 zlib 的安装

还是前面说的,检查 /usr/local/arm/3.4.1/arm-linux/ [include,lib] 目录中有成功安装否,如果没有安装成功,那就自己把编译出来的东西拷过去。记着,*.h 和 .so 的文件都要拷。

OK,现在来安装 jpeg 库

http://www.minigui.org/downloads 自己去下载

[user]# tar zxf jpegsrc.v6b.tar.gz

[user]# cd jpeg-6b

[user]# ./configure –help //可以查看它的配置选项

首先在本机上编译一下,主要是它的 configure 文件设计得有问题,得先用 gcc 编译一个 dummy.c 的文件,然后才能后面编译,不然的话就会出现 libtool 找不到之类的错误

[user]# ./configure --enable-shared --enable-static

本机正常编译通过以后,[user]# make clean 清除掉,然后执行交叉编译

一般情况下用 [cdp@cdpserver jpeg-6b]$ ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ --host=arm-linux --enable-shared --enable-static

--host=arm-linux 来指定交叉编译选项,可是这里死活它不认,所以改用别的方法,如下

[user]# ./configure --prefix=/usr/local/arm/3.4.1/arm-linux/ CC=arm-linux-gcc --enable-shared

--enable-static

[user]# make

安装前需要在 arm-linux 下建个目录,不然安装会出错

[Root]# mkdir –p /usr/local/arm/3.4.1/arm-linux/man/man1

[Root]# make install // OK 了

一样,自己去检查一下安装是否成功 :)

接下来就可以编译libminigui了

(4)编译安装libminigui-1.6.10.tar.gz

说明:minigui函数库源代码。

[root@localhost minigui-res-1.6.10]# cd /minigui/compressed

[root@localhost compressed]# tar xzvf libminigui-1.6.10.tar.gz –C ../source

[root@localhost compressed]# cd ../source/libminigui-1.6.10

[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/ --host=arm-linux --target=arm-linux --build=i386-linux CC=arm-linux-gcc --with-osname=linux --with-style=classic --with-targetname=fbcon --enable-autoial --enable-commial --enable-rbf16 --disable-vbfsupport

[root@localhost libminigui-1.6.10]# make

[root@localhost libminigui-1.6.10]# make install

把/home/lib目录下的所有库文件(注:--prefix=/home/)拷贝到开发板上的/lib目录下,把/home/etc下的MiniGUI.cfg拷贝到开发板上的/etc目录下。

注:--disable-vbfsupport ,一定要注意这个选项,否则在开发板上运行示例程序时,提示找不到var bitmap font,实际上在开发板上的/usr/local/lib/minigui/res/font目录下没有var bitmap font字体库,至于如何支持它,没有深究。其他选项可通过./configure –h帮助查看,根据自己的开发板及项目需要控制相应的功能。

(4)编译 mg-samples-str-1.6.10.tar.gz

同上原理:

解压

[………]# ./configure –host=arm-linux

[………]# make

把生成的可执行文件helloworld拷贝到开发板上的/usr/local/sbin目录下

(6) 配置

第一处:在开发板的/etc目录下建立ld.so.conf文件,并添加如下内容:

/usr/local/lib

/usr/lib

/lib #实际上添加这个库文件目录就行了,目的是运行helloworld的时候,能找到相应的库文件,其他两个库目录可选,我加上了它,是为了系统扩展。

第二处:修改开发板上的/etc/MiniGUI.cfg文件

用编辑器打开,更改如下内容:

[system]

# GAL engine and default options

gal_engine=fbcon

#IAL engine

ial_engine=cosole

mdev=/dev/input/mice

mtype=IMSP2

[fbcon]

Defaultmode=240x320-16bpp #我的LCD显示器是240x320像素的竖屏

与上述内容不一致的,请结合自己的开发板进行比较后,修改。

第三处:

在/etc/init.d/rcS脚本文件里添加如下内容:

/bin/ln –s /dev/vc/0 /dev/tty0

如不加,则出现如下问题:NEWGAL>FBCON: Can''''''''''''''''t open /dev/tty0: No such file or directory

NEWGAL: Set video mode failure.

InitGUI: Can not initialize graphics engine!

注:就是使FBCON与你的FramBuffer设备关联

4. 测试

在超级终端运行交叉编译自己修改制作的PDA,命令如下:

[

………]# /usr/local/sbin/pda

在/etc/init.d/rcS脚本文件里添加如下内容:

/usr/local/sbin/pda &

呵呵,minigui跑起来了,自己感觉还是比较爽的。移植就算成功了,但没有使用价值,需继续添加minigui的一些功能,并需要编写相应应用程序和linux内核相应的驱动。虽然开源,但提供的功能有限,不过,当作学习还是可以的。下载本文

显示全文
专题