转 MINIGUI成功移植到MINI2440详解

作者:黄思华 地址:华侨大学信息学院
  
  
  
  
  主要参考网络文章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内核相应的驱动。虽然开源,但提供的功能有限,不过,当作学习还是可以的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值