技术开发 频道

MiniGUI背景,发展及优势

    【IT168 技术文档】

    本文介绍面向实时嵌入式系统的图形用户界面MiniGUI,其产生、发展及优势,并与其他面向嵌入式系统的 GUI 进行了比较,然后结合实例介绍了 MiniGUI 的一些重要功能和特色,最后,本文介绍了正在进行的 MiniGUI 的开发情况。

    嵌入式 Linux 系统的 GUI 发展概况

    1.1 GUI 在嵌入式或实时系统中的地位

    在常见的 PDA 等小型手持式设备上,由于硬件条件等的限制,我们看到的用户界面都非常简单,几乎看不到我们在 PC 机看到的华丽美观的 GUI 支持。但最近出现的 Palm 等手持式电脑或者在 Windows CE 等面向嵌入式系统的操作系统上,我们已经看到了完整的图形用户界面支持。随着手持式设备的硬件条件的提高,我们估计嵌入式系统对轻量级 GUI 的需求会越来越迫切。

    近来的市场需求显示,越来越多的嵌入式系统,包括 PDA、机顶盒、DVD/VCD 播放机、WAP 手机等等系统均要求提供全功能的 Web 浏览器。这包括 HTML 4.0 的支持、JavaScript 的支持,甚至包括 Java 虚拟机的支持。而这一切均要求有一个高性能、高可靠的 GUI 的支持。

    另外一个迫切需要轻量级 GUI 的系统是工业实时控制系统。这些系统一般建立在标准 PC 平台上,硬件条件相对嵌入式系统要好,但对实时性的要求非常高,并且比起嵌入式系统来说,对 GUI 的要求也更高。这些系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和 GUI 之上,比如 Windows 或 X Window.目前许多这类系统都建立在 DOS 等系统上,并且采用比较简单的手法实现 GUI.但是,在出现 Linux 系统之后,尤其在 RT-Linux 系统出现之后,许多工业控制系统开始采用 RT-Linux 作为操作系统,但 GUI 仍然是一个问题。关键是 X Window 太过庞大和臃肿。这样,这些系统对轻型 GUI 的需求更加突出。

    但是,我们必须清楚的是,嵌入式系统往往是一种定制设备,它们对 GUI 的需求也各不相同。举个简单的例子,有的系统只要求一些图形功能,而有些系统要求完备的 GUI 支持。因此,GUI 也必须是可定制的。

    综上所述,GUI 在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对 GUI 的基本要求包括:

    1.轻型、占用资源少。
    2.高性能。
    3.高可靠性。
    4.可配置。

    1.2 目前实时嵌入式系统 GUI 的实现方法

    尽管实时嵌入式系统对 GUI 的需求越来越明显,但目前 GUI 的实现方法各有不同:

    1.某些大型厂商有能力自己开发满足自身需要的 GUI 系统。

    2.某些厂商没有将 GUI 作为一个软件层从应用程序中剥离,GUI 的支持逻辑由应用程序自己负责。

    3.采用某些比较成熟的 GUI 系统,比如 MiniGUI 或者其他 GUI 系统。

    在上述手段中,第 2 种方法是一种临时解决方案。利用这种手段编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。我们认为 GUI 是一种类似于操作系统的基础软件,这种软件系统应该遵循一定的标准,并且应该是开放源码的自由软件,从而可以让开放商集中精力开发自己的应用程序。目前看来,在 Linux 之上进行(实时)嵌入式系统开发的厂商,一般选择如下几种 GUI 系统:紧缩的 X Window 系统、MiniGUI、MicroWindows、OpenGUI、QT/Embedded 等,下面首先对这些系统进行简单介绍,并对它们的优缺点进行比较。

    1.2.1 紧缩的 X Window 系统

    众所周知,X Window 是 Linux 以及其他类 UNIX 系统的标准 GUI.X Window 系统采用标准的客户/服务器体系结构,具有可扩展性好、可移植性好等优点。但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程序的可移植性,许多厂家都试图通过对 X Window 系统的紧缩开发,使之能够在嵌入式系统上运行。国外已经开发出了大小约为 800K 的 X 服务器。这对西方国家来说基本能够满足嵌入式系统的需求了。但该系统的源代码尚不开放,从而很难进行本地化开发。

    1.2.2 MicroWindows

    MicroWindows 是一个开放源码的项目,目前由美国一家公司在主持开发。该项目的开发非常活跃,国内也有人参与了其中的开发,并编写了 GB2312 等字符集的支持。该项目的主要特色在于提供了比较完善的图形功能,包括一些高级的功能,比如 Alpha 混合,三维支持,TrueType 字体支持等。但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还很不完备,键盘和鼠标等的驱动还很不完善。值得一提的是,该项目的许多控件是从 MiniGUI 中移植过去的,扫雷游戏也是从 MiniGUI 中移植过去的。

    该项目已经启动了一个开放源码的浏览器项目,该浏览器在 KDE kfm 提供的 HTML 解释器的基础上开发,目前能够解释一些简单的 HTML 页面。

    1.2.3 OpenGUI

    OpenGUI 在 Linux 系统上存在已经很长时间了。最初的名字叫 FastGL,只支持 256 的线性显存模式。但目前也支持其他显示模式。这个库是用 C++ 编写的,只提供 C++ 接口。

    1.2.4 Qt/ Embedded

    QT/Embedded 是著名的 QT 库开放商正在进行的面向嵌入式系统的 QT 版本。这个版本的主要特点是可移植性较好,许多基于 QT 的 X Window 程序可以非常方便地移植到嵌入式版本。但是该系统不是开放源码的,如果你要使用这个库,可能需要支付昂贵的授权费用。目前,已经有了 QT/Embedded 的演示版,预计明年初将出现 QT/Embedded 的正式发行版。

    1.3 MiniGUI 简介

    MiniGUI 是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。它主要运行于 Linux 控制台,实际可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容系统上。MiniGUI 同时也是国内最早出现的几个自由软件项目之一。

    MiniGUI 的主要特色有:

    遵循 LGPL 条款的纯自由软件。

    提供了完备的多窗口机制。这包括:多个单独线程中运行的多窗口。

    单个线程中主窗口的附属。

    对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。

    消息传递机制。

    多字符集和多字体支持,目前支持 ISO8859-1、GB2312、Big5 等字符集,并且支持各种光栅字体和 TrueType、Type 1 等矢量字体。

    全拼、五笔等汉字输入法支持。

    BMP、GIF、JPEG、PCX、TGA 等常见图像文件的支持。

    Windows 的资源文件支持,如位图、图标、光标等。

    插入符、定时器、加速键等。

    其他(Beep、ETC/INI 文件操作等)。

    小巧。包含全部功能的库文件大小为 300 K左右。

    可配置。可根据项目需求进行定制配置和编译。

    高稳定性和高性能。MiniGUI 已经在Linux 发行版安装程序、CNC 系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。可移植性好。目前,MiniGUI 可以在 X Window 和 Linux 控制台上运行。中科院 EEOS 开发组已经成功地将 MiniGUI 移植到了他们的 POSIX 兼容系统上。蓝点软件(北京)研发中心也已经成功地将 MiniGUI 移植到了两款基于 StrongARM 的嵌入式系统上。

0
相关文章