针对嵌入式多任务GUI系统需要非常强的灵活性、可移植性和可伸缩性的特点.提出一种通用解决方案;采用层次化、模块化和面向对象的设计思想,给出了GUI的体系结构,并对多任务GUI设计中的多任务调度策略及管理、消息驱动机制、桌面厦窗口管理和对象树等关键技术进行了研究。该解决方案的原型已经成功应用于我国自主产权的实时操作系统DeltaOS中。
嵌入式GUI(Graphic Uset Interface)系统就是在嵌入式系统中为特定的硬件设备或环境而设汁的图形用户界面系统。调查显示,越来越多具有灵活性、高效性和可移植性的嵌入式GUI系统被广泛应用于办公自动化、消费电子、通信设备、智能仪器等许多领域;而且随着硬件技术的发展,要求GUI实现的功能越来越丰富,GUI系统也变得比以往更加复杂、多样。
大多数的嵌入式GUI系统都只能简单地支持单任务。单任务GUI的效率较低,无法满足未来GUI的发展需求,故多任务GUI是嵌入式GUI的发展方向。
目前,在嵌入式应用领域比较成功的嵌入式多任务GUI系统主要有:MiniGUI、MicroWindows和Qt/Em-bedded。它们主要是针对嵌入式Linux而设计的,通过PThrred库来实现对多线程的支持;而PThred本身就比较复杂,很难将这些GUI系统移植到平台接口不符合POSIX标准的目标平台上。所以,上述几种GUI系统有一个共同的缺点,就是过分地依赖于某种特定的平台,导致可移植性差。
为了有效地兼容嵌入式领域的各种环境,下面提出一种通用、有效并且可移植性好的嵌入式GUI体系结构,并对多任务GUI设汁中的关键技术进行研究。
1 体系结构
针对GUI需要非常强的灵活性,可移植性和可伸缩性的特点,在其体系结构的设计中,采用层次化、模块化和面向对象的设计思想。层次式的体系结构在许多软件系统中被采用,被公认为是一种合理的结构,但最重要的是如何来划分这些层次,使系统的结构最合理、最清晰。
在设计中采用如下划分策略:力求层次之间相对独立,对任一层的改动保证它对上层的接口不变,上层不受下层变化的影响。在这样的层次结构中,最底层和最高层都可能根据具体需要发生改变,因此应该为这两层提供充分的变动空间,而中间的层次则应是独立不变的。
GUI在嵌入式应用环境中,硬件环境、操作系统和用户应用程序之间的层次如图1所示。图1中,通过驱动程序,GUI组件部分与硬件隔离;通过操作系统抽象层,使核心与具体操作系统隔离。这种层次体系结构使得GUI具有良好的平台无关性,在不同的操作系统和硬件平台之间的移植非常方便。按上述设计思想,GUI层次模型划分如图2所示。图中,GUI被划分为3层,每一层义根据具体功能的不同被划分为几个模块。
1.1 输入输出层
这一层的功能是将系统中设备和操作系统平台的具体细节屏蔽起来。该设备层被定义在BSP中,向上提供GUI对没备的显示特性操作。该层分为设备逻辑和硬件抽象两个子层。设备逻辑子层使用同一类设备的概念来描述GUI支持的外部设备及对该设备的逻辑操作,向上层提供了统一的设备操作接口;而硬件抽象子层则利用实际的设备控制器操作,根据硬件在不同平台上的驱动来实现硬件抽象子层中定义的接口。
1.2 窗口核心层
窗口核心层实现GUI的关键功能,根据功能可划分为消息管理、缓冲池管理、作图管理、定时器、资源管理、对象管理、子屏管理和内存堆管理等几部分。
由于GUI采取消息驱动的通信方式,因此消息管理构成GUI的灵魂,通过它把系统的各个部分联系起来。在应用程序的运行过程中,消息承载了系统各部分间的交换信息。
内存堆管理:目的是避免在系统运行过程中动态分配和释放内存时引起存储碎片。两个比较频繁的动态内存分配操作是消息空间的申请/释放和屏幕对象剪切域的刷新。
作图管理:完成画点、画线、画圆等作图操作。为了提高GUI的移植性,这层主要完成与硬件无关的作图过程。对具有特殊显示功能的应用平台来说,此层也可以大量调用硬件提供的功能函数(经输出硬件无关层包装后的接口),从而实现特殊的作图效果。GUI在结构上提供了这种灵活性。作图管理层向上以作图原语集的形式为应用提供调用接口。
定时器:根据系统时钟来为应用提供计数信息。
资源管理:主要对字体、图片和调色板等进行管理,需要实现资源的存储以及为应用提供适当的接口两大功能。
对象管理:采取合理的机制来组织在屏幕上显示的对象。GUI把所有能在屏幕上显示的GUI元素称为“对象”,并通过对象树、Z序和剪切域等机制来实现对象的管理。窗口核心层还为应用提供了添加、删除、隐藏对象等操作接口函数。
1.3 应用接口层
应用接口层封装了GUI为用户提供的一切接口,应用程序看到的GUI就是此层提供的所有接口函数,包括工具箱、作图原语集和对象操作集等3部分。
工具箱:GUI为用户提供的控件集。这部分的大小是可根据应用的需要调整的,从而也在较大程度上影响了GUI库的大小。常用的控件有按钮、滚动条、窗口和编辑框等。
作图原语集:作图管理层提供的绘图函数接口。工具箱也是在它的基础上实现的。
对象操作集:主要实现GUI对象的添加和删除等操作功能。
2 多任务GUI关键技术分析
本文中提到的“任务”,在同一个地址空间执行并且可以无约束地直接访问所有的共享资源。下面对多任务GUI设计中的关键技术进行分析。
2.1 多任务调度策略及管理
多任务系统需要一个合理的任务调度策略来管理所有的任务。启动GUI后,会默认产牛一个系统任务、一个事件任务和一个定时器任务;而应用任务的产生则要根据具体的用户需求。 |