您的位置首页>企业动态>

嵌入式Linux中的GUI系统的研究与移植

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解嵌入式Linux中的GUI系统的研究与移植问题。序嵌入式图形用户界面为嵌入式系统在特殊

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解嵌入式Linux中的GUI系统的研究与移植问题。

嵌入式图形用户界面为嵌入式系统在特殊场合提供了一个人机交互的界面。嵌入式GUI要求简洁、直观、可靠、资源占用小、响应快,以适应系统有限的硬件资源。此外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具有高度的可移植性和可扩展性,以满足不同的硬件条件和使用要求。一般来说,嵌入式图形用户界面具有以下特点:

*体积小;

*运行时系统资源消耗小;

*上层接口与硬件无关,可移植性高;

*可靠性高;

*在某些应用中应该是实时的。

1.基于嵌入式Linux的图形用户界面系统底层实现基础

一个可以移植到各种硬件平台的嵌入式GUI系统,至少可以抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL(Graphic Abstract Layer)和基于输入设备(如键盘、触摸层等)的输入抽象层IAL(Input Abstract Layer)。).GAL层完成了系统在特定显示硬件设备上的操作,极大地隐藏了不同硬件的技术实现细节,为程序开发者提供了统一的图形化编程界面。IAL层需要实现各种输入设备的控制操作,并提供统一的调用接口。GAL层和IAL层的设计理念可以大大提高嵌入式GUI的可移植性,如图1所示。

目前,嵌入式Linux系统中相对成熟且功能强大的GUI系统底层支持库包括SVGA库、LibGGI、Xwindow、framebuffer等。

两种嵌入式图形用户界面系统的分析与比较

2.1微窗口

微窗口是典型的基于Server/client架构的GUI系统,基本分为三层,如图2所示。

底层是图形显示和键盘、鼠标或触摸屏的驱动程序。提供中间层底层硬件的抽象接口,管理窗口;最高级别提供了分别与X Window和ECMA APIW(Win32子集)兼容的API。使用Nano-X接口的API与X接口兼容,但该接口不提供窗口管理等高级功能,如窗口移动、窗口剪切等。在系统中,首先需要启动nano-X Server程序和窗口管理程序nanowm。用户程序连接到nano-X的服务器,获得自己的窗口绘制操作。使用ECMAAPIW编写的应用程序无需nanox-server和nanowm就可以直接运行。

Microwindows提供了相对完整的图形功能和一些高级功能,例如Alpha混合、3D支持和TrueType字体支持。为了提高运行速度,系统还改进了基于Socket的X实现方式,采用了基于消息机制的Server/Client传输机制。Microwindows也有一些通用的窗口控件,但是它的图形引擎有很多问题,可以总结如下:

*无硬件加速能力;

*图形引擎中有很多低效的算法,比如在弧图函数中逐点判断剪切。

由于缺乏强大的核心代码维护者,在2003年Microwindows推出0.90版本后,这个项目的开发开始停滞不前。

2.2 MiniGUI

MiniGUI是由国内自由软件开发者设计开发的,其目标是为基于Linux的实时嵌入式系统提供一个轻量级的GUI支持系统。MiniGUI的架构如图3所示。

MiniGUI分为GAL层和IAL层的底层,顶层是基于标准POSIX接口中pthread库的Mini线程架构和基于Server/Client的Mini-Lite架构。前者受限于线程模式对整个系统可靠性的影响。——进程中某个线程的意外错误可能会导致整个进程崩溃。这种体系结构适用于系统功能相对简单的情况。Mini-Lite用于多进程应用,多进程运行模式设计的Server/Client架构可以更好地解决各进程间的窗口管理、Z顺序切割等问题。MiniGUI也有一个从Mini-Lite衍生的独立运行模式。与Lite架构不同,独立模式通过最大化窗口一次只能显示一个窗口。这在显示屏尺寸较小的应用中具有一定的应用意义。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。