基于qtopia的嵌入式软件开发

上传人:j****9 文档编号:46343617 上传时间:2018-06-25 格式:DOC 页数:6 大小:223KB
返回 下载 相关 举报
基于qtopia的嵌入式软件开发_第1页
第1页 / 共6页
基于qtopia的嵌入式软件开发_第2页
第2页 / 共6页
基于qtopia的嵌入式软件开发_第3页
第3页 / 共6页
基于qtopia的嵌入式软件开发_第4页
第4页 / 共6页
基于qtopia的嵌入式软件开发_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于qtopia的嵌入式软件开发》由会员分享,可在线阅读,更多相关《基于qtopia的嵌入式软件开发(6页珍藏版)》请在金锄头文库上搜索。

1、基于 Qtopia 的嵌入式软件开发吴娴(苏州大学 计算机科学与技术学院,江苏省 苏州市 215006)摘要: Qtopia 的出现为使用嵌入式 Linux 作为操作系统的手持设备提供了开发图形应用程序的便捷手段。 本文首先介绍了在 Linux 操作系统中构建 Qtopia 环境的过程。接着,以“贪吃蛇游戏”为例描述了使用Qtopia 程序库开发嵌入式应用的过程。最后,本文以 Motorola A780 手机为目标平台,阐述了构建交叉编译环境和交叉编译应用程序的步骤。关键词: Linux,Qtopia,嵌入式,软件开发Development of Embedded Software on Qt

2、opiaWu Xian(Department of Computer Science and Technology, Suzhou University, Suzhou 215006, China)Abstract: With the emergence of Qtopia, it is more convenient to develop GUI applications on embedded Linux. This paper firstly introduces the steps of building Qtopia development environment on Linux.

3、 Then, we example “greedy snake” game to describe how to develop GUI application by using Qtopia Development Kit. In the end, this paper refers to the process of building cross-compile environment based on the target device Motorola A780. Key words: Linux, Qtopia, Embedded, Software development1. Qt

4、opia 简介在嵌入式软件开发领域,Linux 一直备受开发者的关注。在嵌入式 Linux 上开发系统软件和应用程序一直缺乏强大的开发环境。Qtopia 的出现,很大程度上解决了在使用嵌入式 Linux 作为操作系统的移动设备上开发应用软件的难题。Qtopia 是 Trolltech 公司基于 QT 的嵌入式版本 QT Embedded 开发的专门针对运行嵌入式 Linux 的 PDA、SmartPhone 等移动设备的一套应用程序集和开发库。Qtopia 不仅提供了用于个人信息管理、办公、娱乐、Internet 网络交流的应用程序,还提供了为嵌入式设备开发应用程序的库。图 1 显示了 Qto

5、pia 在嵌入式 Linux 系统中的层次。图 1 Qtopia 在嵌入式 Linux 系统中的层次2. 建立主机开发环境开发主机装有 RedHat Linux 8.0。我们选择 Trolltech 公司的自由版软件 QT-embedded-2.3.4 和Qtopia 1.6 作为开发环境,下载 RPM 包并安装。主机开发环境的建立过程参见 Qtopia 1.6 的在线帮助3,开发主机的微处理器是 x86 系列,所以配置命令如下:. /configure -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32我们在 conf

6、igure 的参数中添加了-system-jpeg 和-gif,使 Qtopia 平台能支持 jpeg 和 gif 格式的图片。编译安装后,得到开发应用程序所需要的工具集,其中包含:qvfb(Q virtual frame buffer):虚拟帧缓冲,为了运行 Qt Embedded,嵌入式 Linux 内核需要支持帧缓冲。Qt Embedded 和 Qtopia 函数库:包含了完整的开发嵌入式 Linux 应用程序的核心函数库。QPE(Qtopia Executable):用于处理所有的用户界面问题。mkipks:为配置 PDA 而产生 ipk 文件的包。此外,还有用于 QT 开发的典型工具

7、:Designer:Qt 的图形设计器。tmake:跨平台 Makefile 生成器。moc:用于 Qt C+ 扩展的 meta2object 编译器。uic:从 XML 文件生成代码的用户界面编译器。有了这些工具,再加上 g+(GNU C+编译器) ,就可以进行基于 Qtopia 应用程序的开发、编译和调试了。3. 开发应用程序Qtopia 应用程序的开发类似传统的窗口应用程序开发,可以遵循面向对象的程序设计方法。在程序设计的过程中,要将传统桌面应用程序使用的类换成 Qtopia 的类。由于嵌入式设备存储器的特殊性,在面向文档的应用程序中,需要利用 Qtopia 类库中的对文档的特殊支持方法

8、。我们选择一个游戏程序贪食蛇来介绍开发的具体过程。3.1 主要数据结构游戏中主要设计了 4 个与界面相关的类,它们之间的关系如图 2 所示,其中标注了类当中的一些重要的成员。FoodBordeQCanvasRectangle-SnakeList : QList -foodList : QList -borderList : QList -*m_timer : QTimer -*m_canvas : QCanvasSnake-snake : Snake -*canvas : QCanvas -*view : QCanvasView -lcd : QLCDNumber -btnstart : QP

9、ushButton -btnpause : QPushButton -vbox : QVBoxLayoutGameQMainWindow13.*111*10.1QObject图 2 贪食蛇游戏类图3.2 绘制界面Qt 提供了两种绘制界面的方法:使用 QPaintDevice 类或者使用 QCanvas 类。由于 QCanvas 类在视图刷新方面的优越性能,在本程序中选用 QCanvas 来绘制应用程序主界面。游戏的主界面由继承自 QMainWindow 的 Game 类实现。Game 类的数据成员中有 QCanvas 和QCanvasView 的实例。创建 QCanvas 和 QCanvasV

10、iew 的代码如下:canvas = new QCanvas(WIDTH, HEIGHT );view = new QCanvasView( canvas, this );/this 指针指向 GamesetCentralWidget( view );/将 view 设置为中心组件.view-show();/显示 view3.3 事件处理游戏中主要处理的事件有:碰撞检测,用户的键盘按键,以及食物的随机生成。(1)碰撞检测Qt 提供了碰撞检测机制 collision,但为了简单起见,游戏中使用坐标值比较的方法进行碰撞检测。将贪吃蛇头节点的坐标值与食物、墙壁以及蛇身除头节点以外的其他节点的坐标值进

11、行比较,如果坐标值相同,则发生碰撞,进行相应处理。(2)用户键盘事件为实现游戏与用户的互动,Game 类继承并实现了 keyPressEvent()事件。当用户按下方向键时,蛇改变方向。void Game:keyPressEvent(QKeyEvent *e) if ( !snake-isDead() ) /如果蛇没有死亡snake-changeDirection( (int)e-key() );/蛇根据按下的键值改变方向在 Snake 类的 changeDirection 方法中,根据用户按下的方向键以及当前蛇身移动的方向,对蛇的移动分别做处理。(3)随机生成食物在游戏初始化的时候以及食物被

12、蛇吃完以后,利用 Snake 类的 creatFoods()方法生产新的食物。为了使生成的食物分布更加均匀,使用了随机数类 Random。Random 类包括了 RandomReal()、RandomInteger()、Poisson()三种生成随机数的方法。其中,RandomReal()生成0,1)之间的随机实数;RandomInteger( int low, int high )返回low,high之间的随机整数;Poisson( double mean )得到的随机数序列符合泊松分布,即多次得到的随机数的平均值趋向于 mean。4. 运行应用程序编写完应用程序的所有.cpp 文件和.h

13、文件,接下来就是编译和运行应用程序了。首先,创建项目文件 snake.pro,它的内容如下:multiprocess:TEMPLATE = appmultiprocess:DESTDIR= $(QPEDIR)/binsingleprocess:TEMPLATE= libsingleprocess:DESTDIR= $(QPEDIR)/libCONFIG+= qtopia warn_on releaseHEADERS= snake.h random.h game.h set.hSOURCES= snake.cpp random.cpp game.cpp main.cppTARGET= mysna

14、ke利用 tmake 工具生成 Makefile,运行 make 命令进行应用程序的编译。编译完成之后,生成可执行文件 mysnake。接下来,创建 desktop 文件,用于描述 Qtopia 应用程序的属性,如可执行文件名称、桌面图标文件名称、所属程序集类型以及帮助文件名称等。mysnake.desktop 文件的内容如下:Desktop EntryComment=A Board Strategy GameExec=mysnake/可执行文件Icon=apples/桌面图标Type=Application/类型为应用程序Name=mysnake/在桌面上显示的游戏名称将运行应用程序所需要的

15、文件拷贝至 Qtopia 相应目录中,然后运行 qpe,就可以在桌面上看到mysnake 的图标,如图 3 所示。点击进入 mysnake 程序,就可以开始游戏了。图 4 是游戏开始时的界面。图 3 添加 mysnake 后的 qpe图 4 mysnake 游戏开始界面5. 发布应用程序我们选择的目标设备是 Motorola A780 手机,此款手机的微处理器是 Intel Xscale,属于 ARM 系列CPU。因此,要在手机上安装应用程序,还需要经过交叉编译这个过程。5.1 建立交叉编译环境建立交叉编译环境的第一步是根据目标平台的不同,建立 GNU Toolchain,这样才能够使 g+使

16、用ARM 平台的库函数编译链接应用程序。建立 GNU Toolchain 可以使用预编译好的工具集,也可以由开发者自己一步步的编译安装。我们没有找到针对 Xscale 微处理器的编译好的工具集,只能手工编译 GNU Toolchain,主要步骤如下:1.配置针对 ARM 体系结构的 binutils。2.对 Linux 内核打 Xscale 微处理器的补丁,使之支持 Xscale 微处理器。3.配置 gcc,使它支持 ARM 微处理器,并重新编译 gcc 工具。4.配置 glibc,使它支持 ARM 微处理器。5.再次编译 gcc,因为在上一步编译 gcc 时,还没有目标平台的库函数。接下来,就可以构建目标主机用的 QT Embedded 和 Qtopia 环境了。这个过程类似于在主机上的编译过程,但是在配置 QT Embedded 和 Qtopia 的时候,需要针对目标平台进行配置。具体配置命令如下:Qt Embedded:./configure -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号