国 脉 信 息 学 院
Guomai Information College
《 MiniGUI1.6的安装与移植 》
课程设计报告
2008 级 电子信息与通信工程 系
电子信息工程 专业 电子0801 班
学号 08300101XX 姓名 X X X
2010 —— 2011 学年 第 二 学期
2011年5月
一、《嵌入式系统》课程设计任务书
---------(2011年05月)
时间:2011.5.10----5.25 地点:嵌入式实验室 班级:电子0801 指导教师:张平均 1、设计课题:
MiniGUI1.6的安装与移植
2、设计目的:
①.进一步巩固嵌入式系统的基本知识; ②.了解MiniGUI的基本结构;
③.练习MiniGUI的系统配置和编译安装; ④.学习MiniGUI的交叉编译; ⑤.掌握MiniGUI界面编程;
⑥.学会查阅有关专业资料及设计手册。
3、设计任务及要求:
①.掌握嵌入式系统开发环境建立和使用;
②.掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法; ③.MiniGUI在PC上的安装、移植
④.Linux基本输入输出驱动程序设计编译与移植 ⑤.基于MiniGUI的基本输入输出应用编程编译与移植
⑥.编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;
4、设计参考书
《MiniGUI编程手册》 、《嵌入式教学实验指导书》
《ARM嵌入式Linux应用开发入门》 汪明虎 欧文盛 编
《嵌入式Linux设备驱动开发详解》 华清远见培训中心
2
二、前期资源准备:
1、准备源码包:
① ubuntu.9.04安装包。
② 交叉编译器源码包arm-linux-gcc-3.4.1.Tgz
③ 已经能够在开发板上运行的文件系统包。Qte_yaffs.gz.
④ minigui安装包,主要包括libminigui-1.6.10.tar,minigui-res-1.6.10.tar, samples-1.6.10.tar,qvfb-1.1.tar等资源文件以及相应的库文件: libminigui-1.6.10.tar.Gz mg-samples-1.6.10.tar.Gz minigui-res-1.6.10.tar.Gz samples-1.6.10.tar.Gz mde-1.6.10.tar.gz libpng_src.gz jpegsrc.v6b.tar.gz qvfb-1.1.tar.gz libcorss.sh rescorss.Sh simplecorss.Sh mdecorss.sh libreduce.Sh 2、目录安排:
①新建/tmp/linux目录,把所有的源码包都放在此目录下 ②新建工作目录/opt/FriendlyARM/mini2440存放内核源码 ③新建/work/minigui目录,存放minigui
④新建/minigui-free/nfsroot目录,存放交叉编译的minigui 3、PC环境及软件
①windows xp 系统
②vmware-6.5虚拟机+Ubuntu-9.0.4
3
三、minigui在PC环境下的安装以及开发板上的移植
1、MiniGUI在PC上的安装
① 安装miniGUI的资源文件,minigui-res-1.6.10.tar.gz,miniGUI所使用的资源, 包括 基本字体、图标、位图和鼠标、光标。
#解压资源包minigui-res-1.6.10.tar.gz, /work/minigui/是我minigui的工作目录。
tar -xvzf minigui-res-1.6.10.tar.gz -C /work/minigui/
#进入解压后的资源目录,进行安装
cd /work/minigui/minigui-res-1.6.10/ make install
#如果提示Permission denied,表明权限问题,用root去执行,也可以在命令前使用
sudo,以后不再说明。
#资源文件不需要编译的,直接执行安装,执行的只是简单的拷贝操作。资源中包含了 图标,光标等,都是可以直接看到的。
② 安装lib文件,libminigui-1.6.10.tar.gz,MiniGUI函数库源代码,其中包括
libminigui、libmgext 和libvcongui。
#lib文件即是库文件,提供使用minigui编程的函数库的支持,应该是最核心的部分。 #源代码需要自己编译,时间可能有点长。当然,首先要作的还是现解压。 tar -xvzf libminigui-1.6.10.tar.gz -C /work/minigui/ #进入解压后的源码目录
cd /work/minigui/libminigui-1.6.10/ #配置,编译,安装 ./configure make
make install
#默认的安装路径在“/usr/local/lib/”下,安装完了去该目录,就可以看到 “libminigui*”的库文件。
#一些资料上说要把路径/usr/local/lib/添加到lib的搜索路径中,相关的配置文件 是\"/etc/ld.so.conf\"。
#但是笔者的这个配置文件中又包含了“/etc/ld.so.conf.d/\"下面的配置文件,其中
4
已经包含了“/usr/local/lib\"路径。
③ 安装qvfb。
#miniGUI是基于帧缓存的,而不是我们平时PC平台上X窗口,所以需要qvfb模 拟帧缓存来运行显示效果。
#安装qvfb可以使用qvfb-1.1.tar.gz,但是我在./configure的时候老出错,好在 ubuntu的源中直接有一个软件包,包含了qvfb。 sudo apt-get install qt3-dev-tools-embedded
#在终端运行qvfb,就可以看到窗口了,还有一些设置选项。
④ 支持jpeg和png,jpegsrc.v6b.tar.gz,libpng_src.tgz。
#解压到工作目录
tar -xvzf jpegsrc.v6b.tar.gz -C /work/minigui/ tar -xvzf libpng_src.tgz -C /work/minigui/ #分别进入解压后的源码目录,编译 cd /work/minigui/jpeg-6b/ make install
cd /work/minigui/libpng make install
⑤ 编译测试《MiniGUI编程指南》的示例代码,mg-samples-1.6.10.tar.gz。
#《MiniGUI编程指南》可从官方网上下载,手册上所有示例均在 mg-samples-1.6.10.tar.gz中。
tar -xvzf mg-samples-1.6.10.tar.gz -C /work/minigui/ cd /work/minigui/mg-samples-1.6.10/ ./configure make
#编译后在源码目录下面生成了很多可执行文件。 ⑥ 通过qvfb来测试示例。
# 打开终端,运行qvfb, 注意要在后台运行。 qvfb &
# 这时候已经可以看到程序运行的窗口,在File中可以设置窗口的大小,根据后
5
面的提示,先选择窗口的大小为640*480 \"VGA\否则后面的操作也错误。 # 打开示例程序,如helloworld。 ./helloworld
# 现在就能看到如下\"helloworld\"程序运行的窗口了。
⑦ 问题
(1)错误1:
InitGUI: Can not initialize colors of window element!
InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file. 解决方法:正确配置MiniGUI.cfg文件 (2)错误2: Permission denied
解决方法:权限不够,使用root用户登录。 (3)错误3:
编译出错未找到jpeg,png等 解决方法:安装zlib,png,jpeg库。 (4)错误4:
出现符号未找到等编译错误 解决方法:make clean 后在make
6
2、在Ubuntu9.04上编程开发界面应用程序.
① MiniGUI应用程序的编译、运行
Minigui的C源程序代码见附录. ② 自己编写Makefile文件:
gcc –o helloworld helloworld.c –lpthread –lminigui –ljpeg –lpng -lz ③ 编译运行代码,界面效果如图:
图一
图二 ④ 频率计--界面功能简介
界面实现频率输入的测量与量程的选择.共有4个不同的量程实现频率从0-15G范围的输入.分别为0-10KHz,10KHz-100MHz,100MHz-1GHz,1GHz-15GHz.不同的量程通过单选框按钮实现,可以设置属性值BS_PUSHLIKE使单选按钮以普通按钮的形式显示:选中时显示为按下状态,未
7
选中时显示为正常状态。编辑框中可以输入频率值,界面通过内部消息函数自动切换量程,实现频率计的测量和显示功能.
3、MiniGUI界面应用程序的交叉编译
①在\"/\"目录下建立一个文件夹minigui-free,将源码包考到该文件夹下,并在minigui-free目录下建立一个文件夹nfroot。
② 在minigui-free的文件夹下解压各个源文件包 ③ 将libcross.sh考到minigui的lib库的解压文件夹中 ④ 将rescross.sh 考到minigui的res资源解压文件夹中 ⑤ 将samplecorss.sh 考到sample例子解压文件夹中 ⑥ 将mdecorss.sh 考到mde例子解压文件夹中
⑦ 依次运行libcross.sh,rescross.sh,samplecorss.sh,mdecorss.sh ⑧ 到nfsroot的,目录下,将libreduce.sh考到这个目录下,运行libreduce.sh ⑨ 修改nfsroot下的etc下的MINIGUI的配置文件
⑩ 将nfsroot目下下的文件拷贝到arm板上相应的目录下即可。
4、建立交叉编译环境及程序代码在ARM目标机上的移植
①.设置minicom
在终端输入minicom -s 弹出如下对话框:
选择Serial Port setup ,弹出如下对话框,按A设置好相应的串口:
使用usb转串口,所以串口设备为/dev/ttyUSB0,如果是台式电脑的串口: 则应设为相应的/ttyS0(COM1)或/ttyS1(COM2)。
8
②.交叉编译器的安装
进入/tmp/linux目录解压安装包
tar xvzf arm-linux-gcc-4.3.2.Tgz -C /
注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
执行该命令,将把arm-linux-gcc 安装到/usr/local/arm/4.3.2目录。 把编译器路径加入系统环境变量,运行命令#gedit /root/.Bashrc 编辑/root/.bashrc文件,在最后一行添加 exprot PATH=/usr/local/arm/4.3.2/bin:$PATH 保存退出。
重新登录系统(不必重启机器,开始->logout即可),使以上设置生效,在命令行输入arm-linux-gcc -v 会出现如下信息,这说明交叉编译器环境已经成功安装。
四、课程设计总结
虽然只有短短的2周时间,但是经过自己的不断努力,还是顺利完成了老师布置的课程设计任务。过程进行中还是遇到了许多的问题,通过老师,同学,网络的帮助,最终解决了一个又一个的疑点,因此收获也是蛮多的。回想起从对MiniGUI的懵懂,到学会设计简单的应用程序是何等的开心。俗话说:技不压身。多学一些知识总是对自己的发展有帮助的。
对于这个嵌入式的开发流程,软件开发方法,我也因此都有了切身的体会,不再是理论课上那干瘪瘪的论述了。在软件编译过程中最为棘手的问题,我觉得就是链接库的问题,每一个都有相当复杂的依赖关系,由于我们对嵌入式开发的经验不足,有时候很难能知道库依赖于那个软件中,比较常用的办法是下载安装与名称相关的软件,如lib*库等等。即可解决大部分在软件编译中,出现的错误。对于配置,也是一个非常容易出错的地方,不同的软件配置是不一样的,常提高查看帮助文件来解决,虽然是英文,但一般大家都能看的懂,只有肯往下看一般
9
都会有收获的。网络上提供的信息,由于与我们开发环境的不同,软件版本的不同等总总原因,应该尽力先理解别人的,在调试自己。或许一切就会柳岸花明了。
在嵌入式开发中,脚本文件是形形色色的,错综复杂的,但万变不离其宗,总有可遵循规律的地方,也是有其一定的语法的,对于脚步文件的理解和编写对于开发将是有非常大的帮助的,我们不能小看它的作用。除了脚步之外,核心就是源文件了,有C的有C++的,我觉得还是要着重理解C然后再去了解别的开发语言。这将是非常好的开发习惯。势必对我以后学习工作带来不可估量的激进作用!过程相对于结果来说对我更重要,在这过程中会碰到很多东西,而在解决这些的东西时,我也从中学到很多东西。总的来说,在这次课程设计中学到了学习的方法和以后的再学习能力,以及发现问题和怎么解决问题的能力。
五、设计参考书
《MiniGUI编程手册》
《ARM嵌入式Linux应用开发入门》 汪明虎 欧文盛 编
《嵌入式Linux设备驱动开发详解》 华清远见培训中心 《嵌入式教学实验指导书》
10
因篇幅问题不能全部显示,请点此查看更多更全内容