基于多线程的嵌入式GUI的设计与实现.doc_第1页
基于多线程的嵌入式GUI的设计与实现.doc_第2页
基于多线程的嵌入式GUI的设计与实现.doc_第3页
基于多线程的嵌入式GUI的设计与实现.doc_第4页
基于多线程的嵌入式GUI的设计与实现.doc_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

西南交通大学硕士学位论文基于多线程的嵌入式GUI的设计与实现姓名:喻红丹申请学位级别:硕士专业:计算机应用技术指导教师:杨斌20100501西南交通大学硕士研究生学位论文第页蔓舅鼻曼曼舅曼曼(),(,),(),:;西南交通大学学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。本学位论文属于保密口,在年解密后适用本授权书;不保密使用本授权书。(请在以上方框内打“”)学位论文作者签名:褊多工舟指导老师签名:日期:加,口、占弓幸匆斌日期:。弓西南交通大学硕士学位论文主要工作(贡献)声明本人在学位论文中所做的主要工作或贡献如下:)对当前主流的嵌入式系统的特点和实现方法进行了一定的研究,尤其是对其实现过程中的几项关键技术如帧缓存、消息驱动机制、窗口管理和设备驱动等进行了详细分析。)提出了系统的体系结构和设计模型。针对嵌入式系统需要高效、易用和可扩展性等特点,采用了层次化、模块化和面向对象等多种设计思想。)的关键模块设计和实现。对核心模块中的设计方法、重要的数据结构、工作原理和具体实现等进行了深入阐述。)的移植和应用。简述移植的基本思想和流程,体现了它的可移植性,并简要介绍了它的功能和应用情况。)最后总结了本课题完成的工作并给出了下一步的工作展望。本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均己在文中作了明确说明。本人完全了解违反上述声明所引起的一切法律责任将由本人承担。学位论文作者签名:编专【丹凝:伽占。弓西南交通大学硕士研究生学位论文第页课题的研究背景第章绪论后时代的到来,使得人们开始越来越多地接触到嵌入式系统的概念【】。现在,嵌入式产品已经在很多领域得到广泛应用,如国防、工业控制、通信、办公室自动化和消费电子领域等【】。在嵌入式产品开发中,除操作系统之外,开发人员关注最多的另外一个系统软件组件尤其是图形支持系统。图形用户界面(,)作为人机交互技术的重要内容,以丰富的图形图像信息、直观的表达方式与用户交互,这样的软件系统简洁、美观、方便好用,更加人性化,已经被越来越多的领域所采用】。嵌入式图形用户界面()就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统。与通用系统相比,嵌入式系统普遍存在处理器运行速度慢,内存容量小等局限,所以嵌入式系统对图形界面的基本要求是系统结构简洁,占用的资源较少;使用模块结构,便于移植和定制且在某些应用场合应具备实时性,以适应系统硬件资源有限的条件【】。嵌入式图形用户界面为嵌入式系统提供了一种应用于特殊场合的人机交互接口。近来的市场需求显示:越来越多的嵌入式系统,包括,机项盒,便携式播放机,手机等,均要求实现诸如浏览器、应用、多媒体播放、甚至虚拟机的功能,而实现这些目标都离不开高效,易于操作的图形用户界面的支持【。图形用户界面的性能将直接影响整个系统的性能,是产品制造商和最终用户共同关注的问题。完善的图形用户界面不仅可以表示丰富的内容,而且具有多种表达方式,己经成为现代终端系统和嵌入式系统的重要组成部分,也是当今主流的人机界面。但是,由于越来越多的嵌入式系统对实时性要求越来越高,在出现众多强大的系统之后,许多控制系统开始采用这些作为软件平台,如,等,由于其面向的硬件平台仍然变化较大,往往会根据应用进行定制【】。在一些新领域中,嵌入式系统面临着和以往不同的需求和环境。新的要求包括:系统具备精干高效的嵌入式实时操作系统内核,并且具有良好的扩展性性;提供轻型、高性能、友好的嵌入式系统并具有显示实时性;更重要的是能够为后续应用程序的开发提供方西南交通大学硕士研究生学位论文第页便可靠的程序接口。从技术层面来看,在嵌入式系统上的系统开发,不像平台上的开发那么简单和方便。是因为操作系统提供的底层机制有限,二是因为设备的可用资源有限(频率大小、所分配的存储空间等)。这样,为各类实时嵌入式操作系统以及不同硬件配置的嵌入式产品提供功能完备、且又适合嵌入式产品特点的系统,存在着诸多技术挑战。传统的简单嵌入式系统已经不能满足高速发展的应用需求,新型的嵌入式系统,必须是体积小、消耗资源少、可靠性高、并具有跨硬件平台、跨操作系统的可移植性。在嵌入式的应用环境中,往往对系统的实时性要求较高,要求在指定的响应时间之内完成相应的任务,否则就会发生灾难【】。嵌入式系统面临着同样的要求,即需要能够比较及时的反映用户输入与状态的变化(尤其是在一些实时监控领域)。一旦程序中出现某个比较耗时的操作,则直接导致整个系统响应迟缓甚至崩溃。综上所述,在嵌入式实时系统中的地位将越来越重要。尽管实时嵌入式系统对的需求越来越明显,但目前的实现方法各有不同,主要有以下几点:开发满足自身需求的系统,它能有利于提高系统性能。某些厂商没有将作为一个软件从应用程序中剥离,的支持逻辑由应用程序来负责。采用某些比较成熟的系统,比如、或其他系统,但需要昂贵的授权费用。国内外现状分析系统在嵌入式系统上的发展,与在桌面系统的发展类似,基本上是一个从无到有、从字符界面到使用图形图象交互的过程,早期的工控系统基本没有用户界面,或者仅仅靠简单的文字信息和显示与用户进行交互【】。随着嵌入式技术的发展,嵌入式软硬件系统均取得了较大的进步。嵌入式系统也得到了发展,涌现出了一大批嵌入式系统或者组件。目前终端系统己经开始广泛采用位处理器芯片,配置触摸屏、键盘等多种输入设备和等图象显示设备,这为在嵌入式系统上应用提供了基础硬件平台【。随着嵌入式系统对系统的需求的明确,目前出现了多种实现嵌入式图形用户系统的方法,大体上可以分为以下几种:首先是对传统的桌面平台风西南交通大学硕士研究生学位论文第页曼曼皇曼!曼曼曼曼曼曼皇量曼曼皇曼曼曼曼曼曼曼曼曼曼曼皇曼!曼曼曼曼格的系统进行移植,如、紧缩的系统等。这类系统往往带有过多的桌面平台的痕迹,性能可靠,毕竟在成本上无法满足嵌入式系统的要求,而且其体积过于庞大,占据了本来就不多的存储器空间【引。在信息家电、等众多受欢迎的终端产品中,己经可以看到相对成熟的系统。在目前的多个嵌入式系统中,比较成熟,同时得到最多开发人员认可的系统有:,等。是一个著名的开放源代码的嵌入式软件,它提供了现代图形窗口的一些特征采用分层设计方法,基本上用语言实现,只有某些关键代码被用汇编实现以提高速度,已经支持很多位、和等】。但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还不是很完备,键盘和鼠标等的驱动还很不完善。是一种面向嵌入式系统或实施系统的图形用户界面支持系统。它是一种面向嵌入式系统或实时操作系统的图形用户界面支持系统,主要运行于控制台,同时也是国内最早出现的几个自由软件系统项目之一【】。的主要特色有:提供了完备的多窗口机制;完备的控件支持;消息传递机制;多字符集和多字符体的支持,包括,等。在上已经存在很长一段时间了,最初的名字叫,只支持色的线性显存模式,但目前也支持其他显示模式,是用编写的,只提供接口】。基于一个用汇编实现的图形内核,提供了一个高层的图形窗口接口。它提供了消息驱动的应用程序接口,支持文件格式。的功能强大,运行的速度很快。是著名的库开发商公司开发的面向嵌入式系统的版本。许多基于的程序因此可以非常方便地移植到上,同样是结构,它延续了在上的强大功能,在底层摒弃了,仅采用作为底层图形接口】。同时,将外部输入设备抽象为和输入事件,底层接口支持键盘、鼠标、触摸屏以及用户自定义的设备等。类库完全采用封装。丰富的控件资源和较好的可移植性是最为优秀的一方面。下表列出了以上系统之间的特点比较,从表中可以看出这些系统各有各的优点,但也或多或少存在一些缺点【”】。西南交通大学硕士研究生学位论文第页表各类系统的分析比较名称大小(一般)(较小)(较小)(较大)可配置和可一般好(提供了不差差定制少可配置项)可靠性差一般好一般可移植性很好很好差(只支持较好平台)性能一般好很好(底层用好汇编编写)支持、硬件环境、我们可以看到,上述嵌入式系统均或多或少存在一些缺点。嵌入式应用领域的多样化决定了嵌入式应用软件系统的多样性,因此,为了满足不同的需求和应用场合,嵌入式系统也有多种体系结构和实现方法【。例如适用于一些对图形要求相对简单的系统;通常用于高端产品,它们对硬件资源的消耗比大;而则提供了三种模式以适应不同的需求和应用环境,对中文支持很好,因此在国内的应用范围较广【。所以在设计一个优秀的嵌入式系统时,必须充分考虑各方面的因素,能够在应用领域里以优秀性能符合特定需求。在软件技术的不断发展中,应用程序也开始支持同时运行多个任务的功能。为了提高系统的效率,多线程技术在并行程序设计中得到了长足的发展,多线程是在同一时间需要完成多项任务的时候实现的。本文就是在这种背景下,提出了基于多线程的系统设计与实现。课题综述及主要研究内容本课题的研究内容来自某公司的研发项目:浏览器系统。该系统是专西南交通大学硕士研究生学位论文第页门针对其数字机顶盒中浏览器所用图形库的解决方案。它为上层软件(浏览器)实现其提供基础性的支持(如画点、画线、图形显示、窗口管理等)。在功能、性能能够保证的前提下,实现无须更改或仅更改少量浏览器程序代码的情况下实现系统的快速移植。在深入分析了嵌入式系统的需求和硬件系统的特点后,提出需要一种灵活方便的嵌入式体系结构,它能够提供简单但完备的窗口管理功能,高速的图形绘制,实时性能较高和跨平台的移植能力等。为了实现上述特点,本文完成了大量深入的分析研究,针对嵌入式系统的缺点及关键技术点一一提出解决方案,最终设计和实现了一个支持多线程特征的嵌入式系统(),使得用户可以在不同的线程中创建多个应用。所采用的方法是开发一个适用于多种嵌入式硬件开发平台且支持大多数常见的对象的图形库,它为上层应用软件提供提供基础性图形支持,并使其成为具有与其它应用程序相类似的应用编程接口的系统。这种方法使其能够很快地被具有编程经验的人员所接受。且系统要具有结构灵活,高效率和便于移植等特点。由于课题的具体要求和时间关系,在移植性上只是做了针对操作系统的实现。支持多线程特征,相对于仅支持单任务的系统,主要有以下三个优点:提高了嵌入式系统的响应能力;更合理的资源分配,提高资源利用率;大大降低了开发人员的应用编程难度;本课题研究的主要内容包括:()对当前主流的嵌入式系统的特点和实现方法进行了一定的研究,尤其是对其实现过程中的几项关键技术如帧缓存、消息驱动机制、窗口管理和设备驱动等进行了详细分析。()提出了系统的体系结构和设计模型。针对嵌入式系统需要高效、易用和可扩展性等特点,采用了层次化、模块化和面向对象等多种设计思想。()的关键模块设计和实现。对核心机制模块中的设计方法、重要的数据结构、工作原理和具体实现等进行了深入阐述。()系统构建和测试。简述移植的基本思想和流程,体现了它的可移植性,并简要介绍了它的功能和性能测试。()最后总结了本课题完成的工作并给出了下一步的工作展望。西南交通大学硕士研究生学位论文第页第章嵌入式的实现基础和关键技术分析基于的显示驱动嵌入式同机上实现的一样,需要有一定的底层支持,即要有一些底层的基本函数库或者底层系统作为实现高级图形系统的基础。目前,比较稳定和功能强大的底层基础支持的函数库(系统)是。译作帧缓冲,它作为基础图形设施,是出现在内核当中的一种驱动程序接口,是作为其他高级图形或者图形应用程序的基本函数库。这种接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像而不必关心物理显存的位置、换页机制等等具体细节,这些都是由设备驱动来完成的,帧缓冲区支持提高了绘图的速度和整体性能【。对应的源文件在目录下,一般是、等。总的抽象设备文件为,在这个目录下还有与各种具体显卡驱动相关的源文件。在使用帧缓冲时,是将显卡置于图形模式下的。有了,用户的应用程序不需要对底层的驱动的深入了解就能够做出很好的图形。对于用户而言,它和其他位于下面的设备类似,用户可以把看成一块内存,既可以向这块内存中写入数据,也可以从这块内存中读取数据。在任何嵌入式系统中,都发挥着极其重要的作用,有了的支持,就可在诸多嵌入式设备中进行图形图象的操作和显示:)通过设备,可以获得显示设备的一些固定信息(比如显示内存大小)、与显示模式相关的可变信息(比如分辨率、像素结构、每扫描线的字节宽度)等【。这些信息是通过提供的命令的获取。该函数调用如下:(,);其中就是用户程序打开设备时使用函数返回的文件标示符。)通过设备获得当前内核所支持的加速显示卡的类型(通过固定信息得到)。这种类型通常是和特定显示芯片相关的。获得了加速芯片类型之后,应用程序就可以将显卡内存(称为)映射到进程的地址空间。)显示设备可以将自己的控制寄存器映射到物理内存空间,而后对这些控制寄存器的访问。一旦被映射到物理内存,的普通进程才可以通过映西南交通大学硕士研究生学位论文第页皇曼曼皇曼曼皇曼曼曼皇曼曼曼曼曼曼曼曼量曼曼曼曼!曼曼皇鼍鼍曼皇曼曼曼!曼曼皇曼曼皇射操作()将这些内存映射到进程地址空间,这样就可以直接访问这些寄存器【。)映射()操作:通过文件操作结构中提供的函数映射操作将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址中,之后用户就可以通过读写这段虚拟地址访问屏幕缓冲区在屏幕上绘图【。)控制:通过操作完成。举个例子来讲,就像一张画布,使用什么样子的画笔,如何画画,都需要用户自己动手完成。在屏幕上绘图中内存块分布如图所示。窗口管理图内存块分布图窗口是系统的基本输入输出基本元素,在系统中,任何输入均是针对某一特定窗口的,输出结果也是在窗口中显示,对于窗口系统来说,显示屏实质上也是一个特殊的窗口。每个窗口都占据屏幕上的一个矩形区域。窗口的区域可以相互重叠,此时,上层的窗口会把下层的窗口遮挡住。同时,系统还要响应用户的鼠标事件。如果用户在某个窗口上单击鼠标,系统就要把这个事件通知对应的窗口。同时,如果该窗口目前不在最上层,就要“激活”它,使它成为最上层的窗口,而其他窗口间的遮挡关系则不受影响。如果鼠标点击没有落在任何窗口的区域内,则认为用户点击了“桌面,所有窗口的遮挡关系都不会变化【。在一个足够复杂的系统中,管理窗口的首要问题是处理窗口之间的互西南交通大学硕士研究生学位论文第页相剪贴。多窗口系统首先确保个窗口中的绘制输出不会影响到另一个窗口。为此,系统一般要利用序来管理窗口之间的互相剪贴关系。根据窗口在序中所处的位置,系统要计算每个窗口受剪贴的区域,即剪贴域。通常,窗口的剪贴域定义为互不相交的矩形集合,它是一个窗口所允许输出的区域【。系统的底层图形引擎在进行输出时,要根据当前输出的剪贴域进行输出的剪贴操作,从而保证窗口的绘制输出不会互相影响。因为任何一个窗口的创建、销毁、隐藏、显示均有可能影响其他窗口中的剪贴域,所以首先要有一个高效的剪贴域维护算法。消息驱动机制在任何系统中,均有事件或消息的概念。消息是一个报告事件发生的通知,消息驱动是围绕消息的产生与处理展开的,并依靠消息循环机制来实现【。在中我们用消息驱动作为应用程序的创建构架。在消息驱动的应用程序中,计算机外设发生的事件,如键盘键的敲击、鼠标键的点击等,都由支持系统收集,并以事先约定的格式翻译为特定的消息。应用程序一般都有自己的消息队列,系统将消息发送到应用程序的队列中。应用程序可以建立一个循环,在这个循环中读取并处理消息,直到特定的消息传来为止。消息循环就是这样一个循环体。一般地,消息由代表消息的一个整数和消息附加参数组成。应用程序一般要提供一个处理消息的标准函数。在消息循环中,系统可以调用此函数,应用程序在此函数中处理相应的消息。采用消息驱动机制后,系统的模块之间形成了完全松散的耦合关系,增加了整个连接和集成的灵活性,就变得更加容易维护。但是,系统中的消息队列不能是一个简单的循环队列,它还要注意一些问题如:消息数据传递的有效性、传递机制的多样性(同步和异步)、特殊消息的处理、消息优先级问题等。图形引擎图形引擎是系统中非常重要的组成部分,它不仅负责提供绘图函数的接口,同时还负责屏幕和区域的图形输出等。它包括各种,即图形设备接口()和各种绘图工具。对象是设备上下文的各种绘图属性的特定组合和抽象。如设备上下文、位图对象、字体对象、剪贴西南交通大学硕士研究生学位论文第页域、画笔和画刷等。所有绘图相关的函数均需要一个设备上下文,设备上下文是包括设备和一些绘图属性在内的一个称呼。它要管理以下内容:逻辑设备和物理设备的信息;图形设备上下文所在的窗口以及该窗口被其它窗口剪切的信息;基本绘图函数所需的参数,显示模式,色彩深度等。基本的画图操作用于屏幕的输出,完成画点、直线和弧线、矩形、多边形、圆、圆弧、区域填充、文本显示等功能。高效的屏幕绘制对小型嵌入式系统也是至关重要的。通常这部分都要涉及到显示对象管理、剪切域、高效的图形算法等技术。在绘图操作中,如果将诸如背景颜色、线宽、字体等信息作为绘图的参数传递,将加重每一次调用的负担,从而降低程序的性能【。而对象在系统中缓存了这些信息,在批绘图操作之前,只需要设置一次对象的属性,就避免了每次调用都传递一大堆参数。每一种对象,都将对后续的某些绘图操作产生影响。设备驱动和不同,嵌入式系统的外部设备接口千差万别。作为面向嵌入式操作系统的图形用户界面支持系统,系统要面对各种各样的外部图形设备和输入设备。拿图形设备来讲,最底层的绘图函数多是通过调用硬件设备的驱动来完成,如果仅考虑颜色深度,可能是单色的,也可能是位,或者位色的,但颜色深度和分辨率仅是图形设备的一个基本特性。如果从硬件角度来讲,其形式就更多了。为了便于移植,我们需要引入基于图形显示设备的图形抽象层和基于输入设备的输入抽象层(,和)的概念。它定义了一组不依赖于任何特殊硬件的接口,所有顶层的图形操作和输入处理都建立在抽象接口之上,而用于实现这一抽象接口的就是操作系统中的驱动程序【。这实际是一种面向对象的程序结构,极大的隐蔽了各种硬件的实现细节,就可以方便的将系统移植到其他硬件平台上。西南交通大学硕士研究生学位论文第页第章系统总体结构设计多线程与嵌入式传统的嵌入式系统大多采用单任务运行,即所有应用都在同一个任务中开发、运行和调试。这种结构最大缺点在于程序以串行方式运行,响应速度慢。如当某个应用窗口繁忙时,我们需要能够在其它窗口进行操作。如果不能这样,整个窗口系统将在一段时间内不能及时使用。其次,如果所有相关应用都在一个任务中开发,既不利于调试,也不利于维护。在单任务系统中,经常使用的解决方案是使用定时器()来模拟多任务(如用定时器来定期刷新多个动态改变的窗口),但是定时器的使用有时会限制程序的速度,而且不能真实反映程序的运行状态,且到底使用多大粒度的定时器将依赖硬件的速度和用户的设置,有很大的可变性【。这意味着并没有充分利用硬件资源,若是能同时以线程运行多个应用,窗口系统将会有以下好处:)更快的响应和运行速度,线程任务还可以根据优先级获得不同的响应效果,克服了单任务运行时串行化执行的速度和低效响应度;)更加合理的资源共享,多个应用可以有效利用及内存资源;)应用程序均运行在同一个地址空间,线程切换时没有额外的数据复制开销,提高了应用程序间的通信效率;)减小应用开发的难度,不同需求的应用可以独立开发、调试和维护,在逻辑上可以视作相互独立,使得上层开发人员能够专注于应用逻辑;在对多种流行嵌入式系统深入研究和分析的基础上,本章提出了一种功能完善、性能可靠、移植性强以及轻型的嵌入式体系结构()。的主要目标是向嵌入式应用软件(如浏览器、播放器等)提供图形界面编程的功能接口,使编程人员能快速、方便实现图形界面。系统的主要特点应包括以下几方面:)多任务,多线程特征支持,提高响应速度,方便开发。)提供完备的多窗口管理机制且实现了各种窗口,包括对话框和预定义的控件类(按钮、编辑框、列表框、组合框、进度条、滚动条等)。)支持中文双字字符集的输入及显示,提供中文点阵字库和字体。)提供完整的类似操作系统的消息处理机制,增加了安全性和灵活性。西南交通大学硕士研究生学位论文第页曼!蔓皇曼曼皇曼鼍曼曼曼曼曼皇皇曼曼曼曼,一曼曼皇曼!皇曼曼曼曼曼曼曼曼曼曼皇曼曼曼曼蔓曼)、将用户接口扩展成与操作系统相兼容的编程接口,便于用户编程。)结构灵活,便于扩展,高可靠性、用资源更少、全部功能以库文件的方式提供。)、等常见图像文件的支持。)资源文件的支持。如图标、光标、插入符、定时器等。)支持单色、位色、位色、位色、位色、位色以及位色等多种显示模式。本系统软件的主要作用是向应用软件(如浏览器、播放器等)提供图形界面编程的功能接口,使其能快速、方便实现图形界面。为实现这个目的所需要的功能可分为表一所列的几大类。表系统功能分类表功能类型功能类型作用描述二维图形库基本的二维图形(点、线、圆、多边形等)操作窗口系统及控件窗口及控件的绘制与管理输入方式支持键盘、鼠标、触摸屏等输入方式的支持操作系统功能支持库线程、定时器、同步等支持点阵和矢量字库支持点阵和矢量字库的操作和绘制图像处理库图像的读写、显示等操作设计模式设计模式()常见于面向对象编程语言中。通过在程序中使用某些设计模式,我们可以使代码结构清晰,减小错误几率,进而提高代码的可扩展性及可维护性【。系统是采用语言编写,但仍可采用一些设计模式来提高代码的灵活性及可维护性。在的开发过程中主要使用了有效隔离数据和代码、使用回调函数、面向对象技术等常用设计模式。三种设计模式的详细讨论如下。()一种有效的设计模式,第一个目的就是要隔离数据和代码【。除非是特定算法(如模式识别等),或者因为性能问题而不允许代码通用化,否则所有良好的设计都要尽量使代码通用化,而不是将数据硬编码到代码中。()在系统中,回调函数扮演着非常重要的角色。和系统提供的函数西南交通大学硕士研究生学位论文第页不同,系统提供的函数由应用程序调用,而回调函数一般由应用程序实现,最终由系统调用。一般回调函数借助函数指针这一特殊的类型来完成。通常需要通过某种接口告诉系统已定义好的回调函数指针,系统保持这个指针,然后再需要的时候通过这个指针来调用应用程序定义的回调函数。在系统的消息驱动机制中,用来处理消息的窗口过程函数需要采用大量回调函数。()面向对象技术将事物抽象成对象进行操作,每个对象被定义(封装)成一组属性和方法,属性能够来描述对象的特征,如外观、大小等,方法用来提供对属性的操作。对嵌入式系统进行面向对象分析是要找出软件需求中客观存在的所有实体对象,然后总结、抽象出实体类,完成这一工作的依据是在需求分析过程中产生的用例模型【。程序所建立的每个窗口,包括主窗口中的所有子窗口,即控件,都对应着系统预定义的某种窗口类。这一概念和面向对象编程中的类、对象的关系类似。系统的层次架构系统在嵌入式系统中一般以组件的形式存,它的优势在于使本身的保持相对独立,这样就方便系统的移植、裁剪和扩展【。这些特点决定了系统在整个嵌入式系统中的地位和层次结构。它为上层软件(如浏览器、播放器等)实现其提供基础性的支持(比如画点、画线、图形显示、窗口管理等)。在整个嵌入式软件体系架构中处于应用程序与操作系统之间的中间层位置,向下屏蔽操作系统的差异,向上提供通用的编程接口。如图所示。硬件(,)图嵌入式架构层次图从图中可以看出,嵌入式系统会与三个部分进行作用交互:与各种西南交通大学硕士研究生学位论文第页量曼寡皇曼皇曼!曼曼皇曼曼曼鼍曼曼曼!皇曼皇!曼曼曼曼舅曼曼舅舅皇曼曼曼曼皇!曼曼不同输入、输出设备的驱动程序交互;以库的形式提供编程接口给应用程序;与嵌入式操作系统相互通信。嵌入式系统是一个复杂的系统,而采用基于组件化的多层次体系结构可以满足复用、裁剪、移植、扩展等需求,并避免了由于重复开发可能引入的错误,从而提高软件开发的效率【。系统的层次结构和模块划分可用图表示,从上至下分为四层。四个层次从上至下分别是:)兼容层;)系统引擎层;)平台抽象层;)驱动层。其中,兼容层实现了与在接口和功能上的兼容;系统引擎层实现了系统本身使用的各项内部模块功能;平台系统抽象层完成了显示、输入功能和操作系统功能的抽象;驱动层提供了针对各种具体硬件的对应功能实现。类应用程序线应用内部消息消兼容编程接口程、接口层息互驱斥、窗口控件窗口管理动内部消息同核心层机步引擎时钟资源管理裁剪判断构管理平台内部消息层操作系统抽象抽象层千上上硬件平台操作系统图体系结构模块图各层次和模块间通过消息结合形成一个高效和清晰的体系结构。模块和层次设计降低了复杂性,使得系统不同部分能更容易的并行开发。层次结构的核心是各层间信息的隐蔽性,即层与层之间仅通过接口进行交互,模块内部和层次的变化不影响对外的接口,从而增强了各层的独立性【】。它的核心机制包括如消息驱动机制、窗口管理、基于窗口的图形引擎、引擎时钟、窗口控件类实现。以上各模块功能及调用关系如表所列。西南交通大学硕士研究生学位论文第页曼!曼曼曼曼曼皇曼!曼曼曼曼曼曼!曼曼曼曼曼曼皇曼皇曼曼!曼曼鼍苎曼曼曼曼曼曼!曼曼曼鼍鼍一一一皇曼鼍曼曼曼曼曼!曼曼曼曼曼!曼邑曼曼曼!曼表软件模块功能表模块名标识符功能描述完成窗口中系统中的图形绘制、图像显示、文字输出、光标操作提供常用的控件支持,包括:对话框、控件静态框、按钮、列表框、编辑框、组合框、滚动条完成对系统中各窗口的管理及相关消息处窗口管理器理裁剪判断提供裁剪区域设置、裁剪判断功能引擎时钟提供内部使用的时钟支持,资源管理负责各种图标、图片等资源的管理抽象硬件设备的打开、关闭、读入、状态硬件设备抽信息查询、设备信息查询。如抽象显示设备的打开、关闭、设置调色板、保存当前象的显示信息(前景色、背景色、画笔色、绘制模式等)操作系统抽与具体操作系统无关的线程管理、临界区、象互斥体、信号量、定时器功能支持各模块间的调用关系如图所示。在这个图中,由于“操作系统抽象”在需要时(涉及到线中管理及同步操作时)可被任何模块调用,所以在图中并未指明其调用关系。西南交通大学硕士研究生学位论文第页图模块调用关系表在文件系统中本软件系统的目录结构如图所示。图软件目录结构以上目录中,下的文件仅列出本项目必须实现的驱动文件;目录下仅列出系统必须的字库文件,对于其它的如格式等字库根据实际需要添加设置;下是引擎层;是兼容层;目录下的操作系统抽象层的实现。西南交通大学硕士研究生学位论文第页第章核心模块的设计和实现设备驱动抽象层设计实现将底层输入和上层相间隔很重要,我们有必要定义了一组不依赖于任何特殊硬件的抽象驱动接口,输入和显示都建立在这些抽象驱动接口之上【。中间层提供的与设备无关的图形引擎例程就是通过调用设备驱动程序跟硬件设备交互。这就保证了当平台硬件设备发生变化的时候,只需要改写相应的驱动程序,而无需修改上层代码。在系统中我们抽象出两类硬件设备:基于图形显示设备(如显示卡)的图形抽象层();基于输入设备(如键盘,鼠标等)的输入抽象层()。和各有两层,第一层为抽象层,它不依赖于任何特殊硬件,所有项层的处理都建立在这个抽象接口之上,而第二层则是硬件驱动层,是用来实现上一层抽象接口的底层代码【。图形抽象层将来自不同操作系统或设备的图形接口进行抽象,为上层提供统一的图形接口。在图形抽象层内,有针对设备的软件组成部分。这些软件组成部分通过调用底层设备的接口来实现具体的图形抽象操作,如打开设备、设置分辨率及显示模式、关闭设备等。输入抽象层则将系统中所涉及的输入设备,如键盘、鼠标、触摸屏等抽象出来,为上层提供一致的接口。要支持不同的键盘、触摸屏或鼠标接口,则通过为编写不同的输入引擎来实现。层和层的设计概念大大提高了系统在多种不同硬件平台上的移植,并使得程序的开发和调试更加容易。我们不再需要修改抽象接口,只需根据我们的抽象层接口实现新的图形引擎或输入引擎即可。应用程序支持系统输入设备驱动图形显示驱动输入设备显示设备图设备驱动抽象层西南交通大学硕士研究生学位论文第页曼曼曼皇曼曼皇曼!曼曼曼曼曼蔓!量输入驱动因为事件线程与输入驱动是紧密联系的,所以这里先讨论输入设备的驱动程序实现的一些规范。当产生鼠标消息时底层会调用鼠标驱动,以此来实现窗口的关闭、移动、激活等。鼠标驱动程序的基本功能是将鼠标中的数据解码,再返回关于鼠标按键是否按下输入和其所在位置和的数据。这些数据经过处理后把它们转换为系统能够识别的消息格式,插入到系统的核心消息对列中,进入消息循环,从而完成了对用户输入的响应。从抽象意义上讲,初始化鼠标后,每次用户移动鼠标,就可以得到一个和方向上的位移植,驱动程序内部维护鼠标的当前位置,用户移动了鼠标后,当前位置被加上位移植,并通过的上层鼠标光标支持,最终反映到屏幕上。不同鼠标设备的驱动通过类型的对象提供统一的接口。结构体主要数据成员如表所示。表输入引擎的鼠标驱动接口成员类型功能(木)(打开一个当前鼠标设幸)备(宰)()关闭当前鼠标设备(卑)()获取当前鼠标的按钮状态(宰)获取鼠标的加速属性(宰,)(搴)(掌,读取当前鼠标的位置宰,信息和按钮状态。,幸)鼠标状态在鼠标状态改变后,需要分发鼠标消息,即翻译并

温馨提示

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

评论

0/150

提交评论