嵌入式图形界面(GUI)
时间:2009-05-18 阅读:2052
消费类电子产品(如PDA、手机)的广泛应用,使原先仅在*、工业控制等领域中使用的实时嵌入式操作系统,越来越受到关注,业界相应出现了多种各具特色的实时嵌入式操作系统产品。针对多样化的供应,选择成了一个难题。
而嵌入式图形系统作为除操作系统之外,开发人员关注的焦点,以及现实的需求也催生出了一批更美观和操作方便的图形用户界面。如此琳琅满目的市场供应,开发人员该做出如何选择呢?为目标嵌入式产品选择适合的嵌入式图形支持系统已经成为与选择嵌入式操作系统一样,成为颇具挑战性的难题。
而现实情况是,在嵌入式系统上的GUI开发,并不像普通PC平台上的应用开发那么容易和方便。一方面是因为设备的可用资源有限(CPU运算能力、静态和动态存储空间等),另外就是操作系统提供的底层机制有限。这样一来,就造成了开发人员在为具有不同硬件配置的嵌入式产品以及实时嵌入式操作系统选择功能完备、且又适合目标产品特点的GUI支持系统时,面临诸多技术挑战。
嵌入式图形技术现状
嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人机交互接口。嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速。尤其在实时系统中对GUI的快速反应提出很高的要求。
嵌入式图形系统目前可以大致分为二类,一类是针对某个嵌入式系统提供GUI的图形库及接口,一般基于GUI提供了完整的解决方案和应用。此类除Microsoft的WinCE外,大都随着嵌入式Linux的发展而发展起来的。在Linux下有成熟的桌面产品,拥有大量的应用和应用开发人员。此类的典型为TrollTech的Qtopia和GNU的GTK+。
另一类是专门针对嵌入式系统提供的嵌入式图形中间件。此类系统考虑支持不同的硬件环境和支持不同的嵌入式操作系统。为满足嵌入式系统的不同需要,都提供了灵活的、可伸缩的软件架构。此类图形系统的代表为北京飞漫软件的MiniGUI、SwellSoftware的PEG和TilconSoftware的Tilcon产品。此类系统一般是由专业公司在维护,基于核心的GUI系统针对某一行业提供关键应用、解决方案和开发工具等系列产品。
和微软的WinCE系统内核支持图形系统不同,绝大多数嵌入式系统都通过应用层来完成对图形系统的支持。支持单一操作系统的图形系统可以使用一些系统调用来优化系统的性能。将满足嵌入式各种硬件平台的任务交给操作系统来处理。这样的方式限制了图形系统的跨系统能力。支持多操作系统和多硬件平台的图形中间件,通过优化的系统架构,可以很好地解决嵌入式平台各种硬件的问题,集中处理图形方面相关问题,为系统提供的图形系统平台。这样的处理是符合目前的嵌入式系统的发展的。
为此,笔者采访了飞漫软件技术公司研发部焦力波,以期从技术角度对MiniGUI做以剖析,给致力于此的其他厂商以合理借鉴。
MiniGUI
MiniGUI是一个、可靠、可定制、小巧灵活的图形用户界面支持系统,具有跨硬件平台、跨操作系统的可移植性。同时它又是一个是面向实时嵌入式系统的轻量级图形用户界面支持系统。自1999年初遵循GPL条款发布*个版本以来,MiniGUI已广泛应用于手持信息终端、机顶盒、工业控制系统及工业仪表等产品和领域。
MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI本身的可移植性设计,使得不论在哪个硬件平台、哪种操作系统上运行,MiniGUI均能为上层应用程序提供一致的应用程序编程接口(API)。MiniGUI具有良好的软件架构,通过抽象层将MiniGUI上层和底层操作系统隔离开来如图1所示。
MiniGUI是一个根据嵌入式系统应用特点量身定做的完整的图形支持系统。作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统及硬件平台差别隐藏了起来,并对上层应用程序提供了一致的功能特性。MiniGUI的整体架构图如图2所示。
MiniGUI在发展过程中,引入了很多技术创新点,如图形和输入抽象层、多字体和多字符集支持和针对不同操作系统特点的运行模式等。正是由于这些技术上的创新,才使得MiniGUI对实时嵌入式系统的适应性更强,灵活性更好。
图形和输入抽象层
图形和输入抽象层对顶层API基本没有影响,但大大方便了MiniGUI自身及应用程序的移植和调试等。MiniGUI能够在基于i386、ARM(包括StrongARM、xScale等)MIPS、PowerPC及低端的DragonBall、ColdFire等CPU的嵌入式系统上流畅运行。
利用图形和输入抽象层,还可以实现基于软件结构的引擎。比如模拟现实输入的random输入引擎,通过它可以完成应用程序的自动测试。我们可以通过Shadow图形引擎支持YUV输出设备、提供对无法直接访问显示帧缓冲区的图形芯片的支持、提供对低于8位色显示屏的支持、实现屏幕旋转功能等。
多字体和多字符集支持
这部分通过设备上下文(DC)的逻辑字体实现,不管是字体类型还是字符集,都可非常方便地进行扩充。利用DrawText等函数时,可通过字体而获得对各种字符集的支持,如GB2312、GBK、UNICODE(UTF-8、UTF-16编码)等。这样,在单个MiniGUI应用程序中,同时显示多个不同语种的文字非常容易。MiniGUI的这种字符集支持不同于通过UNICODE内码实现的传统多字符集支持,这种实现占用资源少,更加适合于嵌入式系统。
针对不同操作系统特点的运行模式
和Linux这样的类UNIX操作系统相比,一般意义上的传统嵌入式操作系统具有一些特殊性。例如象uClinux、uC/OS-II、eCos、VxWorks等操作系统,通常运行在没有MMU的CPU上;这时,往往没有进程的概念,而只有线程或任务的概念,这样,GUI系统的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,可将MiniGUI配置成MiniGUI-Threads、MiniGUI-Processes及MiniGUI-Standalone三种运行模式。
MiniGUI的技术优势
M*iniGUI在对系统的需求上主要有以下几点优势:
可伸缩性强
MiniGUI丰富的功能和可配置特性,使得它既可运行于CPU主频只有60MHz的低端产品中,亦可运行于嵌入式设备中,并且可使用MiniGUI的控件风格及皮肤界面等技术,创建华丽的用户界面。同时,它的跨操作系统特性,使得MiniGUI不仅可运行在zui简单的嵌入式操作系统之上,也可运行在具有现代操作系统特性的嵌入式操作系统之上(如Linux),并且为嵌入式Linux系统提供了完整的多窗口图形环境。
轻型、占用资源少
作为一个定位于轻量级的嵌入式图形库,MiniGUI*考虑到了系统资源对嵌入式设备的硬件的需求,如MiniGUI库所占的空间zui小可以裁剪到500K左右,对目前的嵌入式设备来说,满足这一条件是绰绰有余的。
高性能、高可靠性
MiniGUI良好的体系结构及优化的图形接口,可确保zui快的图形绘制速度。考虑到实时嵌入式系统的特点,在设计之初MiniGUI就对多窗口环境下的图形绘制开展了大量的研究及开发,优化了MiniGUI的图形绘制性能及资源占用。在大量实际系统中的应用,尤其在工业控制系统的应用,证明了MiniGUI的高性能。
可配置性
为满足嵌入式系统不同的需求,必须要求GUI系统是可配置的。和Linux内核类似,MiniGUI为满足嵌入式系统多样的需求,也实现了大量的编译配置选项,通过这些选项可MiniGUI库中包括哪些功能而同时不包括哪些功能。
这些配置选项大大增强了MiniGUI的灵活性,对用户来讲,可针对具体的应用需求量体裁衣,开发产品需求的应用软件。MiniGUI很好地将现代窗口和图形技术带入到了嵌入式设备。