




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Qtopia的嵌入式软件开发吴娴(苏州大学 计算机科学与技术学院,江苏省 苏州市 215006)摘要: Qtopia的出现为使用嵌入式Linux作为操作系统的手持设备提供了开发图形应用程序的便捷手段。本文首先介绍了在Linux操作系统中构建Qtopia环境的过程。接着,以“贪吃蛇游戏”为例描述了使用Qtopia程序库开发嵌入式应用的过程。最后,本文以Motorola A780手机为目标平台,阐述了构建交叉编译环境和交叉编译应用程序的步骤。关键词: Linux,Qtopia,嵌入式,软件开发Development of Embedded Software on QtopiaWu 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. 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. Qtopia简介在嵌入式软件开发领域,Linux一直备受开发者的关注。在嵌入式Linux上开发系统软件和应用程序一直缺乏强大的开发环境。Qtopia的出现,很大程度上解决了在使用嵌入式Linux作为操作系统的移动设备上开发应用软件的难题。Qtopia是Trolltech公司基于QT的嵌入式版本QT Embedded开发的专门针对运行嵌入式Linux的PDA、SmartPhone等移动设备的一套应用程序集和开发库。Qtopia不仅提供了用于个人信息管理、办公、娱乐、Internet网络交流的应用程序,还提供了为嵌入式设备开发应用程序的库。图1显示了Qtopia在嵌入式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我们在configure的参数中添加了-system-jpeg和-gif,使Qtopia平台能支持jpeg和gif格式的图片。编译安装后,得到开发应用程序所需要的工具集,其中包含:l qvfb(Q virtual frame buffer):虚拟帧缓冲,为了运行Qt Embedded,嵌入式Linux内核需要支持帧缓冲。l Qt Embedded和Qtopia函数库:包含了完整的开发嵌入式Linux应用程序的核心函数库。l QPE(Qtopia Executable):用于处理所有的用户界面问题。l mkipks:为配置PDA而产生ipk文件的包。此外,还有用于QT开发的典型工具:l Designer:Qt的图形设计器。l tmake:跨平台Makefile生成器。l moc:用于Qt C+ 扩展的meta2object编译器。l uic:从XML文件生成代码的用户界面编译器。有了这些工具,再加上g+(GNU C+编译器),就可以进行基于Qtopia应用程序的开发、编译和调试了。3. 开发应用程序Qtopia应用程序的开发类似传统的窗口应用程序开发,可以遵循面向对象的程序设计方法。在程序设计的过程中,要将传统桌面应用程序使用的类换成Qtopia的类。由于嵌入式设备存储器的特殊性,在面向文档的应用程序中,需要利用Qtopia类库中的对文档的特殊支持方法。我们选择一个游戏程序贪食蛇来介绍开发的具体过程。3.1 主要数据结构游戏中主要设计了4个与界面相关的类,它们之间的关系如图2所示,其中标注了类当中的一些重要的成员。图2 贪食蛇游戏类图3.2 绘制界面Qt提供了两种绘制界面的方法:使用QPaintDevice类或者使用QCanvas类。由于QCanvas类在视图刷新方面的优越性能,在本程序中选用QCanvas来绘制应用程序主界面。游戏的主界面由继承自QMainWindow的Game类实现。Game类的数据成员中有QCanvas和QCanvasView的实例。创建QCanvas和QCanvasView的代码如下:canvas = new QCanvas(WIDTH, HEIGHT );view = new QCanvasView( canvas, this );/this指针指向GamesetCentralWidget( view );/将view设置为中心组件.view-show();/显示view3.3 事件处理游戏中主要处理的事件有:碰撞检测,用户的键盘按键,以及食物的随机生成。(1) 碰撞检测Qt提供了碰撞检测机制collision,但为了简单起见,游戏中使用坐标值比较的方法进行碰撞检测。将贪吃蛇头节点的坐标值与食物、墙壁以及蛇身除头节点以外的其他节点的坐标值进行比较,如果坐标值相同,则发生碰撞,进行相应处理。(2) 用户键盘事件为实现游戏与用户的互动,Game类继承并实现了keyPressEvent()事件。当用户按下方向键时,蛇改变方向。void Game:keyPressEvent(QKeyEvent *e) if ( !snake-isDead() ) /如果蛇没有死亡snake-changeDirection( (int)e-key() );/蛇根据按下的键值改变方向在Snake类的changeDirection方法中,根据用户按下的方向键以及当前蛇身移动的方向,对蛇的移动分别做处理。(3) 随机生成食物在游戏初始化的时候以及食物被蛇吃完以后,利用Snake类的creatFoods()方法生产新的食物。为了使生成的食物分布更加均匀,使用了随机数类Random。Random类包括了RandomReal()、RandomInteger()、Poisson()三种生成随机数的方法。其中,RandomReal()生成0,1)之间的随机实数;RandomInteger( int low, int high )返回low,high之间的随机整数;Poisson( double mean )得到的随机数序列符合泊松分布,即多次得到的随机数的平均值趋向于mean。4. 运行应用程序编写完应用程序的所有.cpp文件和.h文件,接下来就是编译和运行应用程序了。首先,创建项目文件,它的内容如下: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= mysnake利用tmake工具生成Makefile,运行make命令进行应用程序的编译。编译完成之后,生成可执行文件mysnake。接下来,创建desktop文件,用于描述Qtopia应用程序的属性,如可执行文件名称、桌面图标文件名称、所属程序集类型以及帮助文件名称等。mysnake.desktop文件的内容如下:Desktop EntryComment=A Board Strategy GameExec=mysnake/可执行文件Icon=apples/桌面图标Type=Application/类型为应用程序Name=mysnake/在桌面上显示的游戏名称将运行应用程序所需要的文件拷贝至Qtopia相应目录中,然后运行qpe,就可以在桌面上看到mysnake的图标,如图3所示。点击进入mysnake程序,就可以开始游戏了。图4是游戏开始时的界面。 图3 添加mysnake后的qpe图4 mysnake游戏开始界面5. 发布应用程序我们选择的目标设备是Motorola A780手机,此款手机的微处理器是Intel Xscale,属于ARM系列CPU。因此,要在手机上安装应用程序,还需要经过交叉编译这个过程。5.1 建立交叉编译环境建立交叉编译环境的第一步是根据目标平台的不同,建立GNU Toolchain,这样才能够使g+使用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 -xplatform linux-arm-g+ -qconfig qpe -qvfb -thread -system-jpeg -gif -depths 4,8,16,32Qtopia:./configure -xplatform linux-arm-g+5.2 交叉编译应用程序利用5.1节构建的交叉编译环境,重新编译上述应用程序,即可生成目标主机上的可执行程序。主要步骤如下所述:1. 工程文件的内容没有变化,仍和第4节的内容一样。2. 在使用tmake生成Makefile之前,首先检查一下环境变量TMAKEPATH,QTDIR等,是否指向ARM编译器的配置目录了。3. 使用tmake生产Makefile文件:tmake o Makefile 。4. 将Makefile中的“LINK=arm-linux-gcc”改为“LINK=arm-linux-g+”。5. 在命令行输入make命令,编译整个工程。最后,利用mkipks命令制作应用程序的安装文件,通过目标设备提供的应用程序同步功能,将安装文件下载到设备上。6. 结束语现代人的生活方式越来越移动化,人们希望能够随时随地的利用移动计算设备进行信息处理。Qtopia为这些移动设备提供了一个很好的应用程序开发平台,大大简化了在运行嵌入式Linux的移动设备上开发GUI应用程序的过程。本文结合snake这个游戏程序,详细的介绍了从构建开发环境,到使用Qtopia库进行应用程序开发的过程。除此之外,Qtopia还可以利用插件技术开发一些系统级的应用,例如输入法,网络服务等。我们相信,基于Qtopia的开发将会为使用嵌入式Linux的移动设备带来更加丰富的应用程序集。参考文献:1 ARTHUR GRIFFITH. KDE 2/Qt编程宝典M. 北京:电子工业出版社. 20022 Xteam(中国)软件技术有限公司. Qt程序设计M. 北京:清华大学出版社. 20023 Trolltech公司. Qtopia 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新疆昌吉州行知学校生物高三上期末质量检测试题
- 铁路货场改扩建项目2025年社会稳定风险评估与风险防控报告
- 劳动保障合作协议
- Module1 (教学设计)-2024-2025学年外研版(一起)英语四年级下册
- 路基路面检测试题及答案
- 湖南省邵阳市邵阳县第一中学2025年生物高三上期末调研模拟试题
- 2025-2026学年新疆哈密石油高中生物高三上期末学业水平测试模拟试题
- Unit 6说课稿 -2024-2025学年人教版八年级英语上册
- 2025年村级质检员招聘面试模拟题及答案
- 第四单元习作 二十年后的家乡(教学设计)-2024-2025学年语文五年级上册
- JC-T 2586-2021 装饰混凝土防护材料
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- 临床医学工程-题库
- SYT 0452-2021 石油天然气金属管道焊接工艺评定-PDF解密
- 屋顶分布式光伏发电项目EPC总承包工程招投标书范本
- 2000-2015年考研英语一真题及详细解析
- 体检中心礼仪培训课件
- 独立基础教学课件
- 20以内加减法口算题(10000道)(A4直接打印-每页100题)
- 会计从业资格基础知识汇总
- 项目干系人管理评估
评论
0/150
提交评论