基于QT的多功能日历设计与开发毕业设计(DOC毕业设计论文).doc_第1页
基于QT的多功能日历设计与开发毕业设计(DOC毕业设计论文).doc_第2页
基于QT的多功能日历设计与开发毕业设计(DOC毕业设计论文).doc_第3页
基于QT的多功能日历设计与开发毕业设计(DOC毕业设计论文).doc_第4页
基于QT的多功能日历设计与开发毕业设计(DOC毕业设计论文).doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海电力学院本科毕业设计(论文) 题目: 基于QT的多功能日历 设计与开发 院系: 计算机与信息工程学院 专业年级: 2007电子科学与技术 学生姓名: 张岚 学号: 20072691 指导教师: 金一鸣 2011年6月15日基于QT的多功能日历设计与开发摘要 目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中,但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中。而三种常用的嵌入式操作系统分别为Palm OS、Windows CE以及Linux,其中Linux现已成为嵌入式操作的理想选择。嵌入式Linux系统有代表性的GUI系统主要有MiniGUI、MicroWindows、Tiny X以及Qt/Embedded。而其中Qt/Embedded,是一个专门为小型设备提供图形用户界面的应用框架和窗口系统。提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt是 KDE 等项目使用的 GUI 支持库,所以有许多基于Qt 的 X Window 程序可以非常方便地移植到Qt/Embedded 版本上。本设计主要详细介绍基于QT的多功能日历图形界面的设计与开发,它与人们日常生活中所使用到的电子日历的界面与功能基本相同。例如,日历界面年月日的任意切换与更改、特殊日期的提醒事件功能等。而这些功能的开发都是基于嵌入式图形用户界面的。本文主要详细介绍如何用QT代码实现多功能日历的开发与设计,并且如何最终将编译的可执行文件从Linux操作系统移植到Mini2440开发板的过程。关键词 嵌入式系统 Linux GUI QT/Embedded QT Mini2440The design and development of multifunctionalcalendar based on QTAbstract Embedded systems technology has now become one of the most popular technology, attracting a large number of talents involved in, but what is embedded systems, what kind of technology they can be called embedded technology, still under discussion.The three commonly used embedded operating systems are Palm OS, Windows CE and Linux, which Linux has become an ideal choice for embedded operation.Embedded Linux GUI system representative of the main MiniGUI, MicroWindows, Tiny X and Qt / Embedded.Which Qt / Embedded, designed for small devices is to provide a graphical user interface application framework and window systems.Providing a wealth of widgets (Widgets), and also supports custom widgets, so it can provide a nice graphical user interface.Qt is KDE and other projects to support the use of GUI libraries, so there are many Qt-based X Window programs can be very easily ported to Qt / Embedded version.This paper mainly introduced the QT-based graphical calendar interface multi-function design and development, its interface and functionality is the same as the electronic calendar used in daily life.For example, it has the function of switching and changing the day of calendar, and a special date reminding events.These functions are based on the development of embedded graphical user interface.The following will be to discussion how to use QT code development and design of multi-function calendar, and how to compile the final executable file from the Linux operating system to Mini2440 development board process.Keywords Embedded system Linux GUI QT/Embedded QT Mini2440目录1 引言11.1 研究背景11.2 研究目的和意义22 嵌入式系统和嵌入式Linux32.1 嵌入式系统32.2 嵌入式Linux概述42.3 Linux与其他操作系统的比较43 图形用户界面GUI63.1 GUI概述63.2 嵌入式GUI分类73.2.1 MiniGUI概述73.2.2 MicroWindows概述83.2.3 Qt/Embedded概述103.2.4 三种GUI优缺点分析123.3 Qt/Embedded具体介绍143.3.1 应用程序的运行方式143.3.2 开发环境及工具143.3.3 工作模式分析154 GUI软硬件开发环境介绍164.1 操作系统的选择与安装164.2 虚拟机软件概述174.2.1 Vmware虚拟机软件简介174.2.2 Vmware虚拟机软件的特点184.3 Qt Creator设计软件概述194.4 Mini2440开发板及S3C2440微处理器简介204.5 Linux系统在Mini2440上的移植214.5.1 对Nand Flash进行分区224.5.2 移植bootloader224.5.3 移植Linux内核234.5.4 移植根文件系统245 多功能日历设计与开发的实现255.1 QT关键技术255.2 多功能日历程序各功能模块分析265.3 搭建Linux编译环境295.4 设计成果316 结论33谢辞34参考文献351 引言在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。嵌入式系统技术与我们的生活已经密切相关了。1.1 研究背景目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中。广义上讲,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类:微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。所以有人简单的说:“嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。”还有人认为嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可行性、成本、体积、功耗严格要求的专用计算机系统”。应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。狭义上讲,人们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统并且具有某些特定功能的系统,这里的微处理器专指32位以上的微处理器。按照这种定义,典型的嵌入式系统有使用x86的小型嵌入式工控主板,在各种自动化设备,数字机械产品中有非常广阔的应用空间;另外一大类是使用Intel,Motorola等专用芯片构成的小系统,它不仅仅在新兴的消费电子和通讯仪表等方面获得了巨大的发展应用空间,而且甚至有趋势取代传统的工控机。现在大家更加清楚的看到:嵌入式技术的春天已经来了。所以也就难怪嵌入式系统成为当前最热门的技术之一。目前,在 Linux下应用软件开发领域急需一种容易学习、成本低、效率高的GUI应用程序开发方法,以解决Linux应用程序的易用性不高,应用范围相对狭窄的问题。而QT则是一个可以应用于Linux下的全面的C+程序开发框架,它能够开发高性能、跨平台、功能丰富的客户端和服务器端程序,同时QT还包含针对跨平台开发和国际化开发的类库和相应的开发工具,更引人注目的是,目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上的。1.2 研究目的和意义随着嵌入式系统功能的完善以及图形显示设备的广泛应用,目标产品对GUI的需求越来越多,要求也越来越高。当初的一些简单的人机交互接口已经无法满足人们的要求,几乎只要是面向人机交互的嵌入式产品,就会涉及文字编辑、图形视频,甚至Web浏览器,而这一切均要求有一个高性能、高可靠的GUI的支持。由于嵌入式系统实时性要求非常高,对GUI的要求也更高。这些系统一般不可能建立在庞大累赘的、非常消耗系统资源的GUI和操作系统上,如Windows或X Window上,于是,这些系统对轻型GUI的需求更加突出。另外嵌入式系统往往是一种定制设备,它们对GUI的需求也各不相同。有些系统只要求一些图形功能,而有些系统要求完备的GUI支持,因此,GUI也必须是可定制的。嵌入式系统对GUI的基本要求包括:轻型、占用资源少、高性能、高可靠性及上层接口与硬件无关,高度可移植可配置1。Qt/Embedded是一个专门为小型设备提供图形用户界面的应用框架和窗口系统,是高端嵌入式设备PDA及手机的主流开发工具。作为一项成熟的技术,KDE(Kool Desktop Environment,k桌面环境)桌面系统对于嵌入式窗口系统的设计有很大参考价值,Qt/Embedded给嵌入式窗口系统提供了很好的框架,提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt/Embedded是KDE等项目使用的GUI支持库,所以有许多基于Qt/Embedded 的X Windows程序可以非常方便地移植到Qt/Embedded版本上,而本文所述设计主要是基于Qt/Embedded的应用上。2 嵌入式系统和嵌入式Linux一个嵌入式系统(EmbeddedSystem)就是一个计算机硬件和软件的集合体,也许还包括其他一些机械部件。它是为完成某种特定的功能而设计的。一个很好的例子就是电子手表。几乎每个人都有一块,并且每天都有上千万的人们在使用着它,但是很少有人意识到有处理器和软件在帮助他们。所以嵌入式系统是一种应用系统,它至少包含一个可编程的计算机通常是某种形式的微控制器、微处理器或数字信号处理芯片(DSP)且使用该系统的人一般并未意识到该系统是基于计算机的。本章主要介绍嵌入式系统的概念,及Linux操作系统的特点和优势。2.1 嵌入式系统嵌入式系统是把计算机直接嵌入到应用系统中,它融合了计算机软/硬件技术、通信技术和微电子技术。随着微电子技术和半导体技术的高速发展,超大规模集成电路技术和深亚微米制造工艺已十分成熟,从而使高性能系统芯片的集成成为可能,并推动着嵌入式系统向最高级构建形式,即片上系统SOC(System on a Chip)的水平发展,进而促使嵌入式系统得到更深入、更广阔的应用。嵌入式技术的快速发展不仅使其成为当今计算机技术和电子技术的一个重要分支,同时也使计算机的分类从以前的巨型机/大型机/小型机/微型机变为通用计算机/嵌入式计算机(即嵌入式系统)。虽然嵌入式系统在工业、服务业、消费电子等领域的应用范围不断扩大,且已渗透到人们日常生活的方方面面,但是依然很难给它下一个明确的定义。嵌入式系统本身是一个外延很广的名词,凡是与产品结合在一起的、具有嵌入式特点的控制系统都可以叫做嵌入式系统。国际电工与电子工程师协会(即IEEE)曾经把嵌入式系统定义为“控制、监视或者辅助设备、机器和车间运行的装置”。显然该定义具有突出的应用色彩,不过现在看来,似乎并未充分体现嵌入式系统现今的学术内涵。目前国内普遍认同的嵌入式系统的定义是“嵌入式系统是将计算机嵌入到某个应用系统内的一种计算机体系结构形式”。换言之,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件能灵活变化以适应所嵌入的应用系统,对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。简言之,嵌入式系统就是嵌入式计算机系统的简称2。2.2 嵌入式Linux概述Linux是一个成熟而稳定的网络操作系统。将Linux植入嵌入式设备具有众多的优点。首先,Linux的源代码是开放的,任何人都可以获取并修改,用于开发自己的产品。其次,Linux是可以定制的,其系统内核最小只有约134kB。一个带有中文系统和图形用户界面的核心程序也可以做到不足1MB,并且同样稳定。另外,它与多数Unix系统兼容,应用程序的开发和移植相当容易。同时,由于具有良好的可移植性,XFJ成功使Linux运行于数百种硬件平台之上然而,Linux并非专门为实时性应用而设计, 因此如果想在对实时性要求较高的嵌人式系统中运行Linux,就必须为之添加实时软件模块。这些模块运行的内核空间正是操作系统实现进程调度、中断处理和程序执行的部分,因此错误的代码可能会破坏操作系统,进而影响整个系统的可靠性和稳定性。Linux的众多优点还是使它在嵌人式领域获得了广泛的应用,并出现了数量可观的嵌入式Linux系统。其中有代表性的包括:UClinux、ETLinux、ThinLinux、LOAF 等。ETLinux通常用于在小型工业计算机, 尤其是PC104模块;ThinLinux面向专用的照相机服务器、x10控制器、MP3播放器和其它类似的嵌入式应用;LOAF是Linu OnA F1op- PY的缩略语,它运行在386平台上。2.3 Linux与其他操作系统的比较将Linux与微软的Windows相比较,确实Windows具有很好的互连性,且具有非常全面的软件栈。但开发者一旦用Windows建立了产品,他也就丧失了实现差异化的机会。仅仅将Windows OS加到你的产品中并实现商用是十分迅速的。所以如果想获得面市时间上的优势,Windows会给你带来很多功能性上的优势。但是你获得功能性的同时,也就失去了差异化的机会。当然,Windows还有其他一些技术上的问题,这主要体现在可靠性和软件规模方面。Windows的“体积”十分庞大。人们都在说Linux很大,确实与传统RTOS的70 80k的代码规模相比,Linux的大小通常在几兆字节, 而最小的WindowsCE的代码规模也有27MB (BIPLIP标注: 应该是23MB)。出于政治和法律上的考虑,微软是不能将Windows进行拆分的。同时,Windows和其它RTOS还将遇到来自用户不断增加的使用成本(runtime costs)方面的挑战,因为他们收取高额的版税。嵌入式Windows的版权费大约为每拷贝1215美元。对于那些大批量的产品,其每件产品上可承受的分摊成本十分有限,如果要向Windows支付这样的版税,很可能会造成亏本。其它商业化的RTOS采用的也是这样一种收取版税的商业模式。而Linux,其突出的一个优点就是免版税。Linux还具有很好的可靠性。传统的RTOS通常不具备强大的内存保护功能,这使应用程序很容易被破坏。另一个影响嵌入式系统对操作系统选择的是商业因素,在这方面传统RTOS供应商和微软的境遇是相同的。传统RTOS供应商和微软都会在不与客户协商的情况下终止某一产品的供应,他们的商业决策是从他们公司自身的利益出发的,而不是站在客户的角度考虑。Linux则能给予使用者更多的选择。如果采用一个开放源码的操作系统,开发者能够主宰他们自己的命运,他们不必被一个供应商的决策牵着鼻子走,他们总是有很多选择。即使他们选择了MontaVista这样商业化的Linux供应商,他们依然能够保持对开放资源进行客户化和利用的选择性,他们可以选择继续和MontaVista合作或是离开。现实中,与MontaVista所提供的商业化版本的Linux形成竞争的除了Windows和其它RTOS,还有由用户自主开发(roll-your-own)的Linux。但是建立和维护一个基于Linux的平台是很艰巨的工作,而对于用户来说,这是一种无法创造附加值的工作。我们日常管理着MontaVista的Linux环境中超过4200万行的代码。嵌入式应用程序平均的代码长度最多是50万行, 很多组织是没有能力去管理4200万行代码的。自主开发Linux过程中会遭遇到的另一个问题是,在一个开放资源基础上工作,同时需要投入大量的时间和精力在基础性资源的周围建立一个平台。但是Linux是开放源码的,其发展速度十分迅速。因此大多数自主开发的项目实际上是我们称之为“某一时间点(point-in-time)”的版本,因为开发者只是选取了某一时段的源代码并基于它进行开发,而并不想继续投资以保持与Linux同步的发展。而像MontaVista这样的供应商会保持大量基础性的投入跟踪Linux的最新版本,并将其加入到产品中来。MontaVista建立了一个统一的基础资源,可以为那些大OEM建立一个我们称之为“策略平台 的统一的Linux平台。因此可以在相同的源代码上建立针对MIPS、ARM、PowerPC或sH等不同处理器架构的Linux。要想建立这样的Linux系统需要大量的基础性投入,而大多数嵌入式系统公司是不会在他们的产品之外投入一分钱的34。3 图形用户界面GUI图形用户界面GUI(Graphical User Interface,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。本章主要介绍了常用的嵌入式GUI领域,其中被广泛使用的是QT/Embedded、Microwindows和MiniGUI三种系统,并重点叙述选择QT/Embedded作为开发工具的原因,及QT/Embedded应用程序的运行方式、开发环境及工具和工作模式的简要分析。3.1 GUI概述GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人机环境三者作为一个系统进行总体设计。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。而嵌入式GUI本身具有着轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点,具有强大的发展潜力。作为主流之一的Linux嵌入式系统,主要的GUI开发应用软件包括GTK (GIMP Toolkit)、Qt和wxWidgets这3大GUI框架。其中Qt是挪威的Trolltech公司的旗舰产品,作为跨平台的应用程序框架,是开源左面系统KDE的基石。当前嵌入式Linux系统迫切需要轻量级的GUI,幸运的是,不少厂家和开放源码组织已经提供了这样的GUI,如Qt/Embedded,Microwindows,MiniGUI等。尽管已具备了基本的轻量级GUI系统,但由于Flash磁盘空间、内存资源和功耗的限制,嵌入式Linux系统上的GUI应用软件设计很大程序上不同于桌面系统应用软件的开发。比如,应用程序的用户界面就需要精心定制,来方便用户在较小尺寸的屏幕上输入输出;又如,嵌入式系统上的应用程序一般不允许崩溃,所以必须采取安全有效的内存管理策略保证程序的可靠性。嵌入式GUI系统是计算机系统和用户的接口,它要提供给上层的应用程序绘制图形界面以及接收用户输入的能力。从实现的方式上,它既可以是一套库,也可以是和应用程序一起编译的源代码。嵌入式GUI系统具有可移植性、较高的稳定性和可靠性、较高的可配置性、系统开销少等特点5。3.2 嵌入式GUI分类目前在常用的嵌入式GUI领域,广泛使用的有QT/Embedded、Microwindows和MiniGUI三种。由于嵌入式开发人员对实时嵌入式系统在理解上的不同,使得这些GUI系统在接口定义、体系结构、功能特性等方面存在很大差别,它们所采取的技术路线也有所不同。3.2.1 MiniGUI概述MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。“小”是MiniGUI的特色,它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。目前,MiniGUI的最新版本为MiniGUI 3.0,所以MiniGUI对中文的支持最好。它支持GB2312与BIG5字元集,其他字元集也可以轻松加入。历经十余年时间, MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种 SoC 芯片,已验证的硬件平台包括 ARM-based SoCs 、MIPS based SoCs IA-based SoCs 、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等,广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域。使用 MiniGUI 成功开发产品的企业有华为、中兴通讯、大唐移动、长虹、TCL、联想、迈瑞、南瑞、炬力、D2 等。这些用户广泛分部在中国大陆、台湾、新加坡、韩国、美国、德国、意大利、印度、以色列等国家和地区。为什么 MiniGUI 能够在如此众多的嵌入式操作系统上运行?这是因为 MiniGUI 具有良好的软件架构,通过抽象层将 MiniGUI 上层和底层操作系统隔离开来。如图所示,基于 MiniGUI 的应用程序一般通过ANSI C库、操作系统和驱动程序接口以及 MiniGUI 自身提供的 API 来实现自己的功能;MiniGUI 中的“可移植层”可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。MiniGUI 为嵌入式 Linux 系统提供了完整的图形系统支持,是全球针对嵌入式 Linux仅有的两个商用嵌入式GUI系统之一。MiniGUI为嵌入式Linux 系统提供了完整的多进程支持;可以 MiniGUI-Processes、MiniGUI-Threads或者MiniGUI-Standalone 三种运行模式运行。虽然,MiniGUI在嵌入式或实时系统中已初展头角,但是目前MiniGUI还存在诸多不足之处。譬如,它还缺乏开发应用程序的集成开发环境,以及一些必要的应用程序,如浏览器等一些Internet工具,同时这些不足方面也在不同程度上阻碍着MiniGUI的推广和应用6。3.2.2 MicroWindows概述Microwindows 是一个著名的开放式源码嵌入式GUI 软件,目的是把图形视窗环境引入到运行Linux 的小型设备和平台上。作为X Window 的替代品,Microwindows可以使用更少的RAM 和文件存储空间(100K-600K)提供与X Window 相似的功能。 Microwindows 允许设计者轻松加入各种显示设备、鼠标、触摸屏和键盘等。 Linux2.2 以上版本的内核代码允许用户将图形显存作为帧缓存(FrameBuffer)进行存取,这样当用户对显示设备进行写入、控制时可以避免对内存映射区进行操作,因此用户可以在不了解底层图形硬件或没有使用过X Window 的情况下进行图形程序的开发。这就是为什么现在在嵌入式系统中广泛使用Microwindows 的原因。Microwindows 的可移植性非常好,基本上用 C 语言实现,只有某些关键代码使用了汇编以提高速度。Microwindows 支持 Intel 16 位、32 位CPU,MIPS R4000 以及 ARM处理器芯片。尽管Microwindows 完全支持Linux,但是它内部的可移植结构是基于一个相对简单的屏幕设备接口,可在许多不同的RTOS 和裸机上运行。这种特性的优点突出体现在用户设计的图形程序不需重写就可以被不同的工程共享,甚至可以运行在不同RTOS 的不同对象上。Microwindows 已经移植到一些掌上电脑。Microwindows 系统以图形方式支持在主机平台上的仿真目标平台。这样,为 Linux 设计的Microwindows 应用程序就可以在台式机上进行编写和开发而不用进行交叉编译就可测试和运行,并且直接在目标平台上运行。 Microwindows 的图形引擎能够运行在任何支持readpixel, writepixel, drawhorzline, drawvertline 和setpalette 的系统之上。在底层函数的支持之下,上层实现了位图,字体,光标以及颜色的支持。系统使用了优化的绘制函数,这样当用户在移动窗口时可以提供更好的响应。内存图形绘制和移动的实现使得屏幕画图显得很平滑,这点特别在显示动画、多边形绘制、任意区域填充、剪切时有用。 Microwindows 支持新的Linux 内核帧缓存(FrameBuffer)结构,目前提供每像素 1、2、4、8、16、24 和32 位的支持,另外还支持彩色显示和灰度显示,其中彩色显示包括真彩色(每像素15、16 和32 位)和调色板(每像素1, 2, 4 和 8 位)两种模式。在彩色显示模式下,所有的颜色用RGB 格式给出,系统再将它转换成与之最相似的可显示颜色,而在单色模式下中则是转换成不同的灰度级。Microwindows支持窗口覆盖和子窗口概念、完全的窗口和客户区剪切、比例和固定字体,还提供了字体和位图文件处理工具。 Microwindows 采用分层设计方法。在最底层,屏幕,鼠标/触摸屏以及键盘驱动程序提供了对物理设备访问的能力。在中间层,实现了一个可移植的图形引擎,支持行绘制,区域填充,剪切以及颜色模型等。在上层,实现多种API 以适应不同的应用环境。但由于缺乏核心的维护人员,Microwindows也存在一些问题,代码质量不是很好,存在一些bug。3.2.3 Qt/Embedded概述Qt/Embedded是基于Qt的嵌入式GUI和应用程序开发的工具包,它可运行多种嵌入式设备上,主要运行在嵌入式Linux系统上,并且需要C编译器的支持,并为嵌入式应用程序提供Qt的标准API。Qt/Embedded 的API是基于面向对象技术的。在应用程序开发上使用与Qt相同的工具包,只需在目标嵌入式平台上重新编译即可。使用所熟悉的桌面开发工具,来编写和保存一个嵌入式应用程序的源代码树,在移植到多种嵌入式平台时,只需要重新编译代码。Qt/Embedded提供自身的轻量级窗口系统,比使用Xlib和X Window更加紧凑; Qt/Embedded 的设计原则是不依赖于X server或者Xlib,而是直接访问帧缓存,同其他解决方案如Qt/X11相比这样做最显著的效果是减少了内存消耗。只需要一个Qt/Embedded动态链接库就足以替代X server、Xlib库和其他嵌入式解决方案的图形工具包。Qt/Embedded还可以在编译时去掉运行时所不需的特性,以减少内存的占用。Qt/Embedded动态链接库可以通过编译时去掉用不到的特性来减少在内存中的覆盖。通过设置src/tools/qconfig.h可以在安装时,定制用户所需的原有Qt功能的一个子集。这样就可以在嵌入式系统中减小Qt/Embedded的尺寸,减少应用程序的内存消耗;而且嵌入式系统中的应用程序集合总是相对固定的也是运用这一功能的重要原因。实现这一定制,只需在qconfig.h中定义宏来取消相应的特性。例如:QlistView窗口部件若要在编译时去掉,只需在qconfig.h中定义QT_NO_LISTVIEW宏即可。若一些特性是依赖于其他特性的,依赖关系是在文件src/tools/qfeatures.h中描述的。Qt/Embedded提供了超过200种可以设置的特性,通过选择链接,可以生成700KB到5000KB(Intel X86)之间大小的动态链接库。大部分用户使用的设置在1500KB到4000KB之间。而且QtE的应用程序也比其他工具开发的应用程序所占用的内存少。在系统中许多CUP时间和内存空间是被ELF(excutive linked file一种为Linux系统所采用的通用文件格式,支持动态连接)链接过程占用了。若使用静态链接技术就可以极大的减少资源的消耗。若运行时所需的应用程序和组件在编译前就可以确定下来,则把所有的应用程序编译链接成唯一的可执行文件,并静态链接于一个静态链接库(libqt.a)的方法比使用动态链接库(libqte.so)和一组链接于这个库的可执行文件更能减少资源消耗。这种方式减少了应用程序开始运行时的代价,提高了内存的利用率,所付出的代价就是降低了程序的灵活性(若添加新的应用程序,需要编译链接所有程序)和健壮性(如果其中一个应用程序又bug,很有可能会影响到其他的应用程序)。但这种方法对CPU和内存使用要求比较高的设备是非常有利的。若要编译Qt为静态链接库,把-static选项添加到设置中。若在编译时Qt所使用的应用程序和组件并不能完全确定,可以把一些Qt组件编译成动态链接库文件或者插件。客户定义外观组件,数据库引擎,字体格式阅读器,图片格式转换,文本编解码及窗口部件都能够被编译为插件,以减少核心动态链接库的尺寸,提供更多的灵活性。QtEmbedded的类库完全采用C+封装,控件资源丰富,可移植性较好,开放的源码使得开发人员可以在 GPL许可协议下自由地进行嵌入式GUI应用程序的移植与开发。QtEmbedded移植与开发总体流程如图3-1所示。嵌入式硬件平台的确定PC上搭建Qt/Embedded开发环境交叉编译Qt/Embedded库并进行目标板的移植PC上进行QTE应用程序的开发交叉编译应用程序在目标平台上进行调试N程序运行正常Y发布应用程序图3-1 Qt/Embedded移植与开发总体流程3.2.4 三种GUI优缺点分析下面以表3-1形式总结以上说叙述的三种图形用户界面GUI的优缺点:表 3- 1 三种GUI优缺点分析图形用户界面优点缺点MiniGUI(1)轻量级的图形用户界面支持(2)系统图形抽象层(3)多字体和多字符集支持(4)两个不同架构的版本Mini-thread和Mini-lite(1)控件功能不够丰富(2)C代码,扩展不利Microwindows(1)开源项目(1)典型的基于C/S体系结构(3)最底层是面向图形输出和键盘、鼠标或触摸屏的驱动程序,中间层提供底层硬件抽象接口(1)无任何硬件加速能力(2)图形引擎中存在许多低效算法,同时未经任何优化(3)代码质量差Qt/Embedded(1) 随意设置程序界面的外观(2) 非常容易的根据硬件特性定制(3) 有针对手机的Qtopia应用套件(4) 商用客户较多(5) 当移植Qt/Embedded程序到不同平台时,只需要重新编译代码,而不需要对代码进行修改(6) 程序本地化很容易(7) 程序与Java集成很容易(1) 代码量过大,最好用于flash大的智能手机(2) 结构过于复杂,很难进行底层太多的扩充(3) 商用需要一定的授权费用综上对比,不难看出,Qt/Embedded是一个专门为小型设备提供图形用户界面的应用框架和窗口系统。Qt/Embedded是高端嵌入式设备PDA及手机的主流开发工具。作为一项成熟的技术,KDE桌面系统对于嵌入式窗口系统的设计有很大参考价值,Qtopia给嵌入式窗口系统提供了很好的框架,提供了丰富的窗口小部件(widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt是KDE等项目使用GUI支持库,所以有许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded版本上。3.3 Qt/Embedded介绍Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本,Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上。Qt/Embedded是Server/Client(客户端/服务器)结构,在底层摒弃了X lib,仅采用frame buffer作为底层图形接口,它是为高端嵌入式图形领域的应用而设计的。同时将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、鼠标、触摸屏,以及用户自定义的设备。3.3.1 应用程序的运行方式Qt/Embedded的窗口系统由多个程序组成,其中一个作为主窗口程序,用来分配子窗口的显示区域,并产生鼠标和键盘事件。主窗口程序提供输入方式和启动子应用程序的用户界面。主窗口程序处理行为类似于子窗口程序,但有一些特殊。在命令行方式中键入-qws选项,任何应用程序都可以运行为主窗口程序。子窗口程序通过共享内存方式于主窗口程序进行通讯。通讯保持在一种很低的水平,子窗口程序可以不通过主窗口程序,而把所有绘制窗口的操作直接写到帧缓存,包括自身的标题栏和其他部件。所有这些都是由Qt/Embedded链接库自动完成,对开发者来说是完全透明的。子窗口程序使用QCOP通道于主程序交换信息。主程序只需简单的向QCOP广播信息,所有正在监听特定信道的应用程序就会收到。应用程序可以通过与received()信号相连的槽作出响应。QProcess类提供了另外一种同步进程间通讯方式,通过直接写外部程序的标准输入、读标准输出和标准错误信息。3.3.2 开发环境及工具Qt/Embedded的窗口系统由多个程序组成,其中一个作为主窗口程序,用来分配子窗口的显示区域,并产生鼠标和键盘事件。主窗口程序提供输入方式和启动子应用程序的用户界面。主窗口程序处理行为类似于子窗口程序,但有一些特殊。在命令行方式中键入-qws选项,任何应用程序都可以运行为主窗口程序。子窗口程序通过共享内存方式于主窗口程序进行通讯。通讯保持在一种很低的水平,子窗口程序可以不通过主窗口程序,而把所有绘制窗口的操作直接写到帧缓存,包括自身的标题栏和其他部件。所有这些都是由Qt/Embedded链接库自动完成,对开发者来说是完全透明的。子窗口程序使用QCOP通道于主程序交换信息。主程序只需简单的向QCOP广播信息,所有正在监听特定信道的应用程序就会收到。应用程序可以通过与received()信号相连的槽作出响应。QProcess类提供了另外一种同步进程间通讯方式,通过直接写外部程序的标准输入、读标准输出和标准错误信息。3.3.3 工作模式分析Qt/Embedded的窗口系统具有自己的一种客户端/服务器体系结构,其窗口系统体系结构如下图3-1所示,在一个典型的Qt/Embedded窗口系统中一般包括一个或多个客户端进程,一个服务器进程,然而Qt/Embedded的客户/服务器模型与一般泛指的客户/服务器模型概念又不完全一样,在Qt/Embedded中,客户端和服务器都是Qt/Embedded应用程序,并不是位于不同机器上的应用程序,服务器和客户端不是独立分别运行在不同的机器上的,而和客户端应用程序在同一机器上运行。在Qt/Embedded中,QWSServer类主要完成服务器的构建,QWSDisplay则主要完成客户端的构建。在系统中有Qt/Embedded 应用程序运行时,客户端进程可以有多个,但服务器进程却只能有一个。在Qt/Embedded应用程序中只有一个用于服务器,一般是第1个启动的Qt/Embedded应用程序,这个应用程序除了具有一般应用于Qt/Embedded应用程序的客户端外,还具有服务器的功能。提供GUI服务客户进程Qt/Embedded库服务器进程显示存储设备/framebuffer鼠标设备键盘设备图3- 1 Qt/Embedded窗口系统体系结构Qt/Embedded的窗口系统具有自己的一种客户端/服务器体系结构,其窗口系统体系结构如下图3-4所示,在一个典型的Qt/Embedded窗口系统中一般包括一个或多个客户端进程,一个服务器进程,然而Qt/Embedded的客户/服务器模型与一般泛指的客户/服务器模型概念又不完全一样,在Qt/Embedded中,客户端和服务器都是Qt/Embedded应用程序,并不是位于不同机器上的应用程序,服务器和客户端不是独立分别运行在不同的机器上的,而和客户端应用程序在同一机器上运行。在Qt/Embedded中,QWSServer类主要完成服务器的构建,QWSDisplay则主要完成客户端的构建。在系统中有Qt/Embedded 应用程序运行时,客户端进程可以有多个,但服务器进程却只能有一个。在Qt/Embedded应用程序中只有一个用于服务器,一般是第1个启动的Qt/Embedded应用程序,这个应用程序除了具有一般应用于Qt/Embedded应用程序的客户端外,还具有服务器的功能78。4 GUI软硬件开发环境介绍本章主要介绍基于S3C2440的图形界面设计所使用到的软件和硬件平台,包括虚拟机软件Vmware,Qt Creator设计软件以及mini2440开发板、处理器S3C2440等。硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误,超时错误会带来损害甚至导致系统失败,或者导致系统不能实现它的预期目标。软实时系统的时限是柔性灵活的,它可以容忍偶然的超时错误,失败造成的后果并不严重,仅仅是轻微地降低了系统的吞吐量。4.1 操作系统的选择与安装为了在用于开发的PC主机上得到Linux的开发环境,我们选择在Windows操作系统巾安装VMware虚拟机软件,再在其中安装我们需要的Linux操作系统。使用虚拟机的一大好处是,当在Linux因为不熟悉而遇到问题的时候,可以很容易的回到Windows中寻求解决方案,避免了在双系统中来回重启切换的麻烦。虚拟机的版本尽量选择当前的最新版,因为Linux系统的发展迅速,如果安装在旧版的虚拟机当中,不能保证有很好的兼容性。虚拟机安装完成之后,就可以开始安装Linux操作系统了,比较常见的版本有Red Hat Lintx、Fedora Core、Ubtmtu、SUSE Linux等等,这里我们采用的是Fedora Core 9.0。4.2 虚拟机软件概述什么是虚拟机?顾名思义,虚拟机并不是一台实际的计算机,而是在真实的计算机上通过软件模拟来实现的计算机。虚拟机中有自己的CPU、主板、内存、BIOS、显卡、硬盘、光驱、软驱、网卡、声卡、串口、并口和USB口等设备。先进的虚拟技术可以模拟出来的虚拟机与真正的计算机没有什么两样,可以在虚拟机里实现各种应用。如:分区、格式化、安装系统和应用软件等,这些所有的操作对真实的计算机没有任何影响。同时虚拟机还可以让用户在单机上构造出一个虚拟网络环境,使学生能够加强对网络知识的学习。与平时接触的多重启动系统相比,虚拟机采用了完全不同的概念。多重启动系统在使用的时候一次只能运行一个操作系统,在操作系统切换时需要重新启动机器,而虚拟机是可以在一台计算机上同时运行多个操作系统。如果机器上安装的是WINDOWS,又有兴趣感觉一下Linux,想学习Linux,如果只有一台计算机,并想学习网络方面的知识。那么,不需要任何资金的投入,只要下载安装虚拟机软件,一台计算机就可实现网络环境了。运行虚拟机软件的操作系统叫Host OS(Host Operation System主操作系统),在虚拟机里运行的操作系统叫Guest OS(Guest OperationSystem客户操作系统)。目前虚拟机软件主要有两

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论