实时嵌入式 Linux 系统上GUI的发展与展望
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。在出现Linux系统之后,尤其在RT-Linux系统出现之后,许多工业控制系统开始采用 RT-Linux作为操作系统,系统对轻型GUI的需求日渐突出,在高性能、高可靠性、轻型和可配置等方面都有所表现。
什么是 GUI?
----GUI是英文Graphics User Interface的缩写,即图形用户界面。在计算机的发展历史中,GUI的出现是一次革命。它使得计算机成为我们大多数人都能够使用和接受的工具,而不仅仅是研究人员的宝贝。我们每天看到的 Windows系统就是PC机上占主导地位的GUI系统。
GUI:异彩纷呈
----目前实时嵌入式系统上的GUI的实现方法各有不同:某些大型厂商有能力自己开发满足自身需要的GUI系统;某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己负责;还有些厂商采用某些比较成熟的GUI系统,比如MiniGUI或者其他GUI系统。
----目前看来,在Linux之上进行嵌入式系统开发的厂商,一般选择如下几种GUI系统:紧缩的X Window系统、MiniGUI、MicroWindows、OpenGUI、Qt/Embedded等,下面首先对这些系统进行简单介绍,并对它们的优缺点进行比较。
----紧缩的 X Window 系统
----众所周知,X Window是Linux 以及其他类Unix系统的标准GUI。 X Window系统采用标准的Client/Server体系结构,具有可扩展性好、可移植性好等优点。但该系统的庞大、累赘和低效率也是大家所共知的。为了获得应用程序的可移植性,许多厂家都试图通过对X Window系统的紧缩开发,使之能够在嵌入式系统上运行。国外已经开发出了大小约为800KB的X Server。这对西方国家来说基本能够满足嵌入式系统的需求了。但该系统的源代码尚不开放,从而很难进行本地化开发。
----MicroWindows
----MicroWindows是一个开放源码的项目,目前由美国一家公司在主持开发。该项目的开发非常活跃,国内也有人参与了其中的开发,并编写了 GB2312等字符集的支持。该项目的主要特色在于提供了比较完善的图形功能,包括一些高级的功能,比如Alpha 混合、三维支持、TrueType字体支持等。但作为一个窗口系统,该项目提供的窗口处理功能还需要进一步完善,比如控件或构件的实现还很不完备,键盘和鼠标等的驱动还很不完善。值得一提的是,该项目的许多控件是从MiniGUI 中移植过去的,扫雷游戏也是从 MiniGUI中移植过去的。
----该项目已经启动了一个开放源码的浏览器项目,该浏览器在KDE KFM提供的HTML解释器的基础上开发,目前能够解释一些简单的HTML页面。
----OpenGUI
----OpenGUI在Linux系统上存在已经很长时间了。最初的名字叫FastGL,只支持256色的线性显存模式。但目前也支持其他显示模式。这个库是用C++编写的,只提供C++接口。
----Qt/Embedded
----Qt/Embedded是著名的Qt库开放商正在进行的面向嵌入式系统的Qt版本。这个版本的主要特点是可移植性较好,许多基于Qt的X Window程序可以非常方便地移植到嵌入式版本。但是该系统不是开放源码的,如果您要使用这个库,可能需要支付昂贵的授权费用。目前,已经有了Qt/Embedded的演示版,预计2001年初将出现Qt/Embedded的正式发行版。
----MiniGUI
----MiniGUI是一种面向嵌入式系统和实时系统的图形用户界面支持系统。它主要运行于Linux控制台,实际可以运行在任何一种具有线程支持的POSIX兼容系统上。MiniGUI同时也是国内最早出现的几个自由软件项目之一。
---比较上述几个面向嵌入式系统的 GUI,我们认为目前比较成熟,同时得到最多开发人员认可的有紧缩的X Window系统、MiniGUI、MicroWindows等系统。尽管紧缩的X Window系统其X Server可以降低到 800KB的大小,但因为X Window系统的运行还需要其他程序和库的支持,包括X Window管理器、XLib、建立在XLib之上的GTK和Qt等函数库,因此,紧缩的X Window系统在运行期间所占用的系统资源很多,加上中文显示和中文输入等本地化代码之后,系统的整体尺寸和运行时的资源消耗将进一步变大。因此,嵌入式系统的开发商往往将紧缩的X Window系统定位在机顶盒等对资源要求并不苛刻的嵌入式系统上。
----MiniGUI和MicroWindows均为自由软件,只是前者遵循LGPL条款,后者遵循MPL条款。这两个系统的技术路线也有所不同。MiniGUI的策略是首先建立在比较成熟的图形引擎之上,比如 SVGALib和LibGGI,开发的重点在于窗口系统如图形接口; MicroWindows目前的开发重点则在底层的图形引擎,窗口系统和图形接口方面的功能还比较欠缺。举个例子来说,MiniGUI有一套用来支持多字符集和多编码的函数接口,可以支持各种常见的字符集,包括GB、Big5、Unicode等,而MicroWindows在多字符集的支持上尚没有统一接口。
LGPL 和 MPL 条款
----LGPL指Library General Public License,是自由软件基金会发布的专门针对函数库的自由软件条款,它比著名的GPL条款的限制宽松。如果某个软件使用了遵循LGPL条款的自由软件,并且只以动态链接的形式连接,则该软件可以不公开其源代码。这使得在LGPL 的自由软件之上建立商业应用软件成为可能。MPL指Mozilla Public License,是由Netscape所发布的用于其公开源码的浏览器Mozilla的授权条款。有关 GPL、LGPL的详细信息请参阅http:/www.gnu.org;MPL的详细信息请参阅 http:/www.netscape.com。
小巧灵活的MiniGUI
----MiniGUI最初是为了满足一个工业控制系统的需求而设计和开发的。这个工业控制系统是清华大学为一台数控机床设计的计算机数控系统(CNC)。在比较了DOS、Windows 98、Windows NT、Linux等系统之后,该项目组决定选择RT-Linux作为实时操作系统,以便满足2ms甚至更高的实时性。但是图形用户界面是一个问题,因为 X Window不适合于实时控制系统,并且当时X Window系统的本地化也不尽人意。因此,项目组决定自己开发一套图形用户界面支持系统。这就是MiniGUI产生的背景。
---- 显然,MiniGUI一开始就针对实时系统而设计,在设计之初就考虑到了小巧、高性能和高效率。因此,MiniGUI 是一个非常适合于工业控制实时系统以及嵌入式系统的可定制的、小巧的图形用户界面支持系统。它的主要特色有:
遵循LGPL条款的纯自由软件。
提供了完备的多窗口机制。这包括:
多个单独线程中运行的多窗口。
单个线程中主窗口的附属。
对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。
消息传递机制。
多字符集和多字体支持,目前支持ISO8859-1、GB2312、Big5等字符集,并且支持各种光栅字体和 TrueType、Type 1等矢量字体。
全拼、五笔等汉字输入法支持。
BMP、GIF、JPEG、PCX、TGA 等常见图像文件的支持。
Windows的资源文件支持,如位图、图标、光标等。
插入符、定时器、加速键等。
其他(Beep、ETC/INI文件操作等)。
小巧。包含全部功能的库文件大小为300KB左右。
可配置。可根据项目需求进行定制配置和编译。
高稳定性和高性能。MiniGUI已经在Linux发行版安装程序、CNC系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。
可移植性好。目前,MiniGUI可以在X Window和Linux控制台上运行。中科院EEOS开发组已经成功地将 MiniGUI移植到了他们的POSIX兼容系统上。蓝点软件(北京)研发中心也已经成功地将MiniGUI移植到了两款基于StrongARM的嵌入式系统上。
如何获得 MiniGU
----如果您对MiniGUI感兴趣,可参考如下站点获得详细信息:
----http:/www.minigui.org
----您也可以从如下站点下载最新的MiniGUI完整源代码及资源文件:
----ftp:/ftp.minigui.org/pub/minigui
----如果您在利用MiniGUI进行开发的过程中遇到困难,请订阅邮件列表。提问、解答或者发表您的高见:
----订阅:minigui-devel-subscribe@egroups.com
---- E-mail:minigui-devel@egroups.com
----了解了这么多MiniGUI的特色,让我们再来看看建立在MiniGUI之上的典型应用。
HappyLinux安装程序
HappyLinux是由联想公司开发的 Linux简体中文发行版。安装程序基于 MiniGUI开发。其源代码在Red Hat Linux 6.0安装程序的基础上移植而来。在该安装程序中,增加了其他一些特色,更加适合普通用户,比如在线帮助。
ehome 是由蓝点软件公司开发的采用Web技术进行小区网上购物、物业管理的智能家居设备。其客户端实际是一个 Web浏览器。
整装待发
----属于自由软件,几乎以免费方式就可以获得的Linux,其商业价值到底在哪里?换句话说,到底什么样的系统最需要Linux?笔者认为下面三种系统最应该使用Linux:
安全相关的系统 这些系统应该使用开放源码的系统,以防止封闭系统留下的各种后门。这包括关键的网络服务器、政府部门和军用服务器、工作站等等。
实时系统 对各种实时性系统来讲,底层的操作系统同样不能建立在黑箱之上。这包括工业控制用的实时系统、各种军用系统等。
嵌入式系统 嵌入式系统是高度定制的系统,对嵌入式系统而言,没有也不应该有通用的系统。为了达到定制,就需要开放操作系统的源码。这也是原先许多Windows CE开发商现在转向Linux的原因。
----因此,实时嵌入式系统正是Linux大显身手的地方。国内外的许多开发商早就看到了这一点,并在嵌入式Linux的开发方面投入了大量的人力和资金。前段时间举行的LinuxWorld China’2000展览会上,就已经出现了许多基于Linux的嵌入式系统。综合说来,以Linux作为操作系统开发嵌入式系统,有如下优势:
Linux的可移植性好,开发工具丰富。每个CPU开发商在发布每一款新的嵌入式CPU时,均会投入大量人力移植Linux内核,并提供丰富的开发工具。
开放源码。Linux内核的源码开放,可大大方便系统的定制开发。
可用资源丰富。在Linux系统上进行开发时,可以获得的源代码等资源比其他封闭系统多得多。
成本低。Linux的低成本特点,可大大降低最终嵌入式系统的成本,并扩大开发商的获利空间。
----综上所述,实时嵌入式Linux系统在自由软件社区和众多开发商的推动下,必将取得长足的发展。同样,作为底层支持的GUI系统来讲,也应该像操作系统一样是开放源码的自由软件,并应该得到开发商的共同推动。到目前为止,已经有多家嵌入式系统开发商采用 MiniGUI开发它们的嵌入式系统,并且已经开发出了许多重要的应用程序。我们期望能够有更多的人加入MiniGUI 的开发,共同推动 MiniGUI成为嵌入式Linux系统上的标准GUI。尽管 MiniGUI目前的功能已经非常强大,并且已经成功应用于许多嵌入式系统,但还需要在如下几个领域进行开发:
建立MiniGUI自己的图形引擎,不再依赖于其他图形函数库,同时扩展MiniGUI的图形接口。这部分的工作已经由一个自由软件开发小组开展。
建立一个C++类库来封装 MiniGUI的API。
建立基于传统进程级Client/Server体系结构的MiniGUI,以便能够让 MiniGUI适合于一些较大的嵌入式系统,比如支持全功能浏览器的机顶盒。
----总之,实时嵌入式Linux系统的前景非常广阔,这一系统上的GUI开发正处于开始阶段,在这个领域,有许多技术难题等待解决。我们相信,在大家的共同推动之下,嵌入式Linux系统以及MiniGUI将得到快速的发展。