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)输入
法支持,包括内码、全拼、智能拼音、五笔及自然码等。
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技术白皮书
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)