




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号 密级 UDC 学 位 论 文基于RTEMS操作系统的图形工具开发包的设计与实现 关键技术与模块类的设计与实现作者姓名:孙永兵指导教师:邓庆绪 副教授东北大学计算机软件与理论研究所申请学位级别:硕士学科类别:工学学科专业名称:计算机软件与理论论文提交日期:论文答辩日期:学位授予日期:答辩委员会主席:评阅人:东 北 大 学2006年2月A Dissertation in Computer Software and TheoryThe Design and Implementation of GUI Toolkit based on RTEMS Design and development of key techniques and module classes by Sun YongbingSupervisor: Associate Professor Deng QingxuNortheastern UniversityFebruary 2006独创性声明本人声明,所呈交的学位论文是在导师的指导下完成的。论文中取得的研究成果除加以标注和致谢的地方外,不包含其他人己经发表或撰写过的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢意。 学位论文作者签名:日 期:学位论文版权使用授权书本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权东北大学可以将学位论文的全部或部分内容编入有关数据库进行检索、交流。(如作者和导师同意网上交流,请在下方签名;否则视为不同意。)学位论文作者签名: 导师签名:签字日期: 签字日期:- III -东北大学硕士学位论文 摘 要基于RTEMS操作系统的图形工具开发包的设计与实现关键技术与模块类的设计与实现摘 要本文首先介绍了嵌入式开发平台的整体结构,以及本GUI Toolkit在其中的位置和作用,接下来又对本GUI Toolkit的开发环境作了简单的描述。本文在深入讨论当今嵌入式领域中应用最为广泛的几种GUI系统的系统结构的基础上,设计了运行在RTEMS实时性嵌入式操作系统之上的图形用户界面开发包(GUI Toolkit)的整体分层结构:底层接口抽象层、中间引擎层和上层应用接口层。本文在尽可能的考虑嵌入式系统和工控领域的要求下,进行了该GUI Toolkit模块类的功能定义和骨干类的接口实现。主要包括包括底层绘图类(Gfx类)、消息队列类(Message Queue类)、绘图类(Painter类)、绘图对象类(Painterdevice类)、鼠标、键盘事件处理类(Mouse 、Keyboard Handle 类)、字体管理类(Font Management 类)等。本文还详细阐述了本GUI Toolkit中实现的关键技术:事件消息机制、窗口技术、颜色板查找算法、动态曲线绘制算法和编译规则等。其中,本GUI Toolkit设计实现了事件消息机制,它基于RTEMS的消息管理器,以消息的完全封装为特色,并对传统C/S模式下的通信机制做了改动。本文重点分析了实现该机制特色的关键设计部分,并且给出了具体实现的关键数据结构和事件消息处理逻辑流程;它还实现了颜色板的最接近查找算法,并对其通过增设软件Cache的方法做了改进,提高查找速度;它采用了内插法的动态曲线绘制算法,满足工控曲线的绘制显示要求;本文还为GUI Toolkit应用开发制定了统一的编译规则,将RTEMS操作系统、GUI Toolkit模块库和GUI应用程序编译到指定目标硬件系统上的二进制映象。在文章的最后本文给出了本GUI Toolkit的最小系统定义和实现,并且进行了性能评价。关键词:GUI Toolkit 嵌入式GUI 设计 RTEMS 事件消息机制 颜色板查找算法 编译规则东北大学硕士学位论文 AbstractThe Design and Implementation of GUI Toolkit based on RTEMSDesign and development of key techniques and module classesAbstractAn overall structure of embedded system design platform is first presented in this paper. The location and functions of a GUI Toolkit in the system and its development environment are briefly introduced.On the basis of a thorough review of widely used GUI systems and their infrastructure, we presented an overall layered structure of the GUI Toolkit running on RTEMS real-time operating system, which includes the low-end abstract interface layer, the GUI engine layer and the high-end user application interface layer.The function definition, module definition and the main classes of the GUI toolkit are implemented considering both embedded system requirements and industrial monitor and control system requirements. The class set is consist of low-level graphical classes, Message Queue classes, painter classes, painter device classes, event handler classes, font management classes, etc.The key techniques, which include event message mechanism, windowing technique, Platte searching algorithm, dynamic curve drawing algorithm and compiling rules. The event message mechanism is implemented on the basis of RTEMS message manager. The mechanism, which is characterized by complete encapsulation of messages, is a modification of traditional C/S communication mechanism. This paper mainly discussed the implementation of such a mechanism, and the key data structures and the logical processing flow are also presented. A Platte searching algorithm and a software-implemented cache is integrated to boost searching speed. A algorithm based dynamic curve drawing is adopted to satisfy the requirements of industrial control systems. This paper also defines a set of uniform compiling rules, which compiles RTEMS operating system, the GUI toolkit Module Lib and the user GUI applications into a binary image for the target platform.A minimum system definition and its implementation are presented in the last part of this paper. The performance of the GUI system is also evaluated.Keywords: GUI toolkit Embedded GUI design RTEMS event message mechanism Platte searching algorithm compiling rules东北大学硕士学位论文 第一章 引言目 录独创性声明I摘 要IIAbstractIII目 录1第一章 引言11.1 嵌入式系统背景11.2 课题来源及其描述21.3 后继章节安排3第二章 GUI系统基本概念与相关工作52.1 GUI系统概念及其发展历史52.1.1 GUI系统概念52.1.2 GUI系统的发展历史62.2 嵌入式GUI系统简介62.3 现存的主要的嵌入式GUI系统简介72.3.1 QT/Embedded72.3.2 Microwindows92.3.3 MiniGUI102.3.4 X Window112.4 几种重要的事件消息通信机制简介122.4.1基于管道的QCOP协议122.4.2信号-槽(Signal-Slot)机制122.4.3 SOCKET通信机制132.4.4 Message Queue通信机制132.4.5共享内存15第三章 GUI Toolkit开发环境173.1 智能仪器嵌入式开发平台结构173.1.1 硬件系统183.1.2 软件系统213.2 GUI Toolkit开发系统搭建243.2.1 宿主机环境243.2.2 目标机环境25第四章 关键技术的设计与实现274.1 事件消息机制设计实现274.1.1 GUI与OS之间通信274.1.2 GUI 内部对象之间通信的设计实现274.1.2.1 内部对象之间通信机制整体设计274.1.2.2 消息转换中心284.1.2.3 消息管理维护中心314.1.3 GUI Toolkit Client/Sever模式下通信的设计实现334.2 窗口技术344.2.1创建弹出式窗口344.2.2多窗口技术实现354.2.2.1窗口Z序364.2.2.2窗口剪切算法364.2.2.3剪切域的计算算法364.2.2.4新的多窗口技术探讨374.3 RTEMS操作系统支持384.3.1内核对通信机制的支持384.3.2驱动程序的支持394.4 编译规则制定(嵌入式的特色)394.5调色板查找算法404.5.1调色板工作原理404.5.2基于软件cache的最接近查找算法414.5.2.1最接近查找算法414.5.2.2最接近查找算法之上的软件Cache的设计424.6 曲线绘制算法434.6.1 内插法原理434.6.2 内插法算法实现44第五章 GUI Toolkit整体设计与原型实现475.1 GUI Toolkit系统整体结构设计475.1.1 GUI Toolkit 系统结构设计475.1.2 GUI Toolkit工作原理图495.2 GUI Toolkit系统类设计和功能定义505.2.1 GUI Toolkit 类设计505.2.2 GUI Toolkit 模块类功能定义515.3 GUI Toolkit 消息机制实现规则575.4 用户接口以及交互技术575.4.1 菜单技术575.4.2 游标定位技术585.4.3 图示(Icon)技术595.4.4 其它交互技术605.5 最小系统实现、调试与评价605.5.1最小系统实现605.5.2 系统调试615.5.2.1调试环境搭建615.5.2.2 本GUI实现的最小系统的测试调试615.5.3 最小系统性能评价625.5.3.1 性能评测要求625.5.3.2性能测试结果63第六章 结论与未来工作65参考文献67致 谢69攻研期间论文发表情况71攻研期间科研情况73- 73 -第一章 引言1.1 嵌入式系统背景美国著名未来学家尼葛洛庞帝99年1月访华时预言,45年后嵌入式智能(计算机)工具将是继PC和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士98年11月在武汉全国第11次微机学术交流会上发表的计算机的发展与技术一文中,对未来10年以嵌入式芯片为基础的计算器工业进行了科学的阐述和展望1。 随着后PC时代的到来,使得人们开始越来越多地接触到一个新的概念嵌入式产品。像手机、PDA(如商务通等)均属于手持的嵌入式产品,VCD机、机顶盒等也属于嵌入式产品,而像车载GPS系统、数控机床、网络冰箱等同样都采用嵌入式系统。形式多样的数字化设备正努力把Internet连接到人们生活各个角落,也就是说中国数字化设备的潜在消费者数量将以亿为单位。嵌入式软件是数字化产品的核心。如果说PC机的发展带动了整个桌面软件的发展,那么数字化产品的广泛普及必将为嵌入式软件产业的蓬勃发展提供无穷的推动力。 嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。重要的特点有4个:专用性,功能强大,性价比高,开发周期短。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场2。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的计算能力已超过了IBM”,由此可以想见嵌入式计算器工业的规模和广度。纵观国际相关产业在图形化用户接口设计方面的发展现状,许多国际知名公司早已意识到GUI在产品方面产生的强大的增值功能,以及带动的巨大的市场价值,因此在公司内部设立了相关部门专门从事GUI的研究与设计。同行业间也成立了若干机构,以互相交流GUI设计理论与经验为目的。随着中国IT产业,移动通信产业,家电产业的迅猛发展,在产品的人机交互接口设计发展上日益滞后,这对于提高产业综合素质,提升与国际同行业者的竞争能力等方面无疑起到了很大的制约作用。1.2 课题来源及其描述随着嵌入式技术的不断成熟与发展,面向大中型机电设备的在线状态监测与故障诊断类仪器的开发已经形成了一个很大的产业,该类智能仪器的出现,已经在大型机电设备维修和故障诊断方面带来了一场革命,这就是用科学的“状态维修”,逐渐代替非科学的周期性维修。先进国家的大型设备都逐步采用在线维修的方法,采用该方法一是可以提前发现故障,避免重大事故和经济损失,二是维修变得经济可靠,在大型机电设备上应用智能化状态监测和故障诊断仪器之后,使企业可以有依据的只对有问题的设备进行维修,而其他设备可以照常运行,产生效益。我国当前普遍采用的维修方法是周期性维修,即到一定周期,不管设备有没有问题,全部停机大拆。这种维修方法没有可靠性依据,长时间的大修期给企业造成的损失巨大,仅以电厂的一个机组为例,一次大修需要3个月,给电厂造成的损失可达千万。而在两个维修期之间的这段时间,设备出现故障却不能被提前发现,仍然不可避免的出现一些大型事故。面向大型设备状态监测与故障诊断智能仪器的开发,在发达国家已经非常成熟,美国的CSI、本特立、恩泰克、西屋等公司的产品在世界各地的各大工矿企业都有成功的应用,产生了巨大的社会效益。国内许多企业逐渐认识到设备在线故障监测的重要性,美国CSI、本特立、恩泰克、西屋等公司的产品在中国都有应用,先进的维修理念已开始在我国工矿企业得到逐步的渗透。但是到目前为止, 基于嵌入式技术的该类设备在我国仍属空白,没有成熟的产品应用,其根本原因就是因为我国在开发这类产品时,没有统一的开发标准和一个共用的开发平台,使各个企业的开发技术力量分散,而且没有可靠的功能和性能测试标准,极大的影响了该类产品开发的效率和可靠性,同国外产品相比,功能相差太大,没有竞争力,市场基本上被国外公司所占领,开发一个该类嵌入式开发系统已经是势在必行。同国外相比,国内还没有一套针对该类智能仪器开发的嵌入式软件开发平台和环境,因此迫切需要一套这样的系统,来整体上提高我国开发该类智能仪器的水平和开发速度。为了提高该类智能化仪器产品的嵌入式应用系统的开发效率,满足不同仪器开发的需要,本课题主要研究嵌入式软件开发平台的有关内容。本课题隶属于国家863项目-面向大型机电设备状态检测与故障诊断的智能仪器嵌入式软件开发平台的开发。该863项目已经完成了基于Motorola Coldfire 5307的底层硬件系统和实时操作系统RTEMS内核的移值。本课题就是实现该嵌入式开发平台RTEMS实时性操作系统上图形用户开发工具包(GUI Toolkit)的开发,为该开发平台实现上层图形用户接口开发的支持。本图形用户开发工具包 (GUI Toolkit)的开发充分考虑到了嵌入式系统和工控领域的特点,主要包括GUI Toolkit系统整体设计、功能类设计实现以及事件消息机制、窗口技术、用户接口和交互技术、RTEMS接口驱动等关键技术的实现。本GUI Toolkit运行于RTEMS操作系统之上,提供丰富的功能模块,完善的图形功能,清晰的用户开发接口(API),力求应用本GUI Toolkit开发出来的图形用户界面功能丰富,简洁美观。1.3 后继章节安排本章主要对嵌入式系统尤其是嵌入式GUI系统进行了简单的介绍,接着讲述了课题来源,并对本课题进行了概括性的描述。第二章对GUI系统、嵌入式GUI系统进行了简单的叙述,讨论了现在嵌入式系统中应用广泛的几种嵌入式GUI的系统机构及其优缺点,最后简单介绍了一下常见的几种GUI系统内部的通信方式。第三章重点介绍了本GUI Toolkit的开发环境。首先说明的是本GUI Toolkit所属的863项目嵌入式系统开发平台的整体结构,以及本GUI Toolkit在其中所处的位置和作用。接下来是对本GUI Toolkit 宿主机和目标机开发环境的说明。第四章介绍了本GUI Toolkit中设计实现的关键技术。其中包括具有消息完全封装特色的消息通信机制、多窗口技术、颜色板查找算法、动态曲线绘制算法和编译规则等。第五章给出了本GUI Toolkit的整体结构设计,重点描述了模块类的功能定义和类接口的实现。并在最后给出了最小系统的实现和性能评价。第六章是结论与未来工作。东北大学硕士学位论文 第二章 GUI系统基本概念与相关工作第二章 GUI系统基本概念与相关工作2.1 GUI系统概念及其发展历史2.1.1 GUI系统概念GUIGraphical User Interface即人机交互图形化用户接口设计,准确点说就是屏幕产品的视觉体验和互动操作部分。它是一种结合计算机科学、美学、心理学、行为学以及各商业领域需求分析的人机系统工程,强调人机环境三者作为一个系统进行总体设计,其设计的主要准则如下:(1)减少用户的认知负担;(2)保持界面的一致性;(3)满足不同目标用户的创意需求;(4)用户接口友好性;(5)图示识别平衡性;(6)图标功能的一致性;(7)建立接口与用户的互动交流;其主要的应用领域有:(1)手机通讯移动产品;(2)计算机操作平台;(3)软件产品;(4)PDA产品;(5)数码产品;(6)车载系统产品;(7)智能家电产品;(8)游戏产品;(9)产品的在线推广等;纵观国际相关产业在图形化用户接口设计方面的发展现状,许多国际知名公司早已意识到GUI在产品方面产生的强大的增值功能,以及带动的巨大的市场价值,因此在公司内部设立了相关部门专门从事GUI的研究与设计。同行业间也成立了若干机构,以互相交流GUI设计理论与经验为目的。随着中国IT产业,移动通信产业,家电产业的迅猛发展,在产品的人机交互接口设计发展上日益滞后,这对于提高产业综合素质,提升与国际同行业者的竞争能力等方面无疑起到了很大的制约作用。2.1.2 GUI系统的发展历史图形用户接口(GUI)这一概念是70年代由施乐公司帕洛阿而托研究中心提出的,现在所说的普遍意义上的GUI便是由此产生的。1973施乐公司帕洛阿而托研究中心(Xerox PARC)施乐研究机构工作小组最先构建了WIMP(窗口,图标,菜单和点选器/下拉菜单)的范例,并率先在施乐一台实验性的机器上使用。接下来就要数在1980的出现的ThreeRivers Perq graphical workstation和在1981年出现的Xerox Star系统。1983年的Visi On系统最开始是一家公司为电子制表软件而设计的,这软件就是具有传奇色彩的VisiCalc,它在1983年首次介绍了在PC环境下的“窗口”和鼠标的概念,其先于“微软窗口”的出现,但VisiOn并没有成功研制。1985年Amiga计算机公司研究出一款运用GUI的计算机,叫Intuition。Amiga GUI在当时独一无二,因为在那时候GUI还不能提供足够的控制功能,Amiga就已经能使用弹出式的命令行接口(CLI)了。同年,微软公司正式发布了第一代窗口式多任务系统-Windows1.0,由于当时硬件水平所限,Windows1.0并没有获得预期的社会效果,也没有发挥出它的优势。但是,该操作系统的推出,却标志着PC机进入了图形用户接口的时代。1990年Windows3.0窗口系统的推出,以及3.2等版本的完善,标志着图形用户接口系统应用的真正开始,但是,这些版本都是由DOS引导的,还不是一个完全独立的系统。1995年Windows95的问世,以其友好一致的窗口操作接口和进一步完善的图形用户接口,征服了绝大多数的PC机用户,随后,微软继续推出的Windows98,Windows2000,Windows XP等版本,使得Windows系统更加完善,并且由此确定了Windows窗口系统在桌面操作系统上的统治地位。2.2 嵌入式GUI系统简介嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互界面。它所管理的资源有屏幕、窗口、象素映像、色彩表、字体、光标、图形资源及输入设备。从最终的用户的角度来看,嵌入式窗口系统通过窗口、菜单、对话盒、滚动条、图标及按钮等接口对象提供了一种与系统进行交互的灵活机制。从应用程序开发者的角度来看,它提供了一系列用于构造图形用户接口的编程机制,如各种库函数、接口对象类等。通过这些编程机制,可在设备独立的条件下开发接口友好的应用程序3。在常见的 PDA 等小型掌上型设备上,由于硬件条件等的限制,用户接口都非常简单,几乎看不到在 PC 机上看到的华丽美观的 GUI 支持。但最近随着掌上型设备的硬件条件的提高,出现的 Palm 等掌上型计算机或者在 Windows CE 等面向嵌入式系统的操作系统上,已经出现了完整的图形用户接口支持。近来的市场需求显示,越来越多的嵌入式系统,包括 PDA、机顶盒、DVD/VCD 播放机、WAP 手机等等系统均要求提供全功能的 Web 浏览器。这包括 HTML 4.0 的支持、JavaScript 的支持,甚至包括 Java 虚拟机的支持。而这一切均要求有一个高性能、高可靠的 GUI 的支持。 嵌入式工业实时控制系统对实时性的要求非常高,因此对 GUI 的要求也更高。这些系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和 GUI 之上,比如 Windows 或 X Window,而对轻型 GUI 的需求更加突出。 另外,嵌入式系统往往是一种定制设备,它们对 GUI 的需求也各不相同。举个简单的例子,有的系统只要求一些图形功能,而有些系统要求完备的 GUI 支持。因此,GUI 也必须是可定制的。总之,嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。总体来讲,嵌入式GUI具备以下特点:(1)体积小;(2)运行时耗用系统资源小;(3)上层接口与硬件无关,高度可移植;(4)高可靠性;(5)可配置。42.3 现存的主要的嵌入式GUI系统简介1994年QNXr发布了第一个嵌入式微核的窗口系统,自此之后,随着嵌入式系统应用领域的不断扩大和嵌入式技术的发展成熟,嵌入式GUI系统的发展也空前繁荣。目前应用最广泛的主要有QT/Embedded、Microwindows、MiniGUI和WinCE窗口等。2.3.1 QT/EmbeddedQt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。因为Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序因此可以非常方便地移植到Qt/Embedded上。Qt/Embedded同样是Server/Client结构。其体系结构如图2.1所示:图2.1 Qt/Embedded系统的体系结构图5Figure 2.1 System architecture of Qt/EmbeddedQt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用framebuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。Qt/Embedded类库完全采用C+封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt-X11,使用X下的开发工具可以直接开发基于Qt/Embedded的应用程序QUI接口。Qt/Embedded的底层图形引擎只能采用 framebuffer。这就注定了它是针对高端嵌入式图形领域的应用而设计的。由于该库的代码追求面面俱到,以增加它对多种硬设备的支持,造成了其底层代码比较凌乱,各种补丁较多的问题。Qt/Embedded的结构也过于复杂臃肿,很难进行底层的扩充、定制和移植,尤其是用来实现 Signal/slot机制的MOC机制。综上所述,其主要的优点有:(1)Qt/Embedded 工作在Linux的framebuffer driver(帧驱动)之上,通过 Qt API 与 Linux I/O 设备直接交互。那些熟悉并已适应了面向对象编程的人员将发现它是一个理想环境;(2)它具有相当完善的图形功能和十分强大的图形引擎功能,用它开发出来的图形用户接口,金属质感强,精细美观,尤其在2D、3D图形接口开发上更是独领风骚,这就决定了它适合应用在对高级的图形功能要求多的手持电子类设备上。(3)面向对象的体系结构使代码结构化、可重用性好。其主要的缺点主要有:(1)没有分层,层次感不强;(2)代码量太大,在版本2.3.x,约需要几M左右,而现在的3.x.x版本,需要更多的空间,这点也使得QT/E在对资源精打细算的嵌入式系统开发中大受限制。不过,随着近几年来闪存技术的飞速发展,嵌入式系统中闪存容量越来越大,这必将带来QT/E的飞速发展。(3)QT/E使用需要商业许可证。2.3.2 MicrowindowsMicrowindows是Century software开发的开放源代码的嵌入式GUI,是一个典型的基于Server/Clinent体系结构的GUI系统,基本分为三层,如图2.2所示:图2.2 Microwindows 的体系结构图Figure 2.2 System architecture of Microwindows6最底层是设备与平台相关层,主要是面向图形显示和键盘、鼠标或触摸屏的驱动程序;系统针对显示屏、鼠标、触屏以及键盘等各定义了一个数据结构。该数据结构和顶层结构一样,供图形引擎使用,包含了针对指定设置和硬件驱动代码。Microwindows中还包含了诸多设备和操作系统的各种版本的驱动程序。屏幕驱动可支持系统1的、2、4、8、16、24、32位显示和调色板、真彩色、灰度等颜色模式。屏幕驱动中还包括一些入口指针,这些指针分别用读写像素、绘制水平或垂直线,在屏幕和内存之间相互映像内存空间。在实现这些基本指标的过程中需运行包括TrueType或Adobe Type1的字体支持、RGB颜色支持、JPEG以及BMP图形处理等Microwindows上层函数。如果屏幕驱动中还包括有硬件加速的话,仅需更改驱动程序即可;也可在系统中添加触屏、键盘、按键等的输入。中间层是图形引擎层,又称为设备与平台无关层,提供底层硬件的抽象接口,并进行窗口管理;图形引擎层为应用层提供了一系列相应的入口指针调用绘图函数,还为所有的颜色指定了RGB的颜色模型;同样,该层也与显示设备无关,可以由RGB值为判断硬件中的像素值。除此之外,Microwindows还在中间层实现裁减功能,它采用多矩形算法,可在任意复杂的区域中实现绘图功能。中间层还要控制所有字体的显示,支持FreeType以及使用T1Lib的Adobe Type 1字体、支持比例字体,同时还支持ASCII、Unicode-16、Unicode-32、UTF-8编码规则。最高层分别提供兼容于X Window和ECMA APIW(Win32子集)的API。其中使用Nano-X接口的API与X接口兼容,但是该接口没有提供窗口管理,如窗口移动和窗口剪切等高级功能,系统中需要首先启动nano-X的Server程序nanoxserver和窗口管理程序nanowm。用户程序连接nano-X的Server获得自身的窗口绘制操作。使用ECMA APIW编写的应用程序无需nanox-server和nanowm,可直接运行。Microwindows提供了相对完善的图形功能和一些高级的特性,如Alpha混合、三维支持和TrueType字体支持等。该系统为了提高运行速度,也改进了基于Socket套接字的X实现模式,采用了基于消息机制的 Server/Client传输机制。Microwindows也有一些通用的窗口控件,但其图形引擎存在许多问题,可以归纳如下:(1)图形设备抽象不合理,无任何硬件加速能力;(2)图形引擎中存在许多低效算法,最为突出的是图形剪切算法和区域维护算法。由于该项目缺乏一个强有力的核心代码维护人员,2003年Microwindows推出版本0.90后,该项目的发展开始陷于停滞状态。它的代码量比较小,一般在100K200K左右,但是由于图形引擎的效率不高,图形引擎的功能不强,提供的图形功能简单,它一般运用在对图形用户接口要求比较低的中低端的控制类设备上。2.3.3 MiniGUIMiniGUI是由国内自由软件开发人员设计开发的,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户接口支持系统。MiniGUI的体系架构如图2.3所示:MiniGUI分为最底层的GAL层和IAL层,向上为基于标准POSIX接口中 pthread库的Mini-thread架构和基于Server/Client的Mini-Lite架构。其中前者受限于thread模式对于整个系统的可靠性影响进程中某个thread的意外错误可能导致整个进程的崩溃,该架构应用于系统功能较为单一的场合。Mini-Lite应用于多进程的应用场合,采用多进程运行方式设计的Server/Client架构能够较好地解决各个进程之间的窗口管理、Z序剪切等问题。MiniGUI还有一种从 Mini-Lite衍生出的standalone运行模式。与Lite架构不同的是,standalone模式一次只能以窗口最大化的方式显示一个窗口。这在显示屏尺寸较小的应用场合具有一定的应用意义。MiniGUI的GAL层技术SVGA lib、LibGGI、基于framebuffer的native图形引擎以及哑图形引擎等,对于Trolltech公司的QVFB在X Window下也有较好的支持。IAL图2.3 MiniGUI的系统结构图Figure 2.3 System architecture of MiniGUI7层则支持Linux标准控制台下的GPM鼠标服务、触摸屏、标准键盘等。MiniGUI下丰富的控件资源也是MiniGUI的特点之一。当前MiniGUI的最新版本是1.3.3。该版本的控件中已经添加了窗口皮肤、工具条等桌面GUI中的高级控件支持。其优点主要有:(1)灵活性好,可定制能力强。 (2)结构简单、可控性好。(3)系统资源消耗少。 (4)速度快。但 MiniGUI 并不是没有缺点,现在为止,它的缺点有: (1) 对图形设备的抽象层次太高。 (2) 图形功能尚不完善。(3) MiniGUI-Lite 对不同进程的不同窗口剪切未作处理。2.3.4 X Window开放源码的X Window系统,可以运行在支持帧缓冲(framebuffer)的设备上。基于帧缓冲的X服务器Xfbdev 的资源占用相对较小,大小在700K左右,这使它很容易在资源有限的嵌入式设备上运行。X Window的主要优点是:功能完善;并且已经在很多系统上使用,事实证明它稳定可靠;存在大量的可直接使用的应用程序;丰富的文档说明;支持大量的开发工具箱,如GTK+(GIMP Toolkit)、Qt等。但X Window的运行却需要更快的处理器和更多的存储空间,也是X Window不被嵌入式系统采纳的重要因素。由于使用了带有TCP/IP结构的自由式开放源码操作系统,使嵌入式设备进入了一个创新应用时代,不过这些新的应用需要考虑其资源环境,这是因为多数的嵌入式设备缺少硬件驱动和大的RAM。X Window是在20世界80年代早期由MIT、DEC等提出来的,是一个基于Client/Server结构的窗口系统;允许在任一台UNIX主机(Clients客户端)上运行程序,而在基于X的终端(Server服务器)上显示出来。在这个过程中,相当一部分代码用于确认主机和服务器上运行的Client/Server程序是否正常。目前,大多数X的客户端和服务器是在同一台机器上运行,X Window服务器经编译后一般用于自动检测硬件。服务器中还包含有众多的画图函数,它们的位置根据执行速度被位置在裁减层之上或之下。这些便利X Window过于臃肿和复杂,运行时需要至少8MB的内存空间。2.4 几种重要的事件消息通信机制简介2.4.1基于管道的QCOP协议QCOP 是 Qt 内部的一种通信协议,这种协议用于不同的客户之间在同一地址空间内部或者不同的进程之间的通信。目前,这种机制还只在 Qt 的嵌入式版本中提供。 为实现这种通信机制,Qt 中包括了由 QObject 类继承而来的 QCopChannel 类,该类提供了诸如 send()、isRegistered() 等静态函数,它们可以在脱离对象的情况下使用。为了在 channel 中接收通信数据,用户需要构造一个 QCopChannel 的子类并提供 receive() 函数的重载函数,或者利用 connect() 函数与接收到的信号相联系。 值得一提的是,在 Qt 系统中,只提供了 QCOP 协议机制和用于接收消息的类,而如何发送消息则没有提供相应的类供用户使用。 在基于 Qt 的桌面系统 Qtopia(QPE)中,则提供了相应的发送类:QCopEnvelope。用户可以通过该类利用 channel 向其它进程发送消息。该类将通过 QCopChannel 发送 QCop 消息的过程进行了封装,用户只需要调用该类中的相关函数就可以方便地实现进程之间的通信过程。一方面,QCop 消息的发送要利用 QCopEnvelope 类,另一方面,接收消息则是通过与一个 QCopChannel 相关联。 2.4.2信号-槽(Signal-Slot)机制在Qt中,有一种用于对象之间的通信机制:信号-槽机制,这种机制是Qt的核心机制,也是它区别于其它GUI工具的最主要的特征。在大多数GUI工具中,通常为可能触发的每种行为定义一个回调函数,这个回调函数是一个指向函数的指针。在Qt中,信号-槽机制取代了这种繁杂的函数指针,能够实现同样的功能。信号-槽机制可以携带任意类型、任意数量的参数,而且完全是安全的,不会引起系统的崩溃。 所有由QObject类继承而来的类,或者是它的一个子类,都可以包括信号-槽机制。信号通常是当对象改变他们的状态时发出的,这就是一个对象在需要与其它对象通信时所需要做的一切,它并不知道是否有其它对象在另一端接收该信号。从这个意义上来说,这种机制实现了真正的信息封装,确保了对象可以被当作一个独立的软件构件来使用。 而槽可以被用于接收信号,它们通常是类中的成员函数。一个槽并不知晓是否有一个信号与自己相联系,同样,包含有槽函数的对象也对通信机制一无所知,它们也可以作为一个独立的软件构件。 用户可以按照需要将许多信号与一个单独的槽函数相联系,一个信号也可以按需要被联系到很多不同的槽函数。甚至还可以将一个信号直接与另一个信号相联系,这样当第一个信号被发出时立刻发出第二个信号8。2.4.3 SOCKET通信机制QT、Minigui都有C/S模式,它们之间进行通信的时候选用的是SOCKET通信机制。从本质上看,Socket就是进程间通信的端点,每个套接字的名字是唯一的,所以其他进程能够找到,连接上套接口并且访问它。一对连接的套接字构成了进程间交流数据的一条通信通道,这些进程可以是完全无关的,也能改变数据。一般而言,套接口的使用需要执行以下四个步骤:(1)分配空间和初始化;(2)套接字连接;(3)传送数据,进行通信;(4)关闭退出;Socket 通信机制的原理图如图2.4所示:在服务器和客户端启动,分别进行自己的套接字初始化之后,它们各自监听自己的消息端口;一旦接收到消息,进行简单的处理后,送到消息格式中心进行消息格式的转换,然后送到消息处理中心进行处理。服务器端的消息主要是客户连接请求,已连接请求,键盘、鼠标、定时器、网络等硬件事件;对于客户端,消息主要是来自服务器的控制消息,客户端之间通信消息和客户端之间数据传输的消息。92.4.4 Message Queue通信机制Message Queue通信机制需要进行消息定义、消息传递和消息处理的实现,其最重要的就是消息处理循环,这部分会在4.1节中进行详细阐述。基于Message Queue的通信机制的主要原理图如图2.5所示:建立服务器端连接套接字服务器端连接初始化客户端连接初始化服务器侦听客户请求服务器接受客户连接客户端侦听服务器消息侦听客户请求,并将客户加到活动客户中去。客户端从服务器读出消息服务器向客户发消息服务器侦听客户连接请求、已连接请求、键盘鼠标事件客户端接受服务器应答客户端向服务器发消息客户端分发和处理消息服务器侦听客户连接请求、已连接请求、键盘鼠标事件。建立客户器端连接套接字,并向服务器发出请求。服务器接收并处理用户请求图2.4 C/S模式下Socket通信机制原理图Figure 2.4 Principles of Socket communication mechanism under C/S model图2.5 Message Queue通信机制原理图Figure 2.5 Principles of Message Queue communication
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园安全知识培训课件目标
- 作业人员试题及答案
- 耕地抛荒面试题及答案
- 质监系统考试试题及答案
- 台湾民法考试题及答案
- 校园保安反恐防暴安全知识培训课
- 政工人员试题及答案
- 函数高考试题及答案
- 2025年贵阳市城乡建设学校外聘教师招聘考试试题(含答案)
- 医院和住院环境医学必看试题带答案
- 业务跟单培训
- 河北省唐山市路北区2023-2024学年八年级下学期期末数学试题
- DL-T-5161.13-2018电气装置安装工程质量检验及评定规程第13部分:电力变流设备施工质量检验
- 安全顾问聘请协议
- 糖尿病酮症酸中毒的护理课件
- 设备材料进场报验单
- 班组长计划管理能力考试题库-上(选择题)
- (完整版)《机械制造工艺基础》教案
- 小学四年级数学口算题(每页60道直接打印).文档
- 诱思探究理论
- 铣床日常点检保养记录表
评论
0/150
提交评论