侵权投诉
订阅
纠错
加入自媒体

Mini GUI在嵌入式Linux下的移植方法与过程

2013-11-01 10:43
黯影冰风
关注

  近几年,嵌入式 Linux 系统已得到广泛的应用,相应的图形用户界面的开发也日趋重要,MiniGUI正是其中的一个轻量级的图形用户界面支持系统。本文分析了嵌入式操作系统下图形用户界面MiniGUI 的结构和特点,描述了将MiniGUI在ARM Linux下的移植方法与过程,并对这种基于MiniGUI的嵌入式系统开发做了展望。

  0前言

  近年来随着嵌入式设备与市场需求的广泛结合,手机、PDA等产品的应用对可视化操作界面的简洁和方便提出了更高的要求,这都需要一个稳定可靠的高性能GUI系统来提供支持。图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地方便了非专业用户的使用,人们可以通过窗口、菜单方便地进行操作。嵌入式系统对GUI的基本要求包括有轻型、占用资源少、高性能、高可靠性以及可配置等。MiniGUI是目前比较常用的几种GUI系统之一,与其他的GUI相比,MiniGUI最显着的特点就是轻型、占用资源少,而且在这几年的发展里,MiniGUI已经非常成熟和稳定了,在许多产品和项目中都已得到了实际应用。

  1 MiniGUI的特点和体系结构

  1. 1 MiniGUI的特点

  MiniGUI是由原清华大学教师魏永明主持开发的轻量级图形系统,是一种面向嵌入式或实时系统的图形用户界面支持系统。它遵循GPL公约,是基于SVGALib及LinuxThread库的多窗口GUI支持系统。能跨多种操作系统,主要运行于linux及一切具有POSIX线程支持的POSIX兼容系统,包括普通嵌入式Linux、eCos、uC/OS-II、VxWorks等系统,是国内最早的自由软件之一。

  MiniGUI的主要特点有:(1) 遵循GPL条款的纯自由软件;(2) 提供了完备的多窗口机制;(3) 多字符集和多字体支持,目前支持ISO8859-1、GB2312及Big5等字符集,并且支持各种光栅字体和TrueType、Type1等矢量字体;(4) 全拼和五笔等汉字输入法支持;(5) BMP、GIF、JPEG及PCX等常见图像文件的支持;(6) Windows的资源文件支持,如位图、图标、光标、插入符、定时器及加速键等;(7) 可移植性好。

  1.2 MiniGUI的体系结构

  1.2.1多线程的分层设计

  从整体结构上看,MiniGUI是分层设计的,结构如图1所示。在最底层,GAL(图形抽象层)和IAL(输入抽象层)及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口,而Pthread用于提供内核级线程支持的C函数库。利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序的开发和调试变得更加容易。

  MiniGUI本身运行在多线程模式下,它的许多模块都以单独的线程运行,同时,MiniGUI还利用线程来支持多窗口。从本质上讲,每个线程有一个消息队列,消息队列是实现线程数据交换和同步的关键数据结构。一个线程向消息队列中发送消息,而另一个线程从这个消息队列中获取消息,同一个线程中创建的窗口可共享同一个消息队列。一个线程向消息队列中发送消息,而另一个线程从这个消息队列中获取消息,同一个线程中创建的窗口可共享同一个消息队列。利用消息队列和多线程之间的同步机制,可以实现下面要讲到的微客户/服务器机制。

Mini GUI在嵌入式Linux下的移植方法与过程

图1 MiniGUI的层次结构

  1.2.2微客户/服务器结构

  在多线程环境中,与多进程间的通讯机制类似,线程之间也有交互和同步的需求。比如, 用来管理窗口的线程维持全局的窗口列表, 而其他线程不能直接修改这些全局的数据结构, 而必须依据“先来先服务”的原则,依次处理每个线程的请求,这就是一般性的客户/服务器模式。MiniGUI利用线程之间的同步操作实现了客户线程和服务器线程之间的微客户/服务器机制。

1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号