`
nathan09
  • 浏览: 155569 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

MiniGUI 和嵌入式操作系统

 
阅读更多

1 引言

由北京飞漫软件技术有限公司开发的 MiniGUI,是国内为数不多的几大国际知名自由软件之一。MiniGUI 是面向实时嵌入式系统的轻量级图形用户界面支持系统,1999 年初遵循 GPL 条款发布第一个版本以来,已广泛应用于手持信息终端、机顶盒、工业控制系统及工业仪表、彩票机、金融终端等产品和领域。目前,MiniGUI 已成为跨操作系统的图形用户界面支持系统,可在Linux/uClinuxeCosuC/OS-IIVxWorks、等操作系统上运行;已验证的硬件平台包括Intel x86ARMARM7/AMR9 /StrongARM/xScale)、PowerPCMIPSM68KDragonBall/ColdFire)等等。本文将介绍 MiniGUI 以及 MiniGUI 和它支持的各种嵌入式操作系统的关系。

2 MiniGUI 的特点及应用

MiniGUI 为实时嵌入式操作系统提供了非常完善的图形及图形用户界面支持。MiniGUI 本身的可移植性设计,使得不论在哪个硬件平台、哪种操作系统上运行,MiniGUI 均能为上层应用程序提供一致的应用程序编程接口(API)。

2.1 MiniGUI 的功能特色

作为操作系统和应用程序之间的中间件,MiniGUI 将底层操作系统及硬件平台差别隐藏了起来,并对上层应用程序提供了一致的功能特性,这些功能特性包括:

1. 完备的多窗口机制和消息传递机制。

2. 常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、进度条、属性页、工具栏、拖动条、树型控件、月历控件等。

3. 对话框和消息框支持以及其它 GUI 元素,包括菜单、加速键、插入符、定时器等。

4. 界面皮肤支持。用户可通过皮肤支持获得外观非常华丽的图形界面。

5. 通过两种不同的内部软件结构支持低端显示设备(比如单色 LCD)和高端显示设备(比如彩色显示器),前者小巧灵活,而后者在前者的基础上提供了更加强大的图形功能。

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

7. 各种流行图像文件的支持,包括 JPEGGIFPNGTGABMP 等等。

8. 多字符集和多字体支持,目前支持 ISO8859-1ISO8859-15GB2312GBKGB18030BIG5EUC-JPShift-JISEUC-KR UNICODE 等字符集,支持等宽点阵字体、变宽点阵字体、Qt/Embedded 使用的嵌入式字体QPFTrueType 以及 Adobe Type1 等矢量字体。

9. 多种键盘布局的支持。MiniGUI 除支持常见的美式 PC 键盘布局之外,还支持法语、德语等语种的键盘布局。

10. 简体中文(GB2312)输入法支持,包括内码、全拼、智能拼音等。用户还可以从飞漫软件获得五笔、自然码等输入法支持。

11. 针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。

2.2 MiniGUI 的技术优势

和其它针对嵌入式产品的图形系统相比,MiniGUI 具有如下几大技术优势:

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">2.2.1</span></chsdate> 轻型、占用资源少

MiniGUI 本身的占用空间非常小。以嵌入式 Linux 操作系统为例,MiniGUI 的典型存储空间占用情况如下:

* Linux 内核: 300K 500K(由系统决定)

* MniGUI 支持库: 500K 700K(由编译选项确定)

* MniGUI 字体、位图等资源: 400K (由应用程序确定,可缩小到 200K 以内)

* GB2312 输入法码表:200K(不是必需的,由应用程序确定)

* 应用程序: <chmetcnv w:st="on" unitname="m" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0">1M</chmetcnv> <chmetcnv w:st="on" unitname="m" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0">2M</chmetcnv>(由应用程序决定)

总体的系统占有空间应该在 2MB 4MB 左右。在某些系统上,功能完备的 MiniGUI 系统本身所占用的空间可进一步缩小到 1MB 以内。

最新的研发成果表明,MiniGUI 能够在 CPU 主频为 30 MHz,仅有 <chmetcnv w:st="on" unitname="m" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">4M</chmetcnv> RAM 的系统上正常运行(使用 uClinux 操作系统),这是其它针对嵌入式产品的图形系统,比如 MicroWindows 或者 Qt/Embedded 所无法达到的。

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">2.2.2</span></chsdate> 高性能、高可靠性

MiniGUI 良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。在设计之初,我们就充分考虑到了实时嵌入式系统的特点,针对多窗口环境下的图形绘制开展了大量的研究及开发,优化了 MiniGUI 的图形绘制性能及资源占有。MiniGUI 在大量实际系统中的应用,尤其在工业控制系统的应用,证明 MiniGUI 具有非常好的性能。

1999 MiniGUI 的第一个版本发布以来,就有许多产品和项目使用 MiniGUIMiniGUI 本身也不断从这些产品或者项目当中获得发展动力和新的技术需求,不断提高了自身的可靠性和健壮性。

有关 MiniGUI 的最新成功案例,您可以点击此处。

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">2.2.3</span></chsdate> 可配置

为满足嵌入式系统千变万化的需求,必须要求 GUI 系统是可配置的。和 Linux 内核类似,MiniGUI 也实现了大量的编译配置选项,通过这些选项可指定 MiniGUI 库中包括哪些功能而同时不包括哪些功能。大体说来,我可以在如下几个方面对 MiniGUI 进行定制配置:

* MiniGUI 要运行的操作系统,是普通嵌入式 LinuxuClinuxeCos 还是 uC/OS-II 或者 VxWorks

* 生成基于线程的 MiniGUI-Threads 运行模式还是基于进程的 MiniGUI-Lite 运行模式,或者只是最简单的 MiniGUI-Standalone 运行模式。

* 要采用老的 GAL/GDI 接口(低端显示设备)还是新的 GAL/GDI 接口(高端显示设备)。

* 需要支持的 GAL 引擎和 IAL 引擎,以及引擎相关选项。

* 需要支持的字体类型。

* 需要支持的字符集。

* 需要支持的图像文件格式。

* 需要支持的控件类。

* 控件的整体风格,是三维风格、平面风格还是手持终端风格。

这些配置选项大大增强了 MiniGUI 的灵活性,对用户来讲,可针对具体应用需求量体裁衣,生成最适合产品需求系统及软件。

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">2.2.4</span></chsdate> 可伸缩性强

MiniGUI 丰富的功能和可配置特性,使得它既可运行于基于龙珠的低端产品中,亦可运行于基于 ARM9 的高端产品中,并使用 MiniGUI 的高级控件风格及皮肤界面等技术,创建华丽的用户界面。

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-US">2.2.5</span></chsdate> 跨操作系统支持

理论上,MiniGUI 可支持任意一个多任务嵌入式操作系统;实际已支持 Linux/uClinuxeCosuC/OS-IIVxWorks 等嵌入式操作系统。同时,在不同操作系统上的 MiniGUI,提供完全兼容的 API 接口。

总之,MiniGUI 是一个非常适合于实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统。

2.3 MiniGUI 的典型应用

从最初的数控系统到目前流行的智能手持终端设备,MiniGUI 已经在大量产品中得到了应用。MiniGUI 最主要的应用领域大致可分为三类:

l 手机、PDA 类产品。图 1 给出的是采用 eCos 操作系统,基于 MiniGUI 开发的高端智能手机的应用程序界面。

1 MiniGUI 典型应用:智能手持设备

l 媒体及机顶盒类产品。图 2 给出的是基于 MiniGUI 开发的机顶盒浏览器产品(由北京东方创科技术有限公司开发)以及由飞漫软件开发的法律政务查询终端产品。

2 MiniGUI 典型应用:数字媒体和机顶盒

l 仪表及控制系统。图 3 给出的是基于 Linux MiniGUI 操作系统开发的数控系统、工业仪表及医疗仪器的界面。

3 MiniGUI 典型应用:工业仪表及控制系统

3 MiniGUI 和嵌入式操作系统的关系

3.1 基于 MiniGUI 的嵌入式系统软件结构

为什么 MiniGUI 能够在如此众多的嵌入式操作系统上运行?这是因为 MiniGUI 具有良好的软件架构,通过抽象层将 MiniGUI 上层和底层操作系统隔离开来。如图 4 所示,基于 MiniGUI 的应用程序一般通过 ANSI C 库以及 MiniGUI 自身提供的 API 来实现自己的功能;MiniGUI 中的可移植层可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关系底层的硬件平台输出和输入设备。

4 MiniGUI 和嵌入式操作系统的关系

另外,MiniGUI 特有的运行模式概念,也为跨操作系统的支持提供了便利。

3.2 MiniGUI 运行模式

Linux 这样的类 UNIX 操作系统相比,一般意义上的传统嵌入式操作系统具有一些特殊性。举例而言,诸如 uClinuxuC/OS-IIeCosVxWorks 等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上;这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,GUI 系统的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,我们可将 MiniGUI 配置成三种运行模式:

  • MiniGUI-Threads。运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式非常适合于大多数传统意义上的嵌入式操作系统,比如 uC/OS-IIeCosVxWorkspSOS 等等。当然,在 Linux uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。

  • MiniGUI-Lite。和 MiniGUI-Threads相反,MiniGUI-Lite 上的每个程序是单独的进程,每个进程也可以建立多个窗口。MiniGUI-Lite 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux

  • MiniGUI -Standalone。这种运行模式下,MiniGUI 可以以独立进程的方式运行,既不需要多线程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux 的嵌入式产品中,因为各种原因而缺少线程支持,这时,就可以使用 MiniGUI-Standalone 来开发应用软件。

一般而言,MiniGUI-Standalone 模式的适应面最广,可以支持几乎所有的操作系统,甚至包括类似 DOS 这样的操作系统;MiniGUI-Threads 模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整 UNIX 特性的普通操作系统;MiniGUI-Lite 模式的适用面较小,它仅适合于具备完整 UNIX 特性的普通操作系统。

但不论采用哪种运行模式,MiniGUI 为上层应用软件提供了最大程度上的一致性;只有少数几个涉及初始化的接口在不同运行模式上有所不同。

下面我们以 uC/OS-II 操作系统为例,简单介绍 MiniGUI 到该操作系统上的移植。

4 MiniGUI uC/OS-II 操作系统上的移植

uC/OS-IIhttp://www.micrium.com)是一个应用于实时嵌入式应用的开源、实时操作系统内核。因为 uC/OS-II 非常简单,只要有一个普通的 C 编译器,就能完成编译并运行该操作系统,因此,uC/OS-II 首先在教学中得到了广泛应用。因为其简单及实时性好的特点,现在也有一些用户开始使用 uC/OS-II 操作系统开发正式的嵌入式产品。

MiniGUI 移植到 uC/OS-II 是相对复杂的一项工作。因为 uC/OS-II 中缺乏象 malloc/free 甚至是 printf/fprintf/sprintf 这样的接口,不过,最重要的还是缺乏与 POSIX-Threads 兼容的接口。为此,我们编写了 POSIX-Threads 的绕转接口,这些绕转接口兼容于 POSIX-Threads。同时,我们还实现了 malloc/free,以及 printf/sprintf/fprintf 等接口。

因涉及到如此多底层特性的增强和修改,整个系统的调试将是非常困难的。为解决调试问题,我们首先在 SkyEye(清华大学陈渝主持的自由软件项目,http://www.skyeye.org)模拟器上运行 uC/OS-II 操作系统及 MiniGUI for uC/OS-II。我们首先使用了 MiniGUI 内部的 Dummy GAL 引擎和 Dummy/Auto IAL 引擎(这两个引擎分别通过软件方法来模拟实际的输出和输入设备,比如 LCD 显示屏及键盘)来运行 MiniGUI 的应用程序。尽管我们看不到真实的屏幕输出,但从应用程序在运行过程中打印的输出信息,我们可以看到 MiniGUI for uC/OS-II 已经正常工作了。接下来的工作就是将 MiniGUI for uC/OS-II 移植到正式的硬件产品中。

我们在 S<chmetcnv w:st="on" unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">3C</chmetcnv>2410 开发板上用 ADS armcc 编译并测试了 MiniGUI uC/OS-II 版本。这次,我们针对这个开发板编写了正式的图形和输入引擎。MiniGUI 的所有示例程序都可以在这块开发板上正常运行。

MiniGUI for uC/OS-II 版本为 uC/OS-II 用户提供了另外一个很好的 GUI 解决方案。相对 Micrium.com 提供的 uC/GUI 而言,MiniGUI for uC/OS-II 版本能够提供更好的功能和特性。

5 MiniGUI 的未来

通过近两年的自由软件商业化运作,飞漫软件已将 MiniGUI 打造成了一款优秀的跨平台嵌入式中间件软件产品。MiniGUI 的跨操作系统支持、可伸缩性及性能等方面的优势,鲜有同类产品可以媲美。飞漫软件将积蓄力量,为打造嵌入式系统软件领域的国产品牌而努力。近期,我们将在如下方面开展围绕 MiniGUI 的研发工作:

  • MiniGUI 已可在 Linux/uClinuxeCosuC/OS-IIVxWorks 等嵌入式操作系统中运行,还将支持更多的嵌入式操作系统。

  • 所见即所得开发工具。飞漫软件将为 MiniGUI 用户提供界面设计工具,最终提供嵌入式产品的纯软件模拟平台和集成开发环境。

  • 进一步丰富 MiniGUI 开源社区资源。我们将在现有资源基础上建立并维护若干开源项目,比如:嵌入式浏览器、J2SE 移植等。

分享到:
评论

相关推荐

    基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南

    这本书详细介绍了如何在嵌入式环境中利用 Linux 操作系统和 MiniGUI 图形库进行软件开发,为开发者提供了宝贵的实践指导。 Linux 是一款开源、免费的操作系统,其稳定性和可定制性使其成为嵌入式领域的首选平台。...

    基础实验:基于MINIGUI的嵌入式MiniQQ主界面控件设计.doc

    MINIGUI,全称为MicroGUI,是一个轻量级的图形用户界面系统,专为嵌入式设备设计,支持多种操作系统,如Linux、VxWorks等。在这个实验中,我们将学习如何利用MINIGUI设计一个基于嵌入式的MiniQQ主界面,包括静态文本...

    基于Linux和MiniGUI的嵌入式系统软件开发指南

    基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南是指在 Linux 操作系统下使用 MiniGUI 图形用户界面库开发嵌入式系统软件的指南。该指南旨在帮助嵌入式软件开发人员使用 MiniGUI 编写出更好的应用程序,并讲解如何...

    基于MiniGUI和嵌入式Linux的PDA设计与实现.pdf

    《基于MiniGUI和嵌入式Linux的PDA设计与实现》这篇文章主要探讨了如何利用MiniGUI和嵌入式Linux操作系统来设计和实现一款多功能的个人数字助理(PDA)。以下是对文章内容的详细解析: 一、MiniGUI和嵌入式Linux在...

    计算机研究 -基于Linux和MiniGUI的嵌入式计算机系统的研发.pdf

    - **Linux操作系统**:Linux作为开源操作系统,具有高度可定制性和稳定性,非常适合嵌入式系统开发。在本文中,Linux被用作嵌入式计算机的操作系统。 - **MiniGUI图形库**:MiniGUI是一种小型、高效的嵌入式图形...

    基于linux和minigui的嵌入式系统软件开发指南.pdf

    总之,基于Linux和MinigUI的嵌入式系统软件开发涉及了从操作系统选择、图形库集成、开发环境配置、程序编写到部署运行的多个环节。掌握这些知识点,开发者能够构建出适应各种嵌入式设备的高效、易用的图形用户界面...

    基于Linux-MiniGUI的嵌入式系统中键盘输入设备的实现.pdf

    键盘驱动程序是操作系统与硬件之间的桥梁,它接收来自硬件的原始输入信号,转化为操作系统可以理解的数据。在Linux中,设备驱动分为字符设备、块设备和网络设备。字符设备不需缓存,可以直接按字节读写。对于键盘...

    基于MiniGUI的嵌入式媒体播放器的设计与实现

    基于MiniGUI的嵌入式媒体播放器设计与实现,不仅满足了嵌入式系统对多媒体应用的需求,还优化了用户交互体验,体现了嵌入式系统开发的前沿趋势和技术挑战。通过本文介绍的方法,开发者可以构建功能完善、界面友好的...

    基于Linux-MiniGUI嵌入式系统监控管理软件开发.pdf

    随着技术的发展,嵌入式Linux操作系统因其开源、可定制、内核小巧、与Unix系统兼容以及良好的可移植性,已经成为嵌入式系统开发的热门选择。 MiniGUI是一种轻量级的图形用户界面(GUI)系统,适用于资源有限的...

    基于嵌入式 Linux 系统的 MiniGUI 的移植与应用

    开发人员可以在不同的平台上使用接口的模拟器(如wvfb)进行开发和调试,之后将MiniGUI程序加载到嵌入式Linux系统中。MiniGUI的API是平台无关的,因此无论在哪种平台上开发,都使用相同的API。 ##### 2.2 建立交叉...

    基于嵌入式Linux系统的MiniGUI图形界面开发.pdf

    在嵌入式领域,Linux操作系统因其开源、稳定和强大的特性,越来越受到开发者的青睐。而MiniGUI作为一种轻量级的图形用户界面系统,为嵌入式设备提供了高效、低资源消耗的人机交互解决方案。本文主要探讨了在嵌入式...

    MiniGUI图形库在嵌入式Linux平台上的移植与实现.pdf

    MiniGUI的体系结构具有良好的软件架构,能够将MiniGUI上层和底层操作系统隔离开来。MiniGUI中“可移植层”可以将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序则无需关心底层的硬件平台输出和输入设备。 2...

    嵌入式操作系统在喷码机行业的解决方

    综上所述,基于S3C2410 32位微控制器硬件平台和uclinux嵌入式操作系统的喷码机解决方案,不仅克服了传统喷码机存在的局限性,还具备了更高的性能、更多的功能和更好的用户交互体验。未来,随着技术的进步和市场需求...

    miniGUI 嵌入式linux图形编程

    同时,由于miniGUI是开源项目,开发者还可以深入源码,对其进行定制和优化,以更好地适应特定的嵌入式系统。 总之,miniGUI作为嵌入式Linux系统中的图形编程工具,不仅提供了强大的图形功能,还简化了开发流程,是...

    基于嵌入式Linux系统的MiniGUI移植研究.pdf

    MiniGUI(Micro Window Manager for Embedded Systems)是一种专为实时和嵌入式操作系统设计的图形用户界面(GUI)支持系统。它以其小巧的体积、高效的性能、高度可定制性、跨平台和良好的可移植性,在实时嵌入式...

    嵌入式Linux系统miniGUI开发.pdf

    - **跨平台支持**:可以在多种操作系统上运行,如Linux、Windows等。 - **易于集成**:提供简单的API接口,便于与应用程序集成。 - **开源免费**:遵循LGPL协议,对于商业产品来说具有成本优势。 #### MiniGUI的...

Global site tag (gtag.js) - Google Analytics