MiniGUI 的技术特点

嵌入式操作系统

57人已加入

描述

MiniGUI 的技术特点
MiniGUI 为实时嵌入式操作系统提供了非常完善的图形(Graphics)及用户界面(UI,User
Interface)支持。MiniGUI 本身的可移植性设计,使得不论在哪个硬件平台、哪种操作系统上运行,MiniGUI 均能为上层应用程序提供一致的应用程序编程接口(API)。
首先,MiniGUI 是一个根据嵌入式系统应用特点量身定做的完整的图形支持系统。作为操作系统
和应用程序之间的中间件,MiniGUI 将底层操作系统及硬件平台差别隐藏了起来,并对上层应用程序
提供了一致的功能特性,这些功能特性主要包括:
1) 跨操作系统支持,具体包括普通嵌入式 Linux/uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE 等,同时还提供 Win32 平台上的 SDK 开发包,方便嵌入式应用程序的开发和调试。
2) 多运行模式支持,为了适应不同的操作系统运行环境,MiniGUI 可配置成三种运行模式:
MiniGUI-Threads、MiniGUI-Processes4 及 MiniGUI-Standalone。
3) 内建资源支持。我们可以将 MiniGUI 所使用的资源,诸如位图、图标和字体等编译到函数库
中,该特性可提高 MiniGUI 的初始化速度,并且非常适合 eCos/uCOS-II/ThreadX 等无文件
系统支持的实时嵌入式操作系统。
4) 完备的多窗口机制和消息传递机制。
5) 提供常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、菜单按钮、
进度条、滑块、属性页、工具栏、树型控件、月历控件、旋钮控件、酷工具栏、网格控件、动
画控件等。
6) 对话框和消息框支持。
7) 其它 GUI 元素,包括菜单、加速键、插入符、定时器等。
8) 界面皮肤支持。用户可通过皮肤支持获得华丽的图形界面。
9) 支持低端显示设备(比如单色 LCD)和高端显示设备(8 位色及以上显示设备)。通过 MiniGUI
的图形抽象层及图形引擎技术,还可以支持特殊的显示设备,比如 YUV 显示设备。
10) 提供有增强 GDI 函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形以及区域填充等
函数。在提供有兼容于 C99 规范的数学库平台上,还提供有高级二维绘图函数,可设置线宽、
线型以及填充模式等。通过 MiniGUI 的图形抽象层及图形引擎技术,我们也可以让上述高级
GDI 接口在低端显示屏上实现。
11) Windows 的资源文件支持,如位图、图标、光标等。
12) 各种流行图像文件的支持,包括 Windows BMP、GIF、JPEG、PNG 等(JPEG 及 PNG 的
支持通过 libjpeg 及 libpng 函数库提供)。
13) 多字符集和多字体支持,目前支持 ISO8859-1~ISO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE(UTF-8、UTF-16 编码)等字符集,支持等宽点阵字体、变宽点阵字体、Qt/Embedded 使用的嵌入式字体 QPF、TrueType 以及
Adobe Type1 等矢量字体(TrueType 及 Type1 的支持分别通过 freetype 1.3 及 libt1 函数
库提供)。同时,对于点阵字体 MiniGUI 也可以进行自动放大处理,并可针对电视等特殊显
示设备实现防锯齿功能。

14) 多种键盘布局的支持。MiniGUI 除支持常见的美式 PC 键盘布局之外,还支持法语、德语等
西欧语种的键盘布局。
15) 输入法支持,用于提供各种可能的输入形式;内建有适合 PC 平台的汉字(GB2312)输入
法支持,包括内码、全拼、智能拼音、五笔及自然码等。
16) 针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。
17) 副屏支持。当系统中有多个视频设备时,可将一个作为MiniGUI 的主屏,实现完整的多窗口
系统;而其它设备作为副屏,在其上通过MiniGUI 的图形接口来实现文字渲染、图形显示等
功能。
其次,在 MiniGUI 近九年的发展过程中,有许多值得一提的技术创新点。正是由于这些技术上的
创新,才使得 MiniGUI 更加适合实时嵌入式系统,而且也使得 MiniGUI 的灵活性非常好,可以应用
在包括手持设备、机顶盒、游戏终端等等在内的各种高端或低端的嵌入式系统当中。这些技术创新包括:
1) 图形和输入抽象层。图形和输入抽象层对顶层 API 基本没有影响,但大大方便了 MiniGUI 自
身以及应用程序的移植、调试等工作。MiniGUI 现在已经被证明能够在基于 i386、ARM(包
括 StrongARM、xScale 等)、MIPS、PowerPC,以及低端的 DragonBall、ColdFire 等 CPU
的嵌入式系统上流畅运行。利用图形和输入抽象层,我们还可以实现基于软件结构的引擎。比
如模拟现实输入的 random 输入引擎,通过它,我们可以完成应用程序的自动测试。再比如,
我们可以通过 Shadow 图形引擎支持 YUV 输出设备、提供对无法直接访问显示帧缓冲区的
图形芯片的支持、提供对低于 8 位色显示屏的支持、实现屏幕旋转功能等等。
2) 多字体和多字符集支持。这部分通过设备上下文(DC)的逻辑字体(LOGFONT)实现,不
管是字体类型还是字符集,都可以非常方便地进行扩充。利用 DrawText 等函数时,可通过
指定字体而获得对各种字符集的支持,比如 GB2312、GBK、BIG5、EUCKR、ShiftJIS、
UNICODE(UTF-8、UTF-16 编码)等等。这样,在单个 MiniGUI 应用程序中,同时显示多
个不同语种的文字非常容易。MiniGUI 的这种字符集支持不同于通过 UNICODE 内码实现的
传统多字符集支持,这种实现占用资源少,更加适合于嵌入式系统。
3) 针对不同操作系统特点的运行模式。和 Linux 这样的类 UNIX 操作系统相比,一般意义上的
传统嵌入式操作系统具有一些特殊性。举例而言,诸如 uClinux、uC/OS-II、eCos、VxWorks
等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上;
这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,GUI 系统的运行环境也
就大相径庭。因此, 为了适合不同的操作系统环境, 我们可将 MiniGUI 配置成
MiniGUI-Threads、MiniGUI-Processes 及 MiniGUI-Standalone 三种运行模式。
最后,在MiniGUI 2.0.x 的版本中,我们不仅通过 MiniGUI-Processes 运行模式提供了对Linux
等操作系统的多进程环境的完整支持,而且在 MiniGUI 2.0.x 中保留了层的概念,这使得在MiniGUI
下也可以实现类似X Window 的工作区功能,而所占的系统资源却大大低于X Window,完全适合应用在高端嵌入式设备上。
MiniGUI 新版本在图形方面的增强和提高,特别是2.0.x 版本中对多进程的完整支持,将大大扩展
它的应用领域,从而能够对嵌入式操作系统上的多媒体应用、游戏开发等提供更为强大的支持。

MiniGUI技术白皮书

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分