嵌入式多任务GUI的通用解决方案

发布者:MysticalEssence最新更新时间:2012-03-29 来源: 单片机与嵌入式系统应用 关键字:嵌入式系统  GUI  用户界面  多任务 手机看文章 扫描二维码
随时随地手机看文章

    嵌入式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支持的外部设备及对该设备的逻辑操作,向上层提供了统一的设备操作接口;而硬件抽象子层则利用实际的设备控制器操作,根据硬件在不同平台上的驱动来实现硬件抽象子层中定义的接口。[page]
1.2 窗口核心层
    窗口核心层实现GUI的关键功能,根据功能可划分为消息管理、缓冲池管理、作图管理、定时器、资源管理、对象管理、子屏管理和内存堆管理等几部分。
    由于GUI采取消息驱动的通信方式,因此消息管理构成GUI的灵魂,通过它把系统的各个部分联系起来。在应用程序的运行过程中,消息承载了系统各部分间的交换信息。
    内存堆管理:目的是避免在系统运行过程中动态分配和释放内存时引起存储碎片。两个比较频繁的动态内存分配操作是消息空间的申请/释放和屏幕对象剪切域的刷新。
    作图管理:完成画点、画线、画圆等作图操作。为了提高GUI的移植性,这层主要完成与硬件无关的作图过程。对具有特殊显示功能的应用平台来说,此层也可以大量调用硬件提供的功能函数(经输出硬件无关层包装后的接口),从而实现特殊的作图效果。GUI在结构上提供了这种灵活性。作图管理层向上以作图原语集的形式为应用提供调用接口。
    定时器:根据系统时钟来为应用提供计数信息。
    资源管理:主要对字体、图片和调色板等进行管理,需要实现资源的存储以及为应用提供适当的接口两大功能。
    对象管理:采取合理的机制来组织在屏幕上显示的对象。GUI把所有能在屏幕上显示的GUI元素称为“对象”,并通过对象树、Z序和剪切域等机制来实现对象的管理。窗口核心层还为应用提供了添加、删除、隐藏对象等操作接口函数。
1.3 应用接口层
    应用接口层封装了GUI为用户提供的一切接口,应用程序看到的GUI就是此层提供的所有接口函数,包括工具箱、作图原语集和对象操作集等3部分。
    工具箱:GUI为用户提供的控件集。这部分的大小是可根据应用的需要调整的,从而也在较大程度上影响了GUI库的大小。常用的控件有按钮、滚动条、窗口和编辑框等。
    作图原语集:作图管理层提供的绘图函数接口。工具箱也是在它的基础上实现的。
    对象操作集:主要实现GUI对象的添加和删除等操作功能。

2 多任务GUI关键技术分析
    本文中提到的“任务”,在同一个地址空间执行并且可以无约束地直接访问所有的共享资源。下面对多任务GUI设计中的关键技术进行分析。
2.1 多任务调度策略及管理
    多任务系统需要一个合理的任务调度策略来管理所有的任务。启动GUI后,会默认产牛一个系统任务、一个事件任务和一个定时器任务;而应用任务的产生则要根据具体的用户需求。
(1)系统任务
    桌面对象运行的任务称为“系统任务”。系统任务是整个图形用户系统运转的核心。它不断地从系统的主消息队列中取消息,并按消息的目的和用途将其派发到对应的目的任务;同时负责所有应用任务的管理和维护以及桌面管理等事务。一个系统中仅有一个系统任务。
(2)事件任务
    事件任务负责收集外部事件,并将事件解释为与之对应的GUI消息,并放入系统的主消息队列中。用户的输入正是从这里传人GUI核心进行处理。一般情况下,一个系统中仅有一个事件任务。
(3)定时器任务
    定时器任务是通过操作系统的系统调用产生GUI定时器的。
(4)应用任务
    除系统任务之外,窗口所运行的其他任务称为“应用任务”。应用任务是用户程序运行的基本单位。应用逻辑都在此任务中运行,拥有自己的消息队列,接收来自 GUI核心的消息,按一定规则独立进行消息循环。应用任务通过消息与系统任务交互,受系统任务的管理;通过应用接口层使用系统的软硬件资源。应用任务的上限数目仅受平台的资源数目限制。
    在嵌入式GUI中,系统任务被赋予最高的优先权,其他任务可使用低于系统任务优先级的不同优先级;相同优先级应采用时间片轮转方式运行。总之,如果有必要,则嵌入式GUI系统会同时采取时间片轮转和优先级抢占的任务调度策略,如图3所示。

    在没有消息到达或者在等待某个事件时,任务需要将自己挂起。一旦有消息进入消息队列,任务将会被唤醒以处理消息。这样,有限的CPU资源就能够被充分地利用。
    此外,系统任务维护一个用于跟踪及管理应用任务的列表。每一个应用任务对应一个包含其属性信息的任务信息块。任务属性包括消息队列指针、任务句柄和任务入口等,对指定任务进行了详细的描述。一个信息块的创建与销毁必须与应用任务的创建与销毁保持同步。系统任务必须维护该列表,以保证这些信息块的正确性。多任务管理机制如图4所示。
    对用户来说,只需要简单地指定任务的入口和优先级(如果有必要的话),其他所有的工作都由系统任务自动完成。采用这种调度和管理方法,能使系统变得更加易用和高效。
2.2 消息驱动机制
    消息机制的提出,最初是为了解决早期程序设计中基于硬件中断的事件处理问题。中断事件的发生足不可预期的、突发性的,因此当有多个应用等待并处理中断事件时,就会出现问题。消息机制可以很好地解决事件驱动的多应用设计问题,并且可以形成一种处理多个系统之间、系统内部件和部件之问关系的简洁而且可靠的方法。
    在只支持单任务的GUI系统中只有一个串行化的消息队列,消息严格地按照顺序处理,导致响应慢、效率低,故有必要采用并行化的消息队列。当一个队列中的消息忙于处理一个冗长工作时,输入焦点能够切换到另外一个队列。[page]
    系统维护一个系统消息队列和多个指定任务信息队列,每个指定任务信息队列对应一个应用任务,如图5所示。事件任务将输入转化成消息并将其放入系统消息队列中,系统任务检索到输入消息后首先会对该消息进行检查,然后将消息邮寄给目标应用任务或直接对消息进行处理。每个应用任务从它的消息队列中移出消息,并将其发送到适当的窗口程序中进行处理。一个应用任务可以将消息邮寄到它自己的消息队列,也可以邮寄到其他应用任务的消息队列中。

    此外,为了达到不同的目的,系统提供了同步和异步两种基本类型的消息。
2.3 桌面及窗口管理
    屏幕中的窗口通常是相互覆盖,而且它们的相对位置也在不断地变动。这些窗口有可能分别属于不同的任务,但共享一个相同的屏幕。所以,如何方便并有效地计算和维护窗口便显得很重要。
    首先介绍2个概念:全局剪切域和窗口剪切域。它们都与应用任务相关,前者指出哪些区域占据屏幕,后者给出在相同的应用任务中所有对象的剪切关系。
    系统任务除了要维护它自己的剪切域外,还要负责管理所有应用任务的全局剪切域,如图6所示。一旦窗口位置发生变化,系统任务必须更新信息并且通知应用任务作出相应的变动。另一方面,在计算窗口剪切域时,应用任务只须关心它本身而不受其他任务的影响,好像整个屏幕只有它一个任务在运行。至于最后实际的剪切结果,只需将全局剪切和窗口剪切结果进行“与”运算。

2.4 Z序和对象树
    Z序实际定义了屏幕中对象集(可显窗口)之间的层次关系。GUI用户可以通过选择要被置于前端的窗口来改变Z序。很多GUI系统将Z序当作一个带有指定运算集的显式列表来实现。然而,在嵌入式GUI系统中不用这种方式,而是通过对象树来说明这些GUI对象之间的层次关系和Z序。理论上,每一个GUI对象都有父亲、孩子和兄弟。因此,所有显示在屏幕上的对象便构成一棵以桌面为根节点的倒置树。对树进行“后根遍历”就能够容易地得到Z序。
    图7描述了对象树的建立过程。对象树的采用极大地简化了桌面管理,能够在不增加额外工作的情况下方便地组合对象和实现Z序管理。

3 小 结
    将来的GUI系统将越来越复杂,要求GUI系统实现的功能也越来越丰富,这就需要一个更加开放且伸缩性好的体系结构。本文提出的嵌入式GUI体系结构具有很强的灵活性,且可移植性好,能够很好地应用于嵌入式领域的各种环境。

关键字:嵌入式系统  GUI  用户界面  多任务 引用地址:嵌入式多任务GUI的通用解决方案

上一篇:VxWorks环境下基于Zinc的通信
下一篇:嵌入式Linux中的进程同步无竞争态读写

推荐阅读最新更新时间:2024-05-02 21:59

基于ARM控制器LPC2214的嵌入式系统研究与开发
1 嵌入式系统与ARM 嵌入式系统以应用为中心、以计算机技术为基础。ARM(Advanced RSIC Machines)是一家出售芯片设计技术授权的公司,目前其设计的ARM微处理器占据了32位RISC(Reduced Instruction Set Computing)微处理器75%以上的市场份额。 2 ARM体系结构 ARM已经从V3发展到V6。目前流行的ARM芯片内核有ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM922T、ARM940T、ARM946T、ARM966T、ARM10TDMI等。Philips LPC2214(以下简称LPC2214) 是基于ARM7TDMI-S的
[单片机]
基于ARM控制器LPC2214的<font color='red'>嵌入式系统</font>研究与开发
如何将Linux2.4移植到ARM平台的嵌入式系统
目前 , 在嵌入式系统里基于ARM核的嵌入式处理器已经成为市场主流。随着ARM技术的广泛应用 , 建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点。S3C2410是SAMSUNG公司基于ARM920T处理器内核开发的一款16/32位嵌入式处理器,运行频率高达200多M,具有MMU和高速缓存等丰富片上资源,是目前基于ARM920T内核的出货量最大的一款芯片。目前嵌入式操作系统也较多,如 Tor2nado 的VxWork、微软的 Windows CE等等。大量开发人员选择的却都是Linux,这是因为它源代码开放,可以轻松修改移植到自己的目标平台系统里使用。并且事实证明,效果令人满意。两者的结合必将在嵌入式系统的世界里打出一片天
[单片机]
如何将Linux2.4移植到ARM平台的<font color='red'>嵌入式系统</font>
FPGA平台架构用于复杂嵌入式系统
设计嵌入系统的主要挑战来自于需要同时优化众多设计因素。这些需要优化的设计因素包括单位成本、NRE(不可回收工程)成本、功率、尺寸、性能、灵活性、原型制造时间、产品上市时间、产品在市场生存时间、可维护性、可重配置能力、工程资源、开发和设计周期、工具、硬件/软件划分,以及其他许多因素。 Virtex-II ProTM平台FPGA产品基于高性能的Virtex-IITM结构,为嵌入式系统设计提供了一个极灵活的解决方案。利用Virtex-II ProTM器件,嵌入式系统设计人员可以在单片器件内集成范围广泛的硬和软IP核心,其中的硬件和固件具有可升级能力,从而可延长产品的在市场生存时间。 Virtex-II 结构的可编程能力降低了系统开发
[嵌入式]
嵌入式系统接口应用中的隔离技术及其设计
在许多应用中,数据链路之间需要(甚至是必要的)非直接的(导电)电连接,从而在提供数据的同时避免来自系统某一部分的危险电压(或电流)对其另一部分造成破坏。造成这种破坏性失效的可能是电源质量低劣、接地故障、雷击和浪涌等各种故障。此外,通信节点的间距可能相当大,常常由不同接地区域的AC插座来给这些节点供电,这些接地区域之间的电位差(可能含有DC偏压、50 Hz的AC谐波和各种瞬态噪声分量)也会造成破坏。 在工程实际使用中,经常发生通过电缆逻辑接地或屏蔽将这些地线连接在一起的情况,可能形成接地环路,且电流将流入该电缆。接地环路电流会对通信产生严重影响(包括数据恶化、EMI过大、元件损坏),当电位差足够大时,人体就有遭受电击的可能。为了避免上
[单片机]
<font color='red'>嵌入式系统</font>接口应用中的隔离技术及其设计
SHT15在嵌入式系统中的应用方案
  氡及其子体的测量是一个涵盖智能仪器、核辐射探测、核技术应用、环境*价、工业计量、工业自动化、计算机通信与软件等多领域的问题。然而氡及其子体浓度受温湿度的影响很大,因此温湿度的测量对于测氡仪来说是非常重要的。传统的模拟式温湿度传感器一般都要涉及信号调理电路并需要经过复杂的校准和标定过程,所以测量精度难以保证。由某公司生产的SHT15单芯片传感器,是一款含有已校准数字信号输出的温湿度复合传感器,应用专利的工业COMS过程微加工技术(CMOSens),确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括1个电容式聚合体测湿元件和1个能隙式测温元件,并与1个14位的A/D转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具
[单片机]
SHT15在<font color='red'>嵌入式系统</font>中的应用方案
基于DSP的数字示波器用户图形化 (GUI) 的开发
随着嵌入式系统应用领域的不断扩大,系统复杂性也在不断提高。所以在嵌入式系统中实现用户图形化(GUI),已经成为大势所趋。在测量仪器中,图形化界面也是广泛采用,一种是嵌入操作系统,大多数的用户图形化界面(GUI)都是在操作系统(如OS、WinCE、Linix)的支持下,调用系统的各种API函数实现的。这些操作系统为实现GUI提供了大量的库函数,也为编程人员提供了界面设计的良好平台。但是这种嵌入技术,对硬件要求高,相当于嵌入一台计算机,如利用WinCE就可以十分方便的设计出具有Windows风格的图形界面。另一种是,直接利用DSP技术,开发小型系统。这种系统精简,对硬件要求低,但功能相对单一。 本文这款数字示波器是普源精电(RIGO
[测试测量]
基于DSP的数字示波器<font color='red'>用户</font>图形化 (<font color='red'>GUI</font>) 的开发
基于ARM的嵌入式SMTP远程控制设计
  随着WWW 的不断发展,人们对以IP 网络为基础的Internet 应用提出了更高的需求,将来的Internet 必将实现“利用IP 技术传输控制行为(AcTIon over IP)”。在工业控制领域怎样实现仪器仪表的远程数据采集,实现异构网络互连及远程监控成为技术的关键。因此需要一种合理的通讯模式来实现数据的远程传输 。   在本课题中,通过SMTP协议的方式提供了一种新的嵌入式远程通讯模式。即在ARM处理器中实现SMTP协议,并通过双绞线连接到Internet上。在该平台上开发的远程控制设备或仪器仪表实现了通过Internet进行数据的远程传输,在任意一台上网的计算机上都可以通过Internet对其进行远程监视和控制。
[嵌入式]
80C186XL嵌入式系统中DRAM控制器的CPLD解决方案
    摘要: 介绍怎样在嵌入式CPU 80C186XL DRAM刷新控制单元的基础上,利用CPLD技术和80C196XL的时序特征设计一个低价格、功能完整的DRAM控制器的方法,并采用VHDL语言编程实现。     关键词: 刷新控制单元(RCU) DRAM控制器 状态机 CPLD VHDL语言 80C186XL16位嵌入式微处理器 是Intel公司在嵌入式微处理器市场的上导产品之一,已广泛应用于电脑终端、程控交换和工控等领域。在该嵌入式微处理器片内,集成有DRAM RCU单元,即DRAM刷新控制单元。RCU单元可以自动产生DRAM刷新总线周期,它工作于微处理器的增益模式下。经适当编程后
[半导体设计/制造]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved