2023年11月25日发(作者:华为鸿蒙系统)
迷你GUI技术白皮书
1 介绍
1.1 什么是miniGUI
MiniGUI (),是由飞漫软件(Feynman Software)为实时嵌入式系统开
发的一款轻量型图形用户界面支持系统。自1999年第一次授权发布以来,MiniGUI已经被
广泛得运用于掌上终端(手机和电子记事本),机顶盒,工业控制系统,工业设备,便携式
媒体播放器,查询终端等等。
同时,MiniGUI已经成为了一个跨操作系统的图形用户界面(GUI)系统,它可以在
Linux/uClinux,eCos,VxWorks,pSOS,ThreadX,Nucleus,OSE乃至uC/OS-II,以及Windows32
位系统的平台下运行;已经被测试过的硬件平台,包括Inrelx86,ARM
(ARM7/ARM9/StrongARM/xScale), PowerPC,MIPS和M68k(Dragonball/ColdFire)。作为
将MiniGUI带入高端嵌入式市场的基于嵌入式Linux的高端嵌入式设备,MiniGUI v2.0版
为其提供了全部的多任务支持。作为继MiniGUI 2.0 之后最新的版本,MiniGUI 3.0 有着许
多重要的增强,例如单纤双向(BIDI)测试显示支持,透明控制,独立滚动控制,双字节
字体渲染(UPF),点阵字形,以及新的组成部分包括mGUtils,mGPlus。
MiniGUI是“用于嵌入式设备的跨系统图形用户界面支持系统”,以及“嵌入式图形中间件”。
迄今为止,MiniGUI已经被中国最著名的电信设备供应商,中国最大的电视机制造商,即时
分同步码分多址技术(TD-SCDMA)的主要制定者,以及世界上最大的处理器生产商所授
权。MiniGUI已经被以下领域中的主要厂家广泛采购和应用,包括:工业器械,医用设备,
以及军工业。同时,MiniGUI已经被全球的嵌入式设备开发商所公认,并远销至包括北美,
日本,中国台湾和马来西亚等国家和地区。MiniGUI已经成为嵌入式图形中间件的变相工业
标准。值得一提的是,大约百分之60的TD-SCDMA手机网络认证采用了MiniGUI作为他
们的嵌入式图形平台,用于支持如浏览器和电视电话等功能。在这些TD-SCDMA的手机类
型中,包括海信T68和中兴U8等等。TD-SCDMA是一种由中国自主开发的3G通信标准。
飞漫软件(Feynman Software)不仅发布了基于GPL 的MiniGUI的一些版本,而且为商业
1
客户提供了MiniGUI-VAR和其他关键性软件产品。此文件是用于有组织地详细介绍
MiniGUI v3.0 的产品特点和应用领域。
1.2 MiniGUI的起源和演变
自1998年末MiniGUI开始应用以来已经过去了12年。最初,MiniGUI被设计出来为基于
Linux的控制系统提供单纯的人机交互界面;没人预见到MiniGUI会成为一个跨操作系统的
嵌入式GUI系统。幸运的是,MiniGUI自诞生以来被广泛地应用于各种各样的工程项目中,
而实际工程项目中不断发展变化的需求促使MiniGUI逐渐发展成为一款跨操作系统的嵌入
式GUI中间件(middleware)。
1998年12月,飞漫软件(Feynman Software)的创始人魏永明开始研发MiniGUI,并将其
应用于计算机数控(CNC)系统。
2000年3月,联想(Lenovo)采用MiniGUI开发HappyLinux V1.0(一款Linux发行版)的
安装程序。同时,MiniGUI成为了Linux的一个强有力的嵌入式GUI支持系统。
1
GPL是一种被广泛应用的免费软件证书,最初是由Richard Stallman为网络对象模型环境
(GNU)工程所撰写的。详情请访问。
从2000年四月至2002年9月期间,作为一款著名的免费软件,MiniGUI的研究和发布均基
于GPL许可证。
2002年9月,MiniGUI的核心研发人员在北京成立了北京飞漫软件技术有限公司,并开始
了这款免费软件的商业营销。
MiniGUI V1.2.6和MiniGUI V1.3.0分别于2003年3月和2003年9月发布。
2003年10月,MiniGUI被移植到uClinux和eCos操作系统。至此,MiniGUI已经成为了一
款跨操作系统的嵌入式GUI系统。
2004年8月,华为(电信设备供应商的领军企业)采用MiniGUI作为其机顶盒(STB),手
提式设备及其他一些产品的平台。
2004年11月,飞漫软件发布了MGIS解决方案,用于嵌入式地理信息系统的应用。
2005年1月,大唐移动(TD-SCDMA技术标准的开发者)采用MiniGUI作为TD-SCDMA
手机的人机界面解决方案。
2005年3月,MiniGUI的定制版本(MiniGUI-CMR)和MiniGUI的标准版本(MiniGUI-STD)
发布。
2005年5月,飞漫软件和因特尔达成协议,授权飞漫参与开发和生产其一系列的名为“数
字家庭”的产品。
2005年6月,基于VxWorks模拟器的MiniGUI开发环境发布,标志着飞漫和风河系统公司
(WindRiver)的合作。
2005年8月,韩国Systerm Programmer成为飞漫软件产品在韩国的官方代理,这标志着我
们的产品走向国际化进程的一个新阶段。
2005年9月,飞漫软件发布mSpider完全浏览器。同月,飞漫软件发布基于GNU GPL协议
的eDillo V0.4.0浏览器。
2006年1月,飞漫软件发布基于MiniGUI的组件,包括mGp V1.0,mGi V1.0以及mG3d
V1.0。
2006年2月,嵌入式浏览器mSpider V1.6发布。
2006年3月,飞漫软件发布MGDesktop V2. 5。同时,长虹电器有限公司采用MiniGUI和
mSpider开发数字电视和网络电视,表明飞漫软件已经成为了数字电视,网络电视及其相关
领域方案供应商中的领导者。
2006年5月,飞漫软件与风河(Wind River)合作,为Vxworks系统提供了图形解决方案。
2006年6月,飞漫软件与AMD建立战略伙伴关系。AMD将MiniGUI和Fhas(飞漫手持终
端应用套件)作为其设计Argon PMP的参考方案。
2006年6月,飞漫软件集成了MiniGUI与Enea(意大利国家核研究院)的实时操作系统
OSE。MiniGUI可简化运用于手持终端设备、电信设备、医疗设备、机顶盒-工业控制系统
等的图形用户界面的设计和开发。
2006年8月,飞漫软件和Atmel(国际领先的半导体器件供应商)采用MiniGUI作为设计
WiFi芯片人机界面的参考方案,这标志着飞漫软件已成为无线通信及其相关领域解决方案
2
供应商中的龙头企业。
2006年,飞漫软件与国际领先的半导体器件供应商Atmel展开合作。MiniGUI成为了无线
领域在开发人机界面时广泛采用一款芯片,它进一步加强了飞漫软件在全球无线领域中的领
先地位。
2
它采用了飞漫软件的另一款产品:Fhas(飞漫手持终端应用套件)。
2006年11月,台湾英业达电子有限公司采用MiniGUI开发支持Skype可见的IP电话,显
示出飞漫软件在数字媒体领域的高端地位。
2006年12月,ITU香港电信世界,大唐电信发布TD-SCDMA 3G手机软件标准平台,它将
MiniGUI和MiniGUI选配件作为终端应用开发环境。这标志着MiniGUI已经成为
TD-SCDMA标准平台下手机行业的变相标准。
2006年12月,飞漫软件发布嵌入式动画比放弃Player-Seal V1.0。2007年3月,飞漫软件发
布MGDesktop V3.0。2007年7月,飞漫软件发布全功能高端嵌入式浏览器mDolPhin V1.0。
2008年2月,飞漫发布GDesktop V4.0。2008年6月,飞漫发布mDolphin V2.0。
目前,MiniGUI V2.0.4/1.6.。10 支持的系统包括:
Linux/uClinux,eCos,uC/os-II,VxWorks,pSOS,ThreadX,Nucleus,OSE以及Win32平台。最新发
布的MiniGUI版本为3.0,它支持Linux/uCliux系统。飞漫软件在将免费软件进行商业营销
的道路上已经迈出了通向成功的关键性步骤。
3
1.3 MiniGUI的典型应用领域
从最早的数控系统到目前流星的智能手持式设备,MiniGUI已经被应用于诸多产品。
MiniGUI应用的主要领域可可分为下面几块:
手持设备(包括2.5G/3G手机,智能手机,多功能手机,WiFi手机,便携式媒体
播放器,个人数字助理)
图1.1左侧显示了一个由大唐移动通信设备制造有限公司(中国移动通信领域的
龙头企业)发布的名为Arena(舞台)的TD-SCDMA 3G手机终端软件标准平台。
Arena使用Threadx操作系统,并采用MiniGUI和Phas(一个应用程序扩展平台)
作为图形系统和应用扩展平台。右侧显示的是一部由台湾英业达公司研发的支持
SKYPE的IP可视电话,它采用了MiniGUI作为其图形系统。
图1.1 MiniGUI的典型应用:只能掌上设备
数字媒体设备和机顶盒
图1.2显示了由飞漫软件开发的基于MiniGUI的机顶盒网页浏览器以及法律相关
信息查询终端。
3
MiniGUI V2.0支持多任务操作系统,如Linux;MiniGUI V1.6 支持传统的多任务或多线程
实时嵌入式操作系统。
图1.2 MiniGUI的典型应用:数字媒体设备和机顶盒
工业仪表与控制系统
图1.3描述了一些基于Linux系统和MiniGUI的工业仪表和控制系统。
图1.3 MiniGUI的典型应用:工业仪表与控制系统
4 MiniGUI的软件构架
4.1 MiniGUI的软件构架
为什么MiniGUI能在众多嵌入式系统中良好运行呢?究其原因是由于MiniGUI拥有一个良
好的软件构架。MiniGUI通过软件抽象层(也称为便携式层)将应用层和系统层分开。图
4.1说明了MiniGUI和实时操作系统之间的关系。基于MiniGUI的应用通过调用一个叫做
APIs的标准C语言函数库和MiniGUI函数库来实现其功能,以及系统功能的接口和驱动程
序。MiniGUI的图形抽象层和输入抽象层隐藏了底层的硬件和操作系统的细节,所以应用程
序不需要顾及到输入输出设备。此外,MiniGUI独特的运行时间模式为其在不同的操作系统
下运行提供了便利。
从下面的图片,我们可以发现,从底层到顶层,MiniGUI可以分成如下几个模块:
图形抽象层,GAL。GAL将不同设备和系统的图形界面抽象画,为MiniGUI的下
层提供统一的图形界面。GAL的软件模块包括针对Linux系统的FB设备和eCos
系统的LCD设备等。这个软件模块通过呼叫下层设备接口来实现GAL的具体操
作,例如开启和关闭设备,设置分辨率和显示模式。我们把这个适用于GAL界面
的软件模块比作设备驱动系统的引擎。
输入抽象层,IAL。和GAL一样,IAL将所有输入设备抽象化,例如键盘,按键,
鼠标,触摸屏,从而为上层提供统一的界面。为了支持键盘,触摸屏和鼠标,用
户需要实现向这些IAL层的设备输入电源。通过IAL和IAL层的电源,MiniGUI
可以支持例如操纵台(键盘和鼠标)、触摸屏、远程控制器和按键等的输入设备。
图形抽象接口,GDI。GDI是在GAL的基础上为具体的应用提供图形界面,例如
曲线绘制、文本输出、矩形填充等等。GDI也包括其他独立的综合模块,例如字
体和编码、图像等等。
信息处理模块。该模块建立在IAL的基础之上。它实现了信息处理过程的机理,
并向应用程序提供完整的信息管理界面。众所周知,几乎所有的GUI系统都是由
事件驱动的。系统和应用程序的运行都是基于信息管理模块的。
多窗口模块和控制/组件模块。在GDI和信息处理模块的基础上,MiniGUI实现了
多窗口进程模块和控制/组件模块。这个模块为创建主要窗口和控制提供基本界面,
并管理控制类。控制类是重用代码控制中的一个重要概念。通过使用控制类,用
户可以创建一些列的控制类实例。所有这些实例都使用控制类中的相同代码。通
过这个途径,我们获得了对于C++的类和实例的一个相似的概念,并能最大限度
地重用现有代码,提高软件的可维护性。MiniGUI控制模块已经实现了常用的控制,
外观和感觉。这个模块由MiniGUI V3.0通过接口提供给应用程序,可用来定制
如静态,按钮,编辑框,列表框,下拉框等等。
MiniGUI窗口及控件渲染。在以前的版本中,主窗口和控制风格还没有被提出来形
成一个独立的模块,但我们仍然可以通过MiniGUI的配置选项让主窗口和控件有
三种不同的表现形式。这三种显示风格分别是PC样式的三维风格(PC3D),平面
风格(FLAT)和流行风格(FASHION)。在MiniGUI 3.0版本,主要窗口和控件的
外观可以完全由用户定制。当创建主要窗口和控件时,用户可以通过指定不同的
渲染名称使它们具有不同的外观。
以上各模块组成了MiniGUI的核心。基于MiniGUI的界面,它为应用程序提
供了多种组件。这些组件包括mGi,mGp,mG3d,mGUtils,mGplus。这些组件为
应用程序提供了额外的功能。我们将详细介绍这些组件。
4.2 MiniGUI的运行时模式
不同于类似Linux这样的通用操作系统,传统的嵌入式操作系统有其独特的一
面。例如,uClinux,uC/OS-II,eCos以及VxWorks通常运行在无内存,没有独立
地址空间,只包含线程和任务的CPU下。因此,我们需要将MiniGUI配置和编译
成分别适用于三种操作系统的三种运行时模式:
MiniGUI-Threads(多线程):一个程序在MiniGUI-Threads上运行时
可以在不同的线程下创建多个级联的窗口,而所有这些窗口都属于同一
个进程或者在同一个存储地址空间内运行。MiniGUI-Threads适用于大
部分传统播放系统,
VxWorks,ThreadX,Nucleus,OSE,pSOS,uC/OS-II,eCos等等。当然,
MiniGUI也可以在此模式下运行在Linux/uClinux系统上。
MiniGUI-Processes
4
(多任务):与MiniGUI-Threads相反,一个程序
在MiniGUI-Processes下运行时是一个独立的过程,这一过程也可以创
建多个窗口。MiniGUI也实现了多任务窗口系统。MiniGUI-Processes
适用于全功能的类Unix操作系统,例如Linux。这种模式在MiniGUI
V2.0版本就已经提出,在MiniGUI V3.0版本得到进一步加强。该模式
的细节将在下面展示。
MiniGUI-Standalone
5
(独立):在此模式下,MiniGUI以单任务方式运
行,不需要多线程和多任务支持。这种模式适用于同时只支持一种功能
的简单应用环境。例如,某些产品处于某种原因使用缺乏多线程的
uClinux作为它们的操作系统。在这种情况下,你可以用这个模式来进
行应用程序的开发。
理论上,在MiniGUI-Standalone模式下,MiniGUI几乎可以运行在所有操作系
统上。MiniGUI-Threads则更适合实时操作系统(它提供了多任务支持)或者是
全功能的类Unix通用操作系统,例如Linux,UNIX。而MiniGUI-Processes模
式下,MiniGUI则只能在像Linux这样的类UNIX操作系统上。
无论使用哪种模式,MiniGUI都为应用程序提供了最大程度的兼容性;只有少数
几个初始化界面在不同运行时模式下存在区别。
4
在MiniGUI V2.0之前这个运行时模式被称为“MiniGUI-Lite”.MiniGUI-Lite
为Linux系统下的多任务环境提供了一个折衷方案,但不能解决不同进程的窗口
重叠的问题。MiniGUI V2.0版本的MiniGUI-Processes运行时模式为多任务环
境提供了全功能视窗解决方案。
5
目前,我们只为Linux/uClinux操作系统提供MiniGUI-Standalone运行时模式。
4.2.1 MiniGUI-Processes运行时模式
MiniGUI-Processes是MiniGUI-Lite的继承者。它为多任务嵌入式操作系统提
供了全功能支持,例如Linux。MiniGUI V1.6提供的MiniGUI-Lite运行时模式
以及更早的版本是针对Linux系统的多任务环境而设计的;我们可以在有效的客
户端/服务器体系的基础上运行多个客户端进程,并利用其优越的功能,如地址
空间保护。通过MiniGUI-Lite运行时模式,基于MiniGUI的嵌入式系统的灵活
性、稳定性和扩展性将大大提高。例如,我们可以在MiniGUI-Lite下运行多个
MiniGUI客户端进程,如果一个进程异常中止了,其它进程仍能正常运行。此外,
在MiniGUI-Lite下我们能非常方便地应用第三方软件。事实上,这就是为什么
大多数嵌入式设备开发人员使用Linux作为它们的操作系统。
虽然MiniGUI-Lite运行时模式支持多任务,但它却不能同时管理由不同进程创
建的窗口。因此,MiniGUI-Lite用层来区分不同进程的窗口。该方法适用于大
部分采用低分辨率显示屏的嵌入式设备,但给应用程序的开发带来了一些困难。
MiniGUI V2.0.x彻底解决了这个问题。在MiniGUI-Lite模式下,MiniGUI V2.0.x
实现了完整多任务环境下的视窗系统,该系统下,隶属于不同进程的不同窗口可
以在桌面上同时显示。MiniGUI V3.0.x不仅完全继承了MiniGUI V2.0.x版本的
MiniGUI-Processes模式,而且使用户可以在桌面上自定义图标以及在桌面上显
示事件响应。因此,用户可以很方便地定制桌面。图4.2给出了MiniGUI V1.6
的MiniGUI-Lite运行时模式和MiniGUI V3.0.x的MiniGUI-Processes运行时模
式的截图。
发布者:admin,转转请注明出处:http://www.yc00.com/num/1700925813a1037193.html
评论列表(0条)