MiniGUI移植到ARM板.docx

上传人:b****4 文档编号:24369511 上传时间:2023-05-26 格式:DOCX 页数:21 大小:32.85KB
下载 相关 举报
MiniGUI移植到ARM板.docx_第1页
第1页 / 共21页
MiniGUI移植到ARM板.docx_第2页
第2页 / 共21页
MiniGUI移植到ARM板.docx_第3页
第3页 / 共21页
MiniGUI移植到ARM板.docx_第4页
第4页 / 共21页
MiniGUI移植到ARM板.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MiniGUI移植到ARM板.docx

《MiniGUI移植到ARM板.docx》由会员分享,可在线阅读,更多相关《MiniGUI移植到ARM板.docx(21页珍藏版)》请在冰豆网上搜索。

MiniGUI移植到ARM板.docx

MiniGUI移植到ARM板

本文来自ChinaUnix博客,如果查看原文请点:

MiniGUI1.3.3移植详解

作者:

大漠孤狼   注:

红色部分为本人修改。

最近移植了MiniGUI1.3.3到一个开发板上,中间遇到许多问题,在论坛上发问题,结果也没多少人回我,就算偶尔有回的,基本上回答也没有什么用,网上找不到一个完整的移植文章,所以就决定把自己这次移植摸出来的一些方法写出来,给像我一样的小菜鸟做个参考吧。

本文不教你怎么写驱动,只是教怎么样在最短的时候在你的PC机上搭建起开发环境,同时在你的板子上跑起MiniGUI来,这样你就可以在PC上开发好程序,调试完毕,然后交叉编译一下,直接Copy到板子上就可以了。

首先,你需要下载的MiniGUI的包:

   

     

这两个包的下载需要你在

上注册过才可以下载,免费注册的,自己去下吧

图形界面程序

一些小例子

好,首先就下载这几个包吧,后面还有需要下载的包,后面再说

1.PC环境的搭建

首先你需要一个Linux环境,我安装的是RedHat9.0安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让MiniGUI在你的PC上可以跑起来,这样以后你开发程序就可以只在PC上开发,调试好,最后交叉编译一下放到板子上就行了。

后面会讲怎么为板子编译MiniGUI,耐心的看吧:

首先建立自己的开发目录

[Root]#mkdir/opt

[Root]#cd/opt

[Root]#mkdirst2410           //这个是我的板子,

[Root]#chmod777st2410       //给一般用户操作权限

[user]#cd/opt/st2410         //进到目录中去,在这个目录下工作,用普通用户来工作

把libminigui-1.3.3.tar.gz解开

[user]#tarzxflibminigui-1.3.3.tar.gz

[user]#tarzxfminigui-res-1.3.3.tar.gz

编译libminigui,这个是minigui运行所必需的库文件,必须编译成功

[user]#cdlibminigui-1.3.3

[user]#./configure            //最简单的编译方式,让它自己去配置,这里采用缺省的Thread模式而不是//Lite模式,因为这种方式在PC机上使用最方便,后面移到板子上再改成Lite模式即可

注意屏幕上的输出,特别是下面几条:

checkingforFrameBufferconsolesupport...yes

checkingforpthreadlibrary...yes

checkingforTT_FreeType_Versionin-lttf...yes

checkingforT1_InitLibin-lt1...no

checkingforjpeg_std_errorin-ljpeg...yes

checkingforpng_check_sigin-lpng...yes

其中–lttf–lpng必须是yes,不然后面你的程序肯定会有问题,如果这里不是yes的话,肯定是你的Redhat9安装不对,告诉过你安装时选everything,你选了吗?

其中ttf库是对TrueType字体的支持,png库是对png图形的支持,MiniGui里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

好了,现在通过了,下面是编译了

[user]#make

接来来就是漫长的等待了,让它慢慢的编译吧,呵

[user]#su       //切到Root用户权限下,不然安装时没法把文件写到你的/usr/local目录下

[Root]#makeinstall

好了,库安装完毕,下面是安装资源

[Root]#cd/opt/st2410/minigui-res-1.3.3

[Root]#makeinstall

OK,基本的安装完成了,现在检查一下

看看在你的目录/usr/local/lib下是不是有以下文件

libmgext-1.3.so.3->libmgext-1.3.so.3.0.0

libmgext-1.3.so.3.0.0

libmgext.a

libmgext.la

libmgext.so->libmgext-1.3.so.3.0.0

libminigui-1.3.so.3->libminigui-1.3.so.3.0.0

libminigui-1.3.so.3.0.0

libminigui.a

libminigui.la

libminigui.so->libminigui-1.3.so.3.0.0

libvcongui-1.3.so.3->libvcongui-1.3.so.3.0.0

libvcongui-1.3.so.3.0.0

libvcongui.a

libvcongui.la

libvcongui.so->libvcongui-1.3.so.3.0.0

里面还有一个目录minigui,可以进到里面去看,分别为minigui/res/[bmp,cursor,icon,…..]好几个目录,里面有相应的文件

检查/usr/local/include里面是不是多了一个minigui目录,/usr/local/include/minigui时面好多的.h文件,如下:

common.hcontrol.hendianrw.hfixedmath.hmgext.h   mywindows.hvcongui.h

config.hdti.c     filedlg.hgdi.h       minigui.hskin.h     window.h

如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。

首先,修改你的/etc/ld.so.conf文件,在里面最后新加入一行/usr/local/lib

然后执行[Root]#ldconfig

OK!

[Root]#vi/usr/local/etc/MiniGUI.cfg

在里面找到

[system]

#GALengine

#gal_engine=fbcon

gal_engine=qvfb//这里修改

#IALengine

#ial_engine=console

ial_engine=qvfb   //这里修改

mdev=/dev/mouse

mtype=IMPS2

[fbcon]

defaultmode=1024x768-16bpp

[qvfb]

defaultmode=640x480-16bpp   //这里修改

display=0

保存一下,OK了!

现在你需要安装一个qvfb,因为Redhat9里面没有,从下面地址下载

老方法:

[user]#tarzxfqvfb-1.0.tar.gz

[user]#cdqvfb-1.0

[user]#./configure

[user]#make

[user]#makeinstall

在这个过程中如果出现"errorwhileloadingsharedlibraries:

libqt-mt.so.3:

cannotopensharedobjectfile"说明你的系统少了libqt-mt.so.3这个库,还是回去检查一下,你安装时Redhat时是否选了everything,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以google一下,输入libqt-mt.so.3redhat9,应该就可以搜到相应的rpm包,安装时

[root]#rpm–i--force[你的包名]就OK了

这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过

ftp:

//

注意:

在你后面的操作过程中有可能会导致libqt-mt.so.3丢失,这时候只要重装一下就OK了

解决了这个问题后重复安装过程

[user]#./configure

[user]#make

[user]#makeinstall

OK,环境搭建好了,下面是测试了:

还记得前面让你下载的mg-samples-1.3.0.tar.gz这个包吧,这个就是一些例子,现在试试吧。

[user]#tarzxfmg-samples-1.3.0.tar.gz

[user]#./configure

[user]#make

[user]#cdsrc

看看src目录下是不是已经编译出可执行文件来了

现在来执行一下吧,首先把qvfb加到你的可执行路径中去

[user]#cd$HOME

[user]#vi.bashrc

在.bashrc最后面加上一句

exportPATH="$PATH:

/sbin:

/usr/local/arm/2.95.3/bin:

/usr/local/bin:

/usr/local"

保存退出,这里面有些路径是为以后用的,比如/usr/local/arm/2.95.3/bin,先加上吧。

[user]#source.bashrc//让它执行一下,当然你也可以选择重启一下电脑,效果是一样的,呵

执行例子程序:

[user]#qvfb&         //在图形界面下执行,呵,别告诉我你只在命令行工作啊。

在qvfb中选FileConfigure640x480VGA16bit,这样看起来舒服

[user]#cd/opt/st2410/mg-samples-1.3.0/src

[user]#./helloword

OK,这个时候你应该可以看到在qvfb中的执行效果了吧,记住:

一定要先运行qvfb,并且设置qvfb,然后再运行你的程序,而且qvfb每重启一次就需要重新设置一下,真麻烦

OK你的PC环境搭建完毕了,你现在可以在PC上开发你的程序,并且编译,并在qvfb中执行,等完全验证它是正确的了,把它交叉编译一下,放到板子上去就可以了,呵呵!

MiniGUI还有一种执行方式,就是在Console下在Framebuffer上执行,这种方式太麻烦,在PC上不推荐,你还是用qvfb执行吧,方便,呵呵!

在FrameBuffer上执行

修改/usr/local/etc/MiniGUI.cfg文件,如下

[system]

#GALengine

gal_engine=fbcon

//这里修改

#IALengine

ial_engine=console

//这里修改

mdev=/dev/mouse

mtype=none//这里改成none,因为经常鼠标不正常

[fbcon]

defaultmode=1024x768-16bpp

[qvfb]

defaultmode=640x480-16bpp   

display=0

重启动你的RedHat9,在出现Grub的时候按E键,在kernel=…..这一行的最后加入vga=0x317,然后:

Enter,然后在kernel=…这一行上按b就可以了,这时候可以在启动时看到一个小企鹅的图标,OK

进去后,直接在例子程序的目录下执行./helloword就可以了:

2.为你的实验板进行交叉编译

OK,PC机的开发环境已经建立好了,下面就是要移植到我们的板子上去了,这里不介绍怎么移植Linux系统,假设你已经有一个可以在板子上跑的

Linux系统了,并且已经有一个可以用的根文件系统了,并且已经有了板子相对应的LCD的驱动程序,这里介绍怎么在你的根文件系统里加上

MiniGUI,使得你的板子有图形界面的显示。

要交叉编译,首先就得有交叉编译器,这里介绍arm板的交叉编译。

不要自己去编译,直接去下载个就行了。

ftp:

//ftp.arm.linux.org.uk/pub/linux/arm/toolchain/cross-2.95.3.tar.bz2

记住这个ftp,最好的arm工具下载站,

下载回来,有35Mb,呵

1)安装交叉编译工具:

[Root]#mkdir–p/usr/local/arm

[Root]#cd/usr/local/arm

[Root]#tarjxfcross-2.95.3.tar.bz2//把工具直接解到压缩到这个目录下就安装完成了,简单吧:

解压缩后生成一个2.95.3目录,里面在就是工具

记住,这时候的gcc为2.95.3/bin/arm-linux-gcc而它的include为2.95.3/arm-linux/include,对应的lib为2.95.3/arm-linux/lib

也就是说,你如果用arm-linux-gcc编译程序的话,它缺省的就找2.95.3/arm-linux/include

2.95.3/arm-linux/lib两个目录,而不是/usr/include,所以如果你要加什么.h.a.so

文件话,记着一定是加到这两个目录下去,不然编译器会告诉你找不到这些东西的

把可行程序的路径加入到PATH中去,还记得前面说过的改.bashrc文件吗?

[user]#cd$HOME

[user]#vi.bashrc

在.bashrc最后面加上一句

exportPATH="$PATH:

/sbin:

/usr/local/arm/2.95.3/bin:

/usr/local/bin:

/usr/local"

[user]#source.bashrc

OK,交叉编译工具安装完了,够简单吧!

2)MiniGUI库文件装到交叉编译器中去

MiniGUI的编译需要一些库文件,缺省我们的gcc基本上都有这些库文件,所以不需要安装,可是现在要交叉编译了,交叉编译器可是不带这些库文件的,所以我们得首先自己编译这些库文件装到交叉编译器中去。

注意一点:

库不一定要装最新的,库版本太新,MiniGUI有可能不认识,像jpeg库和ttf库就是这样,太新了反而用不了,所以要注意版本,以下的库都是我验证过可以和MiniGUI一起工作的,其它版本的库没试过,不保证能正确通过。

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

400多K,去下载吧,

下载到目录/opt/st2410下

[user]#tarzxfzlib-1.2.3.tar.gz

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

[Root]#cd/usr/bin

[Root]#mvgccgcc_back

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

[Root]#mvldld_back

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

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

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

注意:

这里配置指向/usr/local/arm/2.95.3/arm-linux/目录,会自动安装在/usr/local/arm/2.95.3/arm-linux/[include,lib]目录下,千万不要装错目录了,不然后面会找不到这个库的

[user]#make

[Root]#makeinstall

安装完后检查一下目录/usr/local/arm/2.95.3/arm-linux/[include,lib],假如include

中没有zlib.h之类的头文件,lib中没有libz.so.1.2.3,那就自己手动拷到这些目录下去,记着拷的时候把所有的*.h

都需要拷过去,在拷库的时候用cp–alibz.*/…./lib就行,要用上–a选项

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

如何取消此处的软链接:

#cd/usr/bin

#unlink./gcc//取消gcc,相当于删除

#mvgcc_backgcc//将gcc改回来

#cd/usr/bin

#unlink./ld//取消ld,相当于删除

#mvld_backld//将ld改回来

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

http:

//superb-

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

[user]#tarzxflibpng-1.0.10rc1.tar.gz

[user]#cdlibpng-1.0.10rc1

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

[user]#cpscripts/makefile.linuxMakefile//把Scripts下的一个makefile拷出来自己动手改

[user]#viMakefile   //自己动手改

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

#where"makeinstall"putslibpng.a,libpng.so*,png.handpngconf.h

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

#Wherethezliblibraryandincludefilesarelocated

#ZLIBLIB=/usr/local/lib

#ZLIBINC=/usr/local/include

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

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

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

[user]#make

[user]#makeinstall

如果有错误,检查你前面的步骤哪个没做对:

尤其是zlib的安装

还是前面说的,检查/usr/local/arm/2.95.3/arm-linux/[include,lib]目录中有成功安装否,如果没有安装成功,那就自己把编译出来的东西拷过去。

记着,*.h和.so的文件都要拷。

OK,现在来安装jpeg库

ftp:

//

自己去下载,速度暴慢

[user]#tarzxfjpegsrc.v6b.tar.gz

[user]#cdjpeg-6b

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

[user]#./configure

[user]#make                 //生成libtool的工具

[user]#makeclean          

一般情况下用[cdp@cdpserverjpeg-6b]$./configure

--prefix=/usr/local/arm/2.95.3/arm-linux/--host=arm-linux

--enable-shared--enable-static

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

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

[user]#make

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

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

[Root]#makeinstall   //OK了

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

最后安装libttf库,这个是TrueType字体的支持库,用来显示文字的。

注意:

MiniGUI的文档说只支持1.3.1版本的ttf库,不要把版本弄错了

这个库装起来最麻烦,全部自己手动编译,安装,下面一步一步来做吧

[user]#tarzxffreetype-1.3.1.tar.gz     //老一套

[user]#cdfreetype-1.到目录里去

[user]#mkdir–p/opt/st2410/libttf/extend//自己另外建立一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1