收藏 分享(赏)

嵌入式开发 2.doc

上传人:myw993772 文档编号:6213427 上传时间:2019-04-02 格式:DOC 页数:25 大小:1.06MB
下载 相关 举报
嵌入式开发 2.doc_第1页
第1页 / 共25页
嵌入式开发 2.doc_第2页
第2页 / 共25页
嵌入式开发 2.doc_第3页
第3页 / 共25页
嵌入式开发 2.doc_第4页
第4页 / 共25页
嵌入式开发 2.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、嵌入式开发环境搭建及开发流程学校:黄冈职业技术学校班级:电子 201101 班 学号:201103041122 姓名:柯常军目录1、嵌入式概述2、PC 中安装开发中所要用到软件(虚拟机、超级终端、QT 图形界面开发软件等)3、安装 Linux 操作系统4、共享文件夹5、提供一个简单调试实验例程(包括:工作原理、实现功能、电路连接图,程序只要 main()部分等)6、QT 实验(包括:实现功能、说明工作原理,实现效果图等)7、总结1、嵌入式概述:1.1 嵌入式系统的定义按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统” 。 “嵌入性” 、 “专用性”与“计算

2、机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。1.2 嵌入式系统的特点嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型) 、电气/气氛环境(可靠) 、成本(价廉)等要求。与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。另外,在理解嵌入式系统定义时

3、,不要与嵌入式设备相混淆。嵌入式设备是指内部有嵌入式系统的产品、设备,例如,内含单片机的家用电器、仪器仪表、工控单元、机器人、手机、PDA 等。1.3.嵌入式系统的种类与发展按照上述嵌入式系统的定义,只要满足定义中三要素的计算机系统,都可称为嵌入式系统。嵌入式系统按形态可分为设备级(工控机) 、板级(单板、模块) 、芯片级(MCU、SoC) 。有些人把嵌入式处理器当作嵌入式系统,但由于嵌入式系统是一个嵌入式计算机系统,因此,只有将嵌入式处理器构成一个计算机系统,并作为嵌入式应用时,这样的计算机系统才可称作嵌入式系统。嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展

4、对象系统要求的外围电路(如 ADC、DAC、PWM、日历时钟、电源监测、程序运行监测电路等) ,形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统,要不断向计算机应用系统发展。因此,可以把定义中的专用计算机系统引伸成,满足对象系统要求的计算机应用系统。2、PC 中安装开发中所要用到软件(虚拟机、超级终端、QT 图形界面开发软件等)2.1 虚拟机2.11 基本概念虚拟机(Virtual Machine) ,在计算机科学中的体系结构里,是指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可

5、以像真实机器一样运行程序的计算机的软件实现。 2.12 基本特点通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就是一台真正计算机。因此,当你在虚拟机中进行软件评测时,可能系统一样会崩溃;但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo” (恢复)功能,你可以马上恢复虚拟机到安装软件之前的状态。2.13 虚拟系统与虚拟机区别虚拟系统其实

6、以 Prayaya 迅影 V3虚拟系统为代表的,通过生成现有操作系统的全新虚拟镜像,它具有真实 windows 系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机(Vmware,VirtualBox ,Virtual pc)不同,虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动 windows 系统那样耗费时间,运行程序更加方便快捷。2.14 虚拟机的种类VMware、Virtual PC、V

7、irtual Box、Bochs、Virtuozzo、XEN 等等。这其中有的运行在 windows 平台,如 VMware、Virtual PC 等,有的可以同时在 linux、windows 平台下运行,如 Virtual Box、bochs 等。有的为开源、免费软件:如 virtual Box、virtual PC 等,也有非常昂贵的VMware 等。下面我们选取使用最为广泛的三种虚拟机来进行使用、介绍:VMware、Virtual PC、Virtual Box。2.15 虚拟机的系统:虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows 系统完全一样的功能,进入虚拟系统

8、后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。虚拟系统和传统的虚拟机(Vmware,VirtualBox, Virtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动 windows 系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在应用程序运行速度上比虚拟系统慢得多。2.2 超级终端超级终端是 Windows

9、 操作系统自带的一个通讯工具 可以通过这个工具对路由器交换机等进行配置 使用:开始程序附件 通讯超级终端 可新建或者使用现有的连接对设备进行配置 启动命令是:hypertrm.exe 超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序,通过这些程序,可以通过超级终端与嵌入式系统交互,使超级终端成为嵌入式系统的“显示器” 。 2.21 超级终端的原理 超级终端的原理并不复杂,它是将用户输入随时发向串口(采用 TCP 协议时是发往网口,这里只说串口的情况) ,但并不显示输入。它显示的是从串口接收到的字符。所以,嵌入式系统的相应程序应该完成的任务便是: 1、将自己的启动信息、

10、过程信息主动发到运行有超级终端的主机; 2、将接收到的字符返回到主机,同时发送需要也可以远程管理服务器。 “超级终端”是一个程序,您可以通过调制解调器、零调制解调器电缆或以太网连接,使用该程序连接到其他计算机、Telnet 站点、公告板系统 (BBS)、联机服务和主机。 所谓的超级终端通俗得讲,其实就是指的挂在网络中的一台电脑或一组电脑,这台或这些电脑可以通过互联网来处理不仅是文本还可以处理包括图片、动画、声音、电影等的多媒体信息,HTML 本身就是超级文本。 这样说吧,你家里的一台电脑就是一个超级终端,只是很简单;网吧里的一组局域肉相联后再接到 Internet 上也是超级终端,这两种情况是

11、索取性质的。而一个网站、一个游戏伺服则是给别人提供方便提供服务的超级终端。另外还有网通公司、铁通公司、电信公司等提供的中继站,他们也是,正是他的中继功能才把我们家家户户的电脑共同引入到了一个更大的网络空间,大到中国和美国、日本的中继服务器,这是更大的超级终端2.3 QT 图形界面开发软件2.3.1 Qt 介绍Qt 是一个跨平台的 C+图形用户界面库,是挪威 Trolltech 公司的产品。Qt 是一个全面的 C+应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。2.3.1.1 全面的 QtQt 是一个全面的开发框架,它包括广泛的特征,性能与工具,可以开发高性能,跨平台客户端,以

12、及服务器端的应用程序。Qt 类库是一个拥有超过 400C+个类,同时不断扩展的库。它封装了用于端到端应用程序开发所需要的所有基础结构。优秀的 Qt 应用程序接口包括成熟的对象模型,内容丰富的集合类,图形用户界面编程与布局设计功能,数据库编程,网络,XML,国际化,OpenGL 集成等等。Qt 设计者是一个功能强大的 GUI 布局与窗体构造器,能够在所有支持平台上,以本地化的视图外观与认知,快速开发高性能的用户界面。Qt 语言家是一套用来消除国际化工作流程中所带来障碍的工具。使用 Qt 语言家,开发小组可把应用程序的翻译转换外包给非技术性翻译人员,从而可增加精确度,大大加快本地化处理过程。Qt

13、助手一个完全可自定义,重新分配的帮助文件或文档浏览器,它可与基于 Qt 的应用程序运行。使用 Qt 助手,开发小组同样能够很大程度上加快文档的处理过程。2.3.1.2搭建 Qt 开发环境虽然 Qt 自身带有构建工具,但它是在命令行下使用的,多少有些不便。所以,我们在此自己动手建设自己的 Qt 集成开发环境。下面介绍 Qt 开发环境的具体搭建过程。首先,从互联网上搜索并下载 Dev-C+,安装很简单,一路回车就可以了。然后,到http:/ Windows 系统来说,可以下载已编译好的安装包,当前最新版为 qt-win-opensource-4.4.0-mingw.exe。在 Qt 安装过程中唯一

14、需要注意的是,当安装程序要求选择 mingw 的路径时,直接选择 Dev-Cpp 的安装路径就行了。安装好上述两个软件后,最后还要到 http:/ 下载 Qt4 For Dev-Cpp Templates,下载后将其解压到 Dev-Cpp 的 Templates 文件夹下即可。这是用于在 Dev-Cpp 下开发 Qt 程序的模板资源。最后,把 Qt 安装目录中的bin 目录中的动态链接库拷贝到 windows 目录下,这样当运行编译好的 Qt 程序时,就再也不会碰到无法找到 Qt 的 DLL 的问题了。2.3.1.3 跨平台的 QtQt 是用于本地化跨平台应用开发的领先性框架。Qt 应用程序接

15、口与工具兼容于所有支持平台,让开发员们掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置。通过使用 Qt,开发小组们从主要的开发平台,可为主要操作系统创建本地化的应用程序。Qt 可提供于下列平台: Qt/Windows (Microsoft Windows XP, 2000, NT 4, Me/98) Qt/Mac (Mac OS X) Qt/X11 (Linux, Solaris, HP-UX, IRIX, AIX, 与其它许多 Unix 变式)Qt 对不同平台(Unix, Windows, and Mac)的专门 API 进行了封装,如文件处理、网络(操作,协议) ,进程处理、线程

16、、数据库访问等。Qt 应用程序本地化运行类似于本地化应用程序,在所有主要平台上,从单一源代码中汇编而成: Qt 在 Windows 上本地化运行 Qt 在 Mac OS X 上本地化运行 Qt 在 Linux/X11 上本地化运行使用 Qt 进行精确的平台非相关运行一编程后可在任何地方配置。确立新的平台,仅需重新汇编一个单一源代码库而己。2.3.1.4深入了解 Qt Qt 类库众多的 Qt 类库构成 Qt 的基础。该库可以利用大约 400 个面向对象的类,这些类带有大多数构建跨平台服务器与富客户端应用程序的底层基础构造函数。这些库包括用于 GUI、布局、数据库、国际化、网络与 XML 等的类。

17、要获得更多信息,请参阅 Qt 库,模块清单,或请参考范围广泛的 Qt 在线支持文档。 信号与槽在开发用户图形界面中,一个常见并重复发生的系统崩溃与问题源,即如何在不同组件之间进行通信。对于该问题,Qt 的解决方案为信号与槽机制。信号与槽是 Qt 的主要特征,它对促进对象通信提供一个类型安全的方法,并可能是区别于其它多数框架所提供特征的一个部分。 使用 Qt Designer (设计者)的 GUI 设计Qt 设计者是一个可见即所得的全方位 GUl 构造器。利用 Qt Designer,开发者可以拖放各种 Qt 控件构造图形用户界面并可预览效果。 使用 Qt Linguist (语言家) 进行国际

18、化国际市场的应用程序必须应支持全球各种语言与写入系统。无需修改源代码,Qt 应用即可支持全球各种语言。Qt Linguist 工具帮助用户实现应用国际化。 使用 Qt Assistant(助手)进行在线文档与帮助对于大多数复杂的程序来说,在线文档和帮助是必不可少的。Qt 通过Qt 助手 一个帮助文件和文档在线阅读器,来满足这一需求。它可定制,并且可随用户自己的应用程序一起发布,从而形成用户自己的帮助系统。 Cross-Platform Builds 跨平台构建编写用于多平台的软件是单调乏味的,且可能出现错误。维护编制文件更是如此,尤其是当不同的编译器和平台组合需要若干个编制文件时。通过 qma

19、ke 工具,Qt 能够很好地面对这一挑战。这个工具可以为目标平台生成准确无误的编制文件。2.3.2 Qt/Embedded 介绍Qt/Embedded 是一个完整的自包含 GUI 和基于 Linux 的嵌入式平台开发工具,是 Qt 在嵌入式平台的版本。Qt/Embedded 以原始 Qt 为基础,并做了许多出色的调整以适用于嵌入式环境。Qt/Embedded 通过 Qt API 与 Linux I/O 设施直接交互,成为嵌入式Linux 端口。同 Qt/Xl1 相比,Qt/Embedded 很省内存,因为它不需要一个X 服务器或是 Xlib 库,它在底层摒弃了 Xlib,采用 framebuf

20、fer (帧缓冲) 作为底层图形接口。同时,将外部输入设备抽象为 keyboard 和 mouse 输入事件。Qt/Embedded 的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的 Xlib/Sewer 系统。图 10.1 Qt/Embedded 与 Qt/X11 的比较Qt/Embedded 的底层图形引擎基于 Framebuffer。Framebuffer 正是Linux 2.2.x 以上本版内核中的一种驱动程序接口。这种接口采用 mmap 系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立

21、即反映在屏幕上。Framebuffer 驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个万面:一是对 LCD 及其相关部件的初始化,包括画面缓冲区的创建和对 DMA 通道的设置;二是对画面缓冲区的读写,具体到代码为 read、write 等系统调用接口。2.3.3 Qtopia 介绍2.3.3.1 简介Qtopia 是一种全方位的应用程序开发平台,它可用于基于嵌入式Linux 的 PDA (个人数字助理),移动电话,web pads,以及其他移动计算设备。Qtopia 构建于 Qt/Embedded 之上,是专为基于 Linux 的消费电子设备提供和创建图

22、形用户界面而设计的。常见约有 2 种版本:Qtopia Phone 版和Qtopia PDA 版。Qtopia Phone 版必须付费才能得到,而 Qtopia PDA 版有免费版本。 Qtopia Phone 版Qtopia Phone 版专为基于 Linux 的智能电话和多功能电话设计。 Qtopia PDA 版Qtopia PDA 版专为基于 Linux 的 PDA (个人数字助理)设计。Qtopia 特色: 视窗操作系统 同步框架 开发环境 本地化支持 游戏和多媒体 PIM 应用程序 输入法 个性化选项 生产力(Productivity)程序 lnternet 应用程序 Java 集成

23、 无线支持2.3.1.2 Qtopia 平台的核心特征 输入法Qtopia 支持两种基本类型的输入法。Qtopia 可由带有少量按键的键盘驱动,也可由用于触摸屏设备的手写笔驱动。Qtopia Phone 版Qtopia PDA 版Qtopia 支持众多的文本输入方式,包括基于键盘的预测键入,可定制的手写识别,以及屏幕键盘输入。此外,还支持数种可用于亚洲书写系统的第三方输入方式。 屏幕尺寸/布局Qtopia 强大的设计引擎支持各种屏幕尺寸以及横向和纵向布局,包括176*208,176*220,240*320 和 480*640 (像素)。 程序发布器Qtopia 含有一个程序发布器。根据使用版本

24、的不同(PDA 或 Phone),程序发布器也会有所不同,但它始终包含一个默认的基于图标的应用程序导航布局方案。 资料处理Qtopia 允许存储,查看和转移资料。它还有一个应用程序业务框架,允许开发者和用户选择打开每种资料的程序。 程序安装程序可以通过桌面型电脑,插入式媒体卡(如 CF 或 SD 卡)或者网络连接安装,甚至可以安装在外部存储媒介上。一旦将这个存储媒介插入到基于 Qtopia 的设备,程序可以立即运行。 插件管理器Qtopia 自带的插件框架使得向设备添加新特性无缝化且便捷。用户可以添加新字体,插入新的多媒体格式,添加或移除输入方式,插入新的媒体播放器外观,新的主项,以及许多其他

25、特性。 国际化支持Qtopia 内部使用统一的代码,因此可以很方便地针对不同的市场进行本地化。此外,程序的设计引擎能自动调整比原始文本长或短的翻译文本的按钮和标签。目前,Qtopia 支持多种语言。 Java 集成Olopia 上可以运行数种 Java 虚拟器(JVM),包括 Esmertecs Jeode和 IBM VisualAge Micro Edition。Java 应用程序可以无缝集成到 Qtopia中,提供同原程序相同的效果。 无线支持蓝牙和 lrDA 红外线的实现确保了 Qtopia 能和其他移动设备进行通信,包括便携型电脑。无线支持性能基于 OBEX 标准。 终端用户个性化支持

26、终端用户可以个性化设置背景。色彩方案,字体,多媒体外观,还可以更改窗口和按钮的颜色及外观。 同步框架Qtopia 含有同步框架,可确保方便地备份所有的设备侧数据。并能与桌面型计算机共享。利用 Qtopia Desktop 和 Micrmsof Outook,Qtopia 可以同步其 PlM 数据。2.3.1.3 Qtopia PDA 版本简介Qtopia PDA 版(Trolltech) 是第一个用于嵌入式 Linux PDA 的全方位应用程序开发平台。Qtopia PDA 版(Qtopia PDA),名副其实基于 Linux 的PDA 的标准,可为新一代的高级移动计算设备提供稳定的软件平台。

27、Qtopia PDA 运行于 Linux 之上,只需占用少量内存就能提供强大的功能。Qtopia PDA 包括: 核心平台Qtopia PDA 具备平台级的特色,可提供一个健全且具有许多后台特征的计算环境,从而为终端用户提供完整的软件开发体验。通过简化增加特别功能的工作,程序制作者将会更轻松。这些特性包括:输入法,可调的屏幕尺寸和布局,插件管理器,程序安装以及无线支持。 程序发布器Qtopia PDA 含有一个基于图标的应用程序导航布局方案。它完全可定制,专为移动计算设备而设计。用户界面功能强大而直观。 程序Qtopia PDA 含有一套强大的 PDA 程序集。包括 PIM (包括联系人、事件

28、、任务、地址簿和计划事项),电子邮件、游戏、多媒体框架以及其他设置。 同步框架用户可以把他们的 PDA 与 Qtopia Desktop,Trolltech 的跨平台桌面PIM 集或 Microsoft (R) Outlook 同步。Qtopia PDA 还可以同步联系人、日志、计划事项、多媒体文件和文档等。 开发环境为了正确地定制 PDA,制造商需要强大的开发工具。Trolltech 提供了一整套工具集来定制和扩展 Qtopia PDA。强大的开发环境简化了在桌面系统进行开发。进而交互编译到目标设备的过程。QtopiaPDA 版的技术特性: 源代码所有 Qtopia PDA 客户都能获得全部

29、源代码。客户可以创建与现有程序紧密结合的定制程序,并能在他们想使用的处理器上进行编译。 国际化支持Qtopia PDA 内部使用统一的代码,因此可以很方便地针对不同的市场进行本地化。此外,程序的设计引擎能自动调整比原始文本长或短的翻译文本的按钮和标签。 定制Qtopia PDA 提供一个强大的主题开发引擎,允许程序制作者定制全新的用户界面和程序发布工具。 Java 集成Qtopia PDA 上可以运行数种 Esmertec,IBM 和 Sun 的 Java 虚拟器(JVM)。Java 应用程序可以无缝集成到 Qtopia PDA 中,提供同原程序相同的效果。 程序安装程序可以通过桌面型电脑,插

30、入式媒体卡(如 CF 或 SD 卡)或者网络连接安装,甚至可以安装在外部存储媒介上。一旦将这个存储媒介插入到基于 Qtopia PDA 的设备,程序可以立即运行。 无线支持红外线的实现确保了 Qtopia PDA 能和其他移动设备进行通情,包括膝上型电脑。无线支持性能基于 OBEX 标准。 输入法Qtopia PDA 支持众多的文本输入方式,包括基于键盘的预测键入,可定制的全屏手写识别,以及屏幕键盘输入。此外,还支持数种可用于非西方书写系统的第三方输入模式。 屏幕尺寸/布局Qtopia PDA 强大的设计引擎支持各种屏幕尺寸以及横向和纵向布局,包括 240*320 和 480*640(像素)。

31、 插件管理器Qtopia PDA 自带的插件框架使得向设备添加新特性无缝化且便捷。用户可以添加新字体,插入新的多媒体格式,添加或移除输入法,插入新的媒体播放器外观,新的主项,以及许多其他特性。 终端用户个性化支持终端用户可以个性化设置背景,色彩方案,字体,多媒体外观,还可以更改窗口和按钮的颜色及外观。2.3.4 Qt/Embedded 和 Qtopia 开发模式嵌入式软件开发通常都采用交叉编译的方式进行,基于 Qt/Embedded 与Qtopia 的 GUI 应用开发也采取这样的模式。先在宿主机上调试应用程序,调试通过通过后,经过交叉编译移植到目标板上。前面介绍过 Qt/Embedded 直

32、接写入帧缓冲,在宿主机上则是通过qvfb(vitural framebuffer)来模拟帧缓冲。qvfb 是 X 窗口用来运行和测试Qtopia 应用程序的系统程序,允许我们在桌面及其上开发 Qt 嵌入式程序,而不需要在命令台和 X11 之间来回切换。qvfb 使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb) 模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。表 10.1 宿主机移植所需工具及环境变量声明工具软件 描述 变量声明Tmake-1.11 生成 Makefile

33、文件 TMAKEDIR/TMAKEPATH/PATHQt-x11-2.3.2Qvfb-虚拟帧缓冲工具Uic 用户界面编译器Designer Qt 图形设计器LD_LIBRARY_PATH / PATHQt-embedded-2.3.7 Qt 库支持 libqte.so QTEDIR/LD_LIBRARY_PATH/PATHQtopia-free-1.7.0 应用程序开发包桌面环境 QPEDIR/LD_LIBRARY_PATH/PATH因此在最初编译配置嵌入式 Linux 内核时必须使其支持帧缓冲。宿主机上的移植需要的工具及环境变量见表 10.1。其中环境变量可以直接用 export 来声明,也

34、可以在/.bash_profile 脚本文件中进行设置。特别指出,在配置 qt-embedded-2.3.7 时, “./configure qconfig qvfb depths 4,8,16,32”就是指定 Qt/Embedded 开发包生成虚拟缓冲帧工具qvfb,并支持 4/8/16/32 位的显示颜色深度。运行 Qt 的虚拟缓冲帧工具的方法是:在 Linux 图形模式下运行命令:./qvfb QLabel *label = new QLabel(“Hello World!“); label-show(); return app.exec(); 现在,让我们来编译该程序。单击“运行”菜单

35、中的“ 编译” 菜单项,出现如下图所示对话框时,说明没有出现错误,编译成功。图 3 编译成功单击“关闭” 按钮。很好,现在运行我们第一个 Qt 应用程序的时候到了,单击“运行”菜单中的“运行”菜单项。来,看看我们的“ 大作”吧!图 4 我们的 hello 程序上面演示了在集成开发环境中开发 Qt 应用程序的整个过程,下面开始介绍我们的源代码。俗话说,万事开头难,所以我们在这里会尽可能细致地为读者讲解这些代码。#include #include 在这个程序中,我们总共用到了两个类 QApplication 和 Qlabel,根据先声明后使用的原则,我们在上面两行将这两个类的定义包含到我们的代码中

36、。对 Qt 来说,它的每一个类都有一个同名的头文件与之对应,这个类的定义就在这个头文件中。我们注意到,这两个头文件都是以大写字母开头的,实际上类对应的头文件都是这样。int main(int argc, char *argv)在这里,main()函数是程序的入口。在使用 Qt 的时候,main()一般只是执行一些初始化工作,接着就把控制转交给 Qt 库,然后 Qt 库通过事件来向程序报告用户的行为。QApplication app(argc, argv);上面这行代码为 QApplication 创建了一个对象,实际上,在每一个使用 Qt 的应用程序中都必须有一个 QApplication 对

37、象,该对象用来管理应用程序的各种资源。一般说来,在使用 Qt 的窗口部件被之前,要首先创建 QApplication 对象。因为 Qt 支持命令行参数,所以这里的 QApplication 带有 argc 和 argv,用来接收入口函数从系统那里接收到的命令行变量,以便进一步处理。QLabel *label = new QLabel(“Hello World!“);这一行创建了一个窗口部件 QLabel,我们用它来显示一则消息“Hello World!” 。按照Qt 的术语,一个窗口部件就是用户界面中的一个可见的用户界面对象,它能够处理用户输入和绘制图形,它相当于 Windows 的术语中的一

38、个控件或容器。我们可以改变窗口部件的全部观感、主要属性(比如颜色等 )以及窗口部件的内容等。我们常见的按钮、菜单、滚动条和框架等都属于窗口部件。窗口部件可以包含其它的窗口部件,比如应用程序窗口通常就是一个窗口部件,而其中又包含了 QMenuBar、QToolBars、QstatusBar 以及其它的窗口部件。大多数应用程序使用一个 QMainWindow 或者 QDialog 作为自己的主窗口,但是这不是必须的的,实际上任何窗口部件都能当作程序的主窗口。就本例而言,窗口部件QLabel 就是应用程序的主窗口或者说是主窗口部件。如果用户关闭了主窗口部件,应用程序就会退出。label-show()

39、;默认时,窗口部件是不可见的,之所以这样,是为了让我们可以在显示之前对窗口部件进行必要的设定,以防止闪烁现象的发生。上面这一行代码的作用是使标签变为可见的。return app.exec();上面这一行代码将应用程序的控制权交给 Qt,交权后,应用程序便进入事件循环状态。这时的程序只是静静地等待用户的鼠标或键盘之类的动作。当用户发出动作时,就会生成相应的事件,如果这些事件正是该程序需要响应的那些事件,它便会执行一些函数来响应用户的动作。迄今为止,我们已经编译运行了第一个 Qt 应用程序,并且对该程序的源代码有了初步的了解,但是我们的这个程序非常简单,简单到显示一条消息后就只能通过标题栏上的“关

40、闭”按钮来关闭。接下来我们将进一步学习如何通过窗口部件来跟用户互动。3、安装 Linux 操作系统本文档适用于将 Linux 系统安装到防火墙 PC 上。在安装 Linux 系统之前,请在计算机启动时不断按 F2 键,进入 BIOS 的 Boot Sequence,设置为从 CD-ROM 启动。具体安装步骤如下: 第一屏:Red Hat Linux 9 /此处为该屏的标题,下同ENTER /此处为选择按下的按钮,下同 第二屏:CD Found SKIP 第三屏:Red Hat Linux 9 NEXT 第四屏:Language Selection 选择 English (English) NE

41、XT 第五屏:Keyboard 选择 U.S.English /此处应根据具体键盘选择 NEXT 第六屏:Mouse Configuration 选择 Wheel Mouse (PS/2 ) /此处应根据具体鼠标选择 NEXT 第七屏:Upgrade Examine 选择 Perform a new Red Hat Linux installation NEXT 第八屏:Installation Desktop 选择 Personal Desktop Next 第九屏:Disk Partitioning Setup 选择Manually partition with Disk Druid Ne

42、xt 第十屏:Partitioning 首先要求删除所有分区(具体操作为,选中某一分区,点 Delete。在弹出的对话框中点 Delete) 。重复该操作直到所有分区都被删除掉。 然后点 New。在弹出的对话框中首先: File System Type 选择为 swap Size(MB):方框中填入的数为本机器内存的两倍(如本机内存为 512M,则方框中应填入 1024); 然后将剩下的硬盘分为一个区其中: Mount Point: 项设置为 :/ File System Type 设置为:ext3 在 Additional Size Options:项中,选中Fill to maximum

43、allowable size,然后点 OK。在弹出的对话框中点Continue. Next 第十一屏:Boot Loader Configuration Next 第十二屏: Network Configuration Next 第十三屏:Firewall Configuration Next 第十四屏:Additional Language Support 选中 English (USA) Next 第十五屏:Time Zone Selection 在 Location 中选择 Asia/Shanghai Next 第十六屏:Set Root Password 此处为设置账户 root 的密

44、码。注意上下两个框的输入应该一致。 Next 第十七屏:Personal Desktop Defaults 选择 Customize the set of packages to be installed Next 第十八屏:Package Group Selection 不选择 Desktops 项中的X Window System 在最后的 Miscellaneous 项中,选中 Minimal Next 第十九屏: About to Install Next 然后等待安装 第二十屏:Boot Diskette Creation 选择 No, I do not want to create

45、 a boot diskette Next 第二十一屏:Congratulations Exit 安装成功,重新启动机器4、共享文件夹5、提供一个简单调试实验例程(包括:工作原理、实现功能、电路连接图,程序只要 main()部分等)5.1 Hello 程序1、实验目的:(1)掌握 Qt/e 编程的基本框架;(2)掌握 Qt/e 程序编写和调试的基本方法;(3)掌握 Qt/e 标签的使用。2、实验设备:硬件: PC 机 一台HKARM9 实验箱教学实验开发平台 一套软件: RedHat Linux9.0 操作系统 Windows 98/2000/XP 操作系统(可选)嵌入式 Linux 开发环境

46、(含 Qt/e 和 Qtopia)3、实验内容:创建和显示一个简单的窗口,使用标签显示字符串“Hello,Qt!” ,在 PC机上调试通过后交叉编译下载至 MagicARM2410 上运行。4、实验预习要求:(1)熟悉基于 PC 的 Qt 和 Qtopia 模拟环境;(2)预习 C+程序编写方法;(3)预习 Qt 的帮助手册,了解 Qt 编程的大致方法;(4)熟悉更新文件系统的基本方法。5、实验原理:标签是设计图形界面不可或缺的基本组件,利用标签我们可以显示各种信息。Qt 为标签提供了一系列 API 函数,通过调用这些函数,可以很容易设计各种标签。调用 Qt 中标签的 API 函数,必须包含标

47、签的头文件 qlabel.h。如果需要显示的字符串信息很长,建议不要使用 Qlabel,改用其它部件如MultiLineedit(多行编辑区) 。6、实验步骤:(1)进入/linux/x86-qtopia 目录,运行 set-env 脚本,为本实验设置环境变量,然后创建文件夹 hello。$ cd/linux/x86-qtopia$ .set/env$ mkdir hello(2)进入 hello 目录,新建文件 hello.cpp,并编写如程序清单 11.1 所示的程序,然后用 progen 工具生成工程文件 hello.pro。$ cd hello$ vi hello.cpp$ proge

48、n t app.t o hello.pro(3)使用 tmake 工具,生成 hello 工程的 Makefile 文件。$ tmake o Makefile hello.pro(4)修改 Makefile 文件,在 LIBS 变量中增加需要用到的库,然后输入 make命令编译。LIBS = $ (SUBLIBS)-L$(QTDIR)/lib lqte lm lstdc+$ make(5)启动虚拟控制台,运行 Hello 程序,将会得到如图 11.1 所示的实验结果(主机须启动帧缓冲,必须能访问/dev/fb0) 。$ cd /linux/x86-qtopia$ . set-env$ cd h

49、ello$ ./hello qws或者在终端,启动虚拟缓冲区和 QPE,启动 Qtopia 的终端,输入./hello 运行程序,亦可得到如图 11.1 一样的结果。$ cd /linux/x86-qtopia$ . set-env$ cd hello$ qvfb / 创建一个名为 app 的 Qapplication 对象Qlabel * label = new Qlabel (“Hello, Qt !” , 0 ) ; / 创建一个 QLabel 部件label-setAlignment (Qt:Align Vcenter|Qt:AlignHCenter ) ; / 设置标签在水平/垂直方向位于中心位置label-setGeometry (10, 10, 200, 80 ) ; / 标签坐标(10,10

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

当前位置:首页 > 网络科技 > 嵌入式开发

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报