• 欢迎来到 - 我就爱电子网 - http://www.592dz.com !
您的位置:> 我就爱电子网电子文章嵌入式系统MiniGUI 的软件架构 -- 正文
正文

MiniGUI 的软件架构

[10-21 14:57:44]   来源:http://www.592dz.com  嵌入式系统   阅读:9598

 

概要:inux 这样的类 UNIX 操作系统相比,一般意义上的传统嵌入式操作系统具有一些特殊性。举例而言,诸如 uClinux、uC/OS-II、eCos 等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上;这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,MiniGUI 的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,我们可将MiniGUI 配置成三种不同的运行模式:􀂄 MiniGUI-Threads。运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。这种运行模式主要用来支持大多数传统意义上的嵌入式操作系统,比如 VxWorks、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos等等。当然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。􀂄 MiniGUI-Processes5。和 MiniGUI-Threads 相反,MiniGUI-Processes 上的每个程序是单独的进程,每个进程也可以建立多个窗口,并且实现了多进程窗口系统。Mini

MiniGUI 的软件架构,http://www.592dz.com

MiniGUI 的软件架构

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

图 4.1 MiniGUI 和嵌入式操作系统的关系
另外,MiniGUI 特有的运行模式概念,也为跨操作系统的支持提供了便利。
4.2 MiniGUI 运行模式
如前所述,和 Linux 这样的类 UNIX 操作系统相比,一般意义上的传统嵌入式操作系统具有一些
特殊性。举例而言,诸如 uClinux、uC/OS-II、eCos 等操作系统,通常运行在没有 MMU(内存管理单元,用于提供虚拟内存支持)的 CPU 上;这时,往往就没有进程的概念,而只有线程或者任务的概念,这样,MiniGUI 的运行环境也就大相径庭。因此,为了适合不同的操作系统环境,我们可将MiniGUI 配置成三种不同的运行模式:
􀂄 MiniGUI-Threads。运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,
但所有的窗口在一个进程或者地址空间中运行。这种运行模式主要用来支持大多数传统意义上
的嵌入式操作系统,比如 VxWorks、ThreadX、Nucleus、OSE、pSOS、uC/OS-II、eCos
等等。当然,在 Linux 和 uClinux 上,MiniGUI 也能以 MiniGUI-Threads 的模式运行。
􀂄 MiniGUI-Processes5。和 MiniGUI-Threads 相反,MiniGUI-Processes 上的每个程序是单独的进程,每个进程也可以建立多个窗口,并且实现了多进程窗口系统。MiniGUI-Processes 适合于具有完整 UNIX 特性的嵌入式操作系统,比如嵌入式 Linux。该运行模式在 MiniGUI
V2.0.x 中提供,有关该模式的详细介绍将在下面阐述。
􀂄 MiniGUI-Standalone。这种运行模式下,MiniGUI 可以以独立任务的方式运行,既不需要多线
程也不需要多进程的支持,这种运行模式适合功能单一的应用场合。比如在一些使用 uClinux
的嵌入式产品中,因为各种原因而缺少线程支持,这时,就可以使用 MiniGUI-Standalone 来
开发应用软件。
一般而言, MiniGUI-Standalone 模式的适应面最广, 可以支持几乎所有的操作系统6 ;
MiniGUI-Threads 模式的适用面次之,可运行在支持多任务的实时嵌入式操作系统,或者具备完整
UNIX 特性的普通操作系统;MiniGUI-Processes 模式的适用面较小,它仅适合于具备完整 UNIX 特性的嵌入式操作系统,比如 Linux。
但不论采用哪种运行模式,MiniGUI 为上层应用软件提供了最大程度上的一致性;只有少数几个
涉及初始化的接口在不同运行模式上有所不同。
4.2.1 MiniGUI-Processes 运行模式
MiniGUI-Processes 运行模式是 MiniGUI V2.0.x 在 MiniGUI-Lite 运行模式基础上为具有多进程
支持的嵌入式操作系统提供的。MiniGUI V1.6.x 及以前版本为具有多进程特性的 Linux 操作系统提供MiniGUI-Lite 运行模式,使之在高效的客户/服务器架构之上运行多个客户进程,从而充分利用进程地址空间保护这样的高级特性,有了这样的特性,可大大提高基于 MiniGUI 的嵌入式系统的灵活性、稳定性以及可扩展性。比如,我们可以在 MiniGUI-Lite 上运行多个 MiniGUI 客户进程,而单个进程的异常退出,不会影响其他的 MiniGUI 客户进程。而且在这种架构之上,我们可以非常方便地集成第三方应用程序。其实,这也是许多嵌入式设备开发商采用 Linux 操作系统的重要理由。
但是,MiniGUI-Lite 运行模式虽然提供了多进程支持,但无法同时管理来自不同进程间的窗口,
因此,MiniGUI-Lite 用层的概念将不同的进程之间的窗口区分开来。这种实现方法虽然可适用于大多数屏幕分辨率较小的嵌入式设备,但仍然给应用程序的开发带来了不便。
MiniGUI V2.0 则彻底解决了上述问题。MiniGUI V2.0 在 MiniGUI-Lite 运行模式基础上,实现了
完整的多进程环境中的窗口系统,来自不同进程的窗口可以在同一桌面上协调存在。图 4.2 给出了
MiniGUI V1.6.x 的 MiniGUI-Lite 运行模式及 MiniGUI 2.0.x 的 MiniGUI-Processes 运行模式在运行相同应用程序情况下的界面效果。

图 4.2 MiniGUI V1.6.x 的 MiniGUI-Lite 运行模式及 MiniGUI 2.0.x 的 MiniGUI-Processes 运行模式图 4.2 中,第一个屏幕运行了 vcongui 和推箱子游戏这两个客户进程。可以看到,我们在运行推箱子程序之后,就看不到 vcongui 程序了;第二个屏幕运行 vcongui、picview 和推箱子游戏这三个客户进程,但我们可在桌面上看到所有的客户进程窗口。
相比 MiniGUI-Lite,MiniGUI-Processes 运行模式具有明显的优势。这使得 MiniGUI 不仅可适用
于传统的嵌入式操作系统(MiniGUI-Threads),还可适用于具有多进程特性的嵌入式操作系统,比如Linux 操作系统。另外,MiniGUI-Processes 也保留了 MiniGUI-Lite 的层概念,用户可以将来自不同客户进程的窗口放到不同的层中,从而实现类似 X Window 那样的工作区。有了 MiniGUI-Processes运行模式,MiniGUI 的应用领域将进一步扩大,不仅可用于高端的嵌入式设备,还可能用于桌面环境。

[1] [2]  下一页


标签:嵌入式系统嵌入式系统开发大全,嵌入式开发嵌入式系统
《MiniGUI 的软件架构》相关文章