|
|
|
| MiniGUI 是一种在嵌入式系统中提供图形及图形用户界面支持的中间件技术,国内著名的自由软件项目之一。早期由魏永明主持和开发,现由北京飞漫软件技术有限公司维护并开展后续开发。
为什么要开发 MiniGUI
1998年,当自由软件精神从国外传入中国内地的时候,我正在Windows 98系统上进行痛苦的硬盘整理。我不知道Linux是一个什么东西,只知道应该尽快逃离微软营造的封闭世界。在这样的背景下,我有了尝试其它操作系统的冲动,并且我当时所从事的研究课题也迫使我做出一个选择。
当时,我在清华大学某实验室工作。该实验室正要开发一套工业控制系统——用于新型机床的数控系统。以前,这样的控制系统一般都建立在DOS操作系统之上。但是DOS是一个16位操作系统,不能充分发挥基于奔腾处理器的新硬件平台的功能,因此,我们首先要选择一个新的32位操作系统。
在经过很长时间的调研之后,我们对Linux有了一定的认识。其中最为关键的是,Linux已经有了一个实时的内核补丁,即RT-Linux。利用RT-Linux可以直接处理中断,从而能够让一个普通的Linux系统成为一个健壮的硬实时系统。
但紧接着出现了另一个问题—GUI怎么办。因为Linux上的X-Window也不可避免地庞大和累赘。我们曾经做过一个试验,如果在RT-Linux上启动X-Window,则会导致严重的关键中断延迟;而且,当时它的汉化技术也不很成熟。因此,建立一个轻型的GUI系统,并且具有良好的中文支持是首先要解决的问题。
实际上,这已经不是什么问题了。那时,我已经具备了一定的图形用户界面系统开发经验。早在1995年,就已经开发完成了DOS上一个简单的图形用户界面系统。我将它称为 MiniGUI。在Linux上的SVGALib函数库的帮助下,建立一个类似的图形用户界面支持系统的确是一项并不困难的工作。
MiniGUI的开发历史
DOS上的MiniGUI太简单,功能太有限。我想,Linux上的MiniGUI最起码应该支持多窗口,支持类似X-Window Widget的东西,同时要具有对中文的良好支持。因为我们的目标系统是一个数控系统,功能单一,并且实时要求很高。对比典型的基于进程的客户/服务器体系结构,如果采用线程实现多窗口将节省大量的进程间通信开销。于是我选择了Linux上的多线程机制,而不是X等窗口系统使用的经典客户/服务器体系结构。
有了这样的最初设想,我就开始在一台Pentium 90 PC机上开发新的MiniGUI版本。从 1998年12月开始,最初的MiniGUI大概经历了如下几个开发过程: 搭起MiniGUI的骨架,支持多主窗口,以及基本的图形设备接口;选单和定时器支持,有了控件的支持框架;中文输入法支持;GIF和JPG支持;实现了基本控件;扫雷游戏的克隆;对话框和消息框逻辑;屏幕或窗口快照;2000年1月,VCOnGUI(MiniGUI上的虚拟控制台)稳定版发布;2000年3月,联想HappyLinux 1.0 发行版的安装程序开发完成。至此,MiniGUI已形成了一个完整的图形用户界面支持系统。
现在已经记不清楚什么时候向外界公布 MiniGUI的源代码了。但是,像DOS上的MiniGUI一样,一开始我就选择了公开源代码的方式,并且以GPL的授权条款发布源代码。
在此期间,有许多朋友为MiniGUI贡献了自己的代码,我也得到了许多人的帮助和支持。其中最值得一提的是AKA组织。AKA是清华大学一个致力于中国信息技术发展的学生组织,为了支持自由软件在中国的发展,他们帮助我在SMTH BBS上进行宣传,并且建立了一个主页。而MiniGUI在数控系统和Linux发行版中的成功应用,也进一步鼓励我继续开发和完善MiniGUI。
在这样的背景下,我们将MiniGUI定义为:“MiniGUI是Linux控制台上运行的、基于SVGALib和LinuxThread库的多窗口图形用户界面支持系统。MiniGUI采用了类Windows 32的API接口,实现了简化的类Windows 98风格的图形用户界面。MiniGUI的目标是保持现有小巧的特点。”
很明显,我们希望MiniGUI不仅仅使用在数控系统,也希望能够在其它场合应用,比如目前时兴的信息设备(PDA、掌上电脑等)上。
2000年4月份,我辞去了清华大学的工作,加入蓝点(深圳)软件技术有限公司,并专注于嵌入式系统的开发。后于2001年6月至2002年9月供职于北京中科红旗软件技术有限公司,主管嵌入式事业部的技术工作。在这期间,MiniGUI作为中国为数不多的几个自由软件项目之一,继续以开放源码的形式进行开发。
2000年初到现在,我们重点在如下几个方面对MiniGUI进行了开发:
◆ 通过GNU的Automake和Autoconf接口,实现了大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些功能。这样,用户可以针对自己的系统对MiniGUI进行定制。
◆ 在MiniGUI 0.3.x的开发中,引入了图形和输入抽象层的概念。
◆ 在新的GAL/IAL接口上,实现了基于Linux FrameBuffer驱动程序的GAL和IAL引擎。这部分工作主要是由浙江大学研究生宋立新于2000年下半年完成的。
◆ 在引入GAL和IAL之后,又在处理字体和字符集的模块当中引入了逻辑字体的概念。
◆ 完善现有的窗口机制,进一步增强MiniGUI的窗口处理功能。目前,MiniGUI当中的控件已多达20多种。
◆ 2001年上半年,在MiniGUI中增加了对客户/服务器架构的支持。使得MiniGUI可以多线程模式运行,也可以多进程模式运行。在2001年4月发布了MiniGUI 1.0.0版本。
◆ 2001年下半年,借鉴SDL函数库重新定义MiniGUI的图形抽象层,并实现了许多重要图形功能和接口,将其称之为NEWGDI接口。2002年3月发布了MiniGUI 1.1.0 版本。
◆ 2002年9月,MiniGUI的主要开发者成立了北京飞漫软件技术有限公司,尝试自由软件的商业化运作模式,并于2003年5月发布了MiniGUI 1.2.6 版本;2003年9月发布了MiniGUI 1.3.0版本。
◆ 2003年10月,将MiniGUI移植到了uClinux 和eCos操作系统。
MiniGUI的应用现状
从1998年底到现在,MiniGUI在近五年的发展过程中, 已经被广泛应用于许多项目和产品中,其中包括数控系统、手持信息终端产品、彩票机、DVR 系统、金融终端、KTV 点播系统、POS机等。MiniGUI为嵌入式Linux在国内的应用和推广起到了重要的作用,目前,它已经成为嵌入式Linux系统上与国外同类产品的强有力竞争对手,为国内嵌入式产品开发商提供了性价比极高的替代产品,节约了产品的开发成本,同时为国家节省了大量外汇。
目前,我们正在现有MiniGUI的基础之上,将其移植到Linux之外的其他流行嵌入式操作系统上,包括eCos、uC/OS、VxWorks、pSOS等,为嵌入式产品的开发提供优秀的、商业级跨平台嵌入式图形用户界面支持系统,并开发相应的界面设计和集成开发工具。除此之外,我正在积极探索自由软件的有效商业模式,并取得了初步的成果。
魏永明简历
1995年毕业于清华大学精密仪器系,获机械制造与设计专业工学学士学位和机械制造专业工学硕士学位。毕业后在清华大学精密仪器系任教,负责国内第一台产品化虚拟轴机床数控系统的研发工作,并在该项目中使用 RT-Linux 操作系统开发数控系统。为解决性能问题,开发出专门针对实时嵌入式Linux系统的图形用户界面支持系统—MiniGUI。其“VAMT1Y 虚拟轴机床开发”获1999年教育部科技进步二等奖;参与的课题“JWK-27/28/29型CNC系统开发及商品化研究”获2000年教育部科技进步二等奖。
此外,还著有《Linux实用教程》与《学用Linux与Windows NT》,并主持翻译了《Red Hat Linux奥秘》、《Linux编程宝典》、《Linux设备驱动程序》(第二版)等大批Linux技术著作。
(责任编辑:代君利)j30B0j30B0j30B0 | |
|
|
 |
站内公告 |
|
|
|
|
|
|
.gif) |
栏目导航 |
|
|
|
|
|
|
 |
最新文章 |
|
|
|
|
|
|