您的当前位置:首页正文

MiniGUI1.6的安装与移植

来源:步旅网


国 脉 信 息 学 院

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

因篇幅问题不能全部显示,请点此查看更多更全内容