Embedded 版 (精华区)

发信人: sundream (boliqiu), 信区: Embedded_system
标  题: 嵌入式图形用户界面minigui 
发信站: 哈工大紫丁香 (Thu Dec 20 15:00:53 2001) , 转信

以下的文章是我参考魏永明先生的文章整理的一个东东!介绍给大家,希望有人愿意和我
一起研究。
系统概述 
“MiniGUI 是 Linux 控制台上运行的,基于 SVGALib 和 LinuxThread 库的多窗口图形用
户界面支持系统。MiniGUI 采用了类 Win32 的 API 接口,实现了简化的类 Windows 98 
风格的图形用户界面。 
“MiniGUI的目标是保持现有小巧的特点,在 Linux 控制台上提供一个小的窗口系统支持
,‘小’是MiniGUI的特色。同时MiniGUI又将尽力与微软的Win32 API保持兼容。这么定位
是希望我们的MiniGUI可以在未来以Linux 为基础的应用平台上提供一个简单可行的 GUI 
支持系统,让MiniGUI 可以应用在 Windows CE 可以应用的任何场合。” 
MiniGUI体系结构之一 
体系结构概览 
1基于 PThread 的微客户/服务器结构 
1.1 多线程的分层设计 
从整体结构上看,MiniGUI 是分层设计的,层次结构见图 1。在最底层,GAL 和 IAL 提供
底层图形接口以及鼠标和键盘的驱动;中间层是 MiniGUI 的核心层,其中包括了窗口系统
必不可少的各个模块;最顶层是 API,即编程接口。 

图 1 MiniGUI 的分层设计 
GAL 和 IAL 为 MiniGUI 提供了底层的 Linux 控制台或者 X Window 上的图形接口以及输
入接口,而 Pthread 是用于提供内核级线程支持的 C 函数库。 
1.2 微客户/服务器结构 
在多线程环境中,与多进程间的通讯机制类似,线程之间也有交互和同步的需求。MiniGU
I 利用线程之间的同步操作实现了客户线程和服务器线程之间的微客户/服务器机制,之所
以这样命名,是因为客户和服务器是同一进程中的不同线程。 微客户/服务器机制的核心
实现主要集中在消息队列数据结构上。 
1.3 GAL 和 IAL 
在 MiniGUI 0.3.xx 的开发中,引入了图形和输入抽象层(Graphics and Input Abstrac
t Layer,GAL 和 IAL)的概念。抽象层的概念类似 Linux 内核虚拟文件系统的概念。它
定义了一组不依赖于任何特殊硬件的抽象接口,所有顶层的图形操作和输入处理都建立在
抽象接口之上。而用于实现这一抽象接口的底层代码称为“图形引擎”或“输入引擎”,
类似操作系统中的驱动程序。这实际是一种面向对象的程序结构。利用 GAL 和 IAL,Min
iGUI 可以在许多图形引擎上运行,比如 SVGALib 和 LibGGI,并且可以非常方便地将 Mi
niGUI 移植到其他 POSIX 系统上,只需要根据抽象层接口实现新的图形引擎即可。目前,
已经编写了基于 SVGALib 和 LibGGI 的图形引擎。利用 LibGGI, MiniGUI 应用程序可以
运行在 X Window 上,将大大方便应用程序的调试。目前正在进行的MiniGUI 私有图形引
擎设计开发,通过 MiniGUI 的私有图形引擎,可以最大程度地针对窗口系统对图形引擎进
行优化,最终提高系统的图形性能和效率。 
利用 GAL 和 IAL,大大提高了 MiniGUI 的可移植性,并且使得程序的开发和调试变得更
加容易。可以在 X Window 上开发和调试自己的 MiniGUI 程序,通过重新编译就可以让 
MiniGUI 应用程序运行在特殊的嵌入式硬件平台上。 

1.3 字符集和字体支持 
在成功引入 GAL 和 IAL 之后,MiniGUI又在处理字体和字符集的模块当中引入了逻辑字体
的概念。逻辑字体是 MiniGUI 用来处理文本的顶层接口。逻辑字体接口将各种不同的字体
和字体格式,以及各种不同字符集综合了起来,从而可以通过统一的接口显示不同字符集
的不同字体的文本,并且还可以分析各种字符集文本的组成。 
1.4 在 MiniGUI 2.0 中的考虑 
尽管 MiniGUI 采用多线程机制实现了一个小巧、高效的窗口系统,但有很多理由希望 Mi
niGUI 能够采用多进程机制实现(尽管多进程机制可能带来通讯上的额外开支),MiniGU
I将在接下来的 MiniGUI 2.0 开发中,进行一些体系结构上的调整,其中最为重要的就是
采用进程机制替代线程机制。 



--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 61.167.254.135]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.827毫秒