嵌入式linux系统开发概述之六----图形用户界面(GUI)

时间:2022-03-31 22:34:19

 

6   图形用户界面(GUI)
    从用户的观点来看,图形用户界面( GUI )是系统的一个最至关重要的方面:用户通过 GUI 与系统进行交互。所以 GUI 应该易于使用并且非常可靠。但它还需要是有内存意识的,以便在内存受限的、微型嵌入式设备上可以无缝执行。所以,它应该是轻量级的,并且能够快速装入。
     另一个要考虑的重要方面涉及许可证问题。一些 GUI 分发版具有允许免费使用的许可证,甚至在一些商业产品中也是如此。另一些许可证要求如果想将 GUI 合并入项目中则要支付版税。
尽管嵌入式系统对GUI的需求越来越明显,但目前 GUI 的实现方法各有不同:
1 .某些大型厂商有能力自己开发满足自身需要的GUI系统; 
2.某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己负责; 
3.采用某些比较成熟的GUI系统,比如XFree86或者其他。
在上述手段中,第2种方法是一种临时解决方案。利用这种手段编写的程序,无法将显示逻辑和数据处理逻辑划分开来,从而导致程序结构不好,不便于调试,并导致大量的代码重复。GUI是一种类似于操作系统的基础软件,这种软件系统应该遵循一定的标准,并且应该是开放源码的*软件,从而可以让开放商集中精力开发自己的应用程序。目前看来,在linux之上进行(实时)嵌入式系统开发的厂商,一般选择如下几种GUI系统:紧缩的XFree86系统(Tiny-X)、MiniGUI、MicroWindows(Nano-X)、OpenGUI、QT/Embedded 等,下面将对这些系统进行简单介绍。
 
6.1  紧缩的XFree86系统(Tiny-X)
     XFree86 Project, Inc. 是一家生产 XFree86 的公司,该产品是一个可以免费重复分发、开放源码的 X Window s 系统。 X Window s 系统( X11 )为应用程序以图形方式进行显示提供了资源,并且它是 UNIX 和类 UNIX 的机器上最常用的窗口系统。它很小但很有效,它运行在为数众多的硬件上,它对网络透明并且有良好的文档说明。 X11 为窗口管理、事件处理、同步和客户机间通信提供强大的功能 — 并且大多数开发人员已经熟悉了它的 API 。它具有对内核帧缓冲区的内置支持,并占用非常少的资源 — 这非常有助于内存相对较少的设备。 X 服务器支持 VGA 和非 VGA 图形卡,它对颜色深度 1 2 4 8 16 32 提供支持,并对渲染提供内置支持。
    它的优点包括:
帧缓冲区体系结构的使用提高了性能 ;
占用的资源相对很小 — 大小在 600K 700K 字节的范围内,这使它很容易在小型设备上运行 ;
非常好的支持:在线有许多文档可用,还有许多专用于 XFree86 开发的邮递列表 ;
X API
非常适合扩展。
它的缺点包括:
比最近出现的嵌入式  GUI  工具性能差。  
此外,当与  GUI  中最新的开发 — 象专门为嵌入式环境设计的  Nano-X   QT/Embedded  — 相比时, XFree86 似乎需要更多的内存。
 
6.2  Microwindows (Nano-X)
    Microwindows   Century Software 的开放源代码项目,设计用于带小型显示单元的微型设备。它有许多针对现代图形视窗环境的功能部件。象X样,有多种平台支持Microwindows
    Microwindows 体系结构是基于客户机/服务器的并且具有分层设计。最底层是屏幕和输入设备驱动程序(关于键盘或鼠标)来与实际硬件交互。在中间层,可移植的图形引擎提供对线的绘制、区域的填充、多边形、裁剪以及颜色模型的支持。在最上层,Microwindows支持两种APIWin32/WinCE API实现,称为Microwindows;另一种APIGDK非常相似,它称为Nano-XNano-X用在linux
上。它是象 X API ,用于占用资源少的应用程序。
    Microwindows 支持 1 2 8bpp (每像素的位数)的 palletized 显示,以及 8162432bpp的真彩色显。Microwindows还支持使它速度更快的帧缓冲区。Nano-X服务器占用的资源大约在100K150K字节。原始Nano-X应用程序的平均大小在30K60K。由于Nano-X是为有内存限制的低端设备设计的,所以它不象X那样支持很多函数,因此它实际上不能作为微型XXfree86)的替代品。
     可以在 Microwindows 上运行 FLNX ,它是针对 Nano-X 而不是 X 进行修改的  FLTK (快速轻巧工具箱 (Fast Light Toolkit) )应用程序开发环境的一个版本。本 章将在后面 描述 FLTK
    Nano-X 
的优点包括:
Xlib 实现不同, Nano-X 仍在每个客户机上同步运行,这意味着一旦发送了客户机请求包,服务器在为另一个客户机提供服务之前一直等待,直到整个包都到达为止。这使服务器代码非常简单,而运行的速度仍非常快
占用很小的资源

    Nano-X 
的缺点包括:
联网功能部件至今没有经过适当地调整(特别是网络透明性)
还没有太多现成的应用程序可用
X 相比, Nano-X 虽然近来正在加速开发,但仍没有那么多文档说明而且没有很好的支持,但这种情形 应该 会有所改变。
 
6.3  OpenGUI
OpenGUI 在linux系统上存在已经很长时间了。最初的名字叫FastGL,只支持 256的线性显存模式。但目前也支持其他显示模式。这个库是用C++编写的,只提供 C++ 接口。
 
6.4  Qt /Embedded
    Qt/Embedded
Trolltech 新开发的用于嵌入式 l inux 的图形用户界面系统。Trolltech最初创建Qt作为跨平台的开发工具用于linux台式机。它支持各种有UNIX特点的系统以及Microsoft WindowsKDE — 最流行的linux 面环境之一,就是用Qt编写的。
    Qt/Embedded 以原始 Qt 为基础,并做了许多出色的调整以适用于嵌入式环境。Qt Embedded通过Qt APIlinux I/O设施直接交互。那些熟悉并已适应了面向对象编程的人员将发现它是一个理想环境。而且,面向对象的体系结构使代码结构化、可重用并且运行快速。与其它GUI相比,QtGUI非常快,并且它没有分层,这使得Qt/Embedded成为用于运行基于Qt的程序的最紧凑环境。
    Trolltech 还推出了 Qt 掌上机环境( Qt Palmtop Environment ,俗称 Qpe)。Qpe提供了一个基本桌面窗口,并且该环境为开发提供了一个易于使用的界面。Qpe包含全套的个人信息管理(Personal Information Management (PIM))应用程序、因特网客户机、实用程序等等。然而,为了将Qt/EmbeddedQpe集成到一个产品中,需要从Trolltech获得商业许可证。(原始Qt自版本 2.2以后就可以根据 GPL 获得 。)
    它的优点包括:
面向对象的体系结构有助于更快地执行 
占用很少的资源,大约 800K
抗锯齿文本和混合视频的象素映射
它的缺点是:
Qt/Embedded Qpe 只能在获得商业许可证的情况下才能使用。
 
6.5  MiniGUI  简介
    MiniGUI 是近几年国人自己开发的一种面向嵌入式系统或者实时系统的图形用户界面支持系统。当初设计的初衷是面向工业领域这类资源存储比较紧张又需要快速响应的场合。它主要运行于linux控制台,实际可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上。MiniGUI刚诞生时是免费的,现在也需要购买商业许可证。
    MiniGUI 的优点包括:
小巧,包含全部功能的库文件大小为300k左右;
运行速度快;
可根据项目需求进行定知和配置。
MiniGUI 的缺点有:
控件制作比较粗糙;
需要商业许可证。
 
6.6   图形化的开发工具FLTK
    FLTK 是一个简单但灵活的 GUI 工具箱,它在 l inux 世界中赢得越来越多的关注,它特别适用于占用资源很少的环境。它提供了您期望 GUI 工具箱中获得的大多数窗口构件,如按钮、对话框、文本框以及出色的“赋值器”选择(用于输入数值的窗口构件)。还包括滑动器、滚动条、刻度盘和其它一些构件。
     针对  Microwindows GUI 引擎的 FLTK  l inux 版本被称为 FLNX FLNX 由两个组件构成: Fl_Widget FLUID Fl_Widget 由所有基本窗口构件 API 组成。 FLUID (快速轻巧的用户界面设计器 (Fast Light User Interface Designer, FLUID) )是用来产生 FLTK 源代码的图形编辑器。总的来说, FLNX 是能用来为嵌入式环境创建应用程序的一个出色的 UI 构建器。
     Fl_Widget 占用的资源大约是 40K 48K ,而 FLUID (包括了每个窗口构件)大约占用 380K 。这些非常小的资源占用率使 Fl_Widget FLUID 在嵌入式开发世界中非常受欢迎。
优点包括:
习惯于在象 Windows 这样已建立得较好的环境中开发基于 GUI 的应用程序的任何人都会非常容易地适应 FLTK 环境 ;
它的文档包括一本十分完整且编写良好的手册 ;
它使用 LGPL 进行分发,所以开发人员可以灵活地发放他们应用程序的许可证 ;
FLTK
是一个 C++ 库( Perl Python 绑定也可用)。面向对象模型的选择是一个好的选择,因为大多数现代 GUI 环境都是面向对象的;这也使将编写的应用程序移植到类似的 API 中变得更容易 ;  
Century Software
的环境提供了几个有用的工具,诸如 ScreenToP ViewML 浏览器。

它的缺点是:
普通的 FLTK 可以与 X Windows API 一同工作,而 FLNX 不能。它与 X 的不兼容性阻碍了它在许多项目中的使用。

    嵌入式 l inux 开发正 如火如荼 迅速 发展着。 作为一个开发者,每天都会接触到各种新鲜的软件的知识,必须不断地从中学习,丰富自己的知识,拓展自己的眼界。在开发过程中,从引导装载程序和分发版到文件系统和GUI的每一个事物的各种选项中作出选择。Linux上的嵌入式开发已经达到了新的境界,并且调整模块以适合您的规范从未比现在更简单。这已经导致出现了许多时新的手持和微型设备作为开放盒,这是件好事 — 因为事实是您不必成为一个专家从这些模块中进行选择来调整您的设备以满足您自己的要求和需要。
    我们希望 以上 对嵌入式 l inux 领域的介绍性概述能激起您进行试验的欲望,并且希望您将体会摆弄微型设备的乐趣以满足您的爱好。就从现在开始。