MiniGUI移植到s3c2410

硬件环境:
Host:X86 PC
Target:博创s3c2410开发板

软件环境:
Host:VMware虚拟机下的redhat linux 9.0(完全安装) kernel:linux-2.4.20
Target:arm-linux kernel:linux-2.4.18

Crosstool: armv4l-unknown-linux-gcc-3.4.1

PS:要先确定你开发板的文件系统是否可写(如在/usr /etc下等可写)?像我的文件系统是cramfs,只有挂载的/mnt/yaffs下可写,但是可以通过连接相应的文件来解决路径问题,或者是修改MiniGUI.cfg文件里的路径。


准备源码包
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


编译安装
1、准备工作
在redhat linux 9.0下新建工作目录
/minigui/source 解压缩文件
/minigui/compressed 压缩文件
说明:把第2步下载的源码包放到该目录中,即/minigui/compressed

新建一个文件夹放编译好的东西:/minigui/nfsroot


2、编译安装minigui-res-1.6.10.tar.gz
说明:minigui 所使用的资源,包括基本字体、图标、位图和鼠标光标。
修改config.linux   指明TOPDIR=/minigui/nfsroot (默认安装路径是/usr/local)
[root@localhost minigui-res-1.6.10]# make install
把生成的/minigui/nfsroot/usr/local/lib/minigui/res目录下的所有文件拷贝到开发板上,其开发板上的目录如下形式/usr/local/lib/minigui/res/……,实际上这个目录与配置文件 MiniGUI.cfg里的相应内容的目录一致,以便找到相应的资源。(注意如果你的开发板不能在/usr下写,就只能修改MiniGUI.cfg里相应的路径)


3、编译安装libminigui-1.6.10.tar.gz
说明:minigui所使用的lib。

libminigui中配置lib
mysetup.sh:

#!/bin/bash
./configure --host=arm-unknown-linux --enable-jpgsupport=no --enable-pngsupport=no --enable-gifsupport=no --disable-lite --prefix=/minigui/nfsroot --enable-smdk2410ial=yes

说明:
--prefix 用于指定Minigui 函数库的安装路径。默认安装路径是/usr/local
--host=arm-unknown-linux 指定软件运行的系统平台,如果没有指定,将会运行config.guess来检测,因为我们生成的minigui 的函数库在arm 平台上运行,则指定arm-unknown-linux
--disable-lite 这里采用threads模式,不需执行mginit
smdk2410ial=yes指明使用smdk2410ial功能,对LCD相关操作支持(src/ial/2410.c)(这个2410.c是没有实现的,要在板子上运行的程序有输入抽象层ial,还需要自己实现2410.h和2410.c)

这里的配置不支持jpg png gif,如果要支持还需安装这些库,修改这个配置重新编译。(如何安装,看上一篇文章)

修改configure,在头文件开头增加(指明交叉编译器,按实际情况)

#my modify
CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
CPP=/opt/host/armv4l/bin/armv4l-unknown-linux-cpp
LD=/opt/host/armv4l/bin/armv4l-unknown-linux-ld
AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar
RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib
STRIP=/opt/host/armv4l/bin/armv4l-unknown-linux-strip

[root@localhost libminigui-1.6.10]# make
[root@localhost libminigui-1.6.10]# make install

删除/minigui/nfsroot/lib中的*.a,*.la连接文件,开发板上不需要
把minigui/nfsroot/lib目录下的所有库文件拷贝到开发板上的/lib目录下。


4、修改MiniGUI.cfg(/minigui/nfsroot/etc下)

[system]
# GAL engine and default options
gal_engine=qvfb
defaultmode=800x600-16bpp

# IAL engine
ial_engine=qvfb
mdev=/dev/input/mice
mtype=IMPS2

[fbcon]
defaultmode=1024x768-16bpp

[qvfb]
defaultmode=640x480-16bpp
display=0

按你的实际情况,修改为:

[system]
# GAL engine and default options
gal_engine=fbcon  #使用的是framebuffer作为图形抽象层
defaultmode=640x480-16bpp #LCD大小和处理多少色的图像

# IAL engine
ial_engine=SMDK2410  #使用的是SMDK2410作为输入抽象层,要自己实现
mdev=/dev/mouse
mtype=IMPS2

[fbcon]
defaultmode=640x480-16bpp #LCD大小和处理多少色的图像

[qvfb]
defaultmode=640x480-16bpp  #LCD大小和处理多少色的图像
display=0

如果安装了qvfb就只需要修改LCD的信息

注意观察:“fontfile0=/usr/local/lib/minigui/res/font/8x16-iso8859-1.bin”这是MiniGUI.cfg指定的资源文件应该在地方,如果你不是在这个路径下,修改MiniGUI.cfg所有的路径。

MiniGUI.cfg文件必须放置在系统的特定的目录下(可以看说明)
1. 用户的主目录下,此时名字应该叫做.MiniGUI.cfg
2. /usr/local/etc目录下或/etc目录下
3. 你运行程序的当前目录下
MiniGUI的库中的查找顺序也是按照上面的顺序进行查找的,如果上面三个路径都没有找到的话,程序就会报没有找到MiniGUI.cfg文件的错误.


5、测试
写了一个bmp图像显示程序,交叉编译:
armv4l-unknown-linux-gcc -o bmp bmp.c -L/minigui/nfsroot/lib -I/minigui/nfsroot/include -lminigui -lpthread -lm -lc
注意编译时需要连接的库在什么地方。
执行:
因为我的文件系统只能在/mnt/yaffs下写,所以把MiniGUI.cfg和编译好的执行文件放一起。执行,看到显示结果。

参考:

http://wiki.minigui.com/bin/view/Columns/WebHome

你可能感兴趣的:(vmware,c,linux,redhat,System,编译器)