`
苳天里的一把火
  • 浏览: 12683 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

分享几种常用的嵌入式Linux GUI及其特点—干货

阅读更多

随着Internet与网络的迅速发展并逐步走进人们的家庭,使消费电子、计算机、通信(3C)一体化趋势日趋明显,嵌入式系统也成为研究与应用的热点。嵌入式实时Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,当然,有眼光的人早已经看出其中的发展和前景。如今随着WAP手机、PDA、机顶盒、及DVD/VCD播放机已经迅速普及,用户对这些手持式设备的GUI提出了更高的要求,希望能看到像PC机才拥有的华丽美观的GUI。GUI已经成为了人与机器沟通的桥梁,嵌入式系统对GUI的需求越来越高,而这一切均要求有一个轻型、占用资源少、高性能、高可靠、可配置及美观的GUI支持。接下来我们就一起来看看:
1 Java的图形界面工具
Java技术对于服务器,个人电脑和嵌入式系统来说是一项伟大的技术。由于其具有跨平台等特性。Java在服务器和桌面电脑方面的应用是非常成功的。然而在GUI方面,Java只用非常有限的一些特征去构建图形用户界面。其思想就是采用平台无关的Java应用程序接口打包到不同的操作系统来开发本地图形用户界面,被称之为抽象的窗口工具(AWT)。仅有普通的部件如文件域、文本区、选择框、单选按钮、列表框和按钮被AWT支持,图形和图像的特性支持非常有限,也就是说,只足够构建简单的applet程序。认识到需要更高级的图形用户界面组件和图形能力,Sun公司开发了Swing,Java 2D,Java3D,图像的输入/输出,以及Java高级图像(JAI)。Swing是用来构建Java图形界面的标准API(应用程序接口),一些AWT类由Swing基础而来。它有一套完全的组件从按钮到文件域、表格、树型和文件编辑器。这些组件不依赖于操作系统本地的部件,而是用原始的图形像直线、矩形、文字画出。这种画代表感观插件,它能够模仿本地的感观。SWT是基于Java开发的,它的设计理念是最大化了操作系统的图形构件的API,就是说只要操作系统提供了相应图形的构件,那么SWT只是简单应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。另外SWT还提供对操作系统本地图形用户界面的直接访问,因此,基于SWT的Java应用程序拥有本地的图形用户界面并且可以和本地别的应用程序和部件集成在一起。使用SWT开发包,简单、跨平台、可靠等这些Jaya语言本身所具有的优点正渐渐融合到图形界面的应用程序开发中去。Java语言的另一扇成功之门正在逐渐打开。



 

2 SWT+GtkFB图形系统的体系结构


2.1 SWT+GtkFB图形系统的体系结构


2.1.1 SWT


SWT处于体系机构的最上层,它与Java内的AwT和Swing同属于设计图形界面所需的高级函数库。而且SWT针对AWT 以及Swing的一些问题作了改善,如今它已发展成一套与作业系统无关的图形元件函数库。在元件的产生方面采用了适当的模拟,在基本的元件方面是采用原有作业系统的,对于较复杂的元件才用仿真的技术。基于SWT的Java应用程序拥有本地的图形用户界面,并且可以和本地别的应用程序,以及部件集成在一起。


SWT是基于Java语言开发出来的高级图形元件库,如图2所示SWT在Java端通过JNI(Java Native InteRFace)技术直接调用native端的GtkFB来使用操作系统的资源,JNI技术使得SWT程序可以与其他语言编写的Native端的代码互相协作,将它们整合在一起;另一方面可使运行在JVM(JAava虚拟机)中的SWT代码调用GtkFB库函数或其他程序;此外利用InvocatiON API,可将Java虚拟机嵌入到native端的应用中。JNI这个接口是双向的,相当于桥梁和纽带,它将SWT代码和native端的GtkFB代码连接起来。


2.1.2 Gtk库


如图1所示,GTK会用到几个连接库,如基本数据类型用的Glib库,它是由基础类、核心应用支持类、实用功能类、数据类和对象系统类五个部分组成的。


Pango是用于国际化文本的布局和显示的全功能框架。Pango可以处理以非从左到右方向排列的文本,并且可以容易地管理复杂语言,甚至还可以处理根据使用环境而采用不同形式的信函。例如它支持双向文本,用户可以将从左到右的文本和从右到左的文本混合编排;还可有用于确定各种复杂文本(如阿拉伯语和泰米尔语)形状的插件。Pango不仅仅是国际化,而且Pango库在Xft和XRender的支持下能很好地处理抗锯齿字体文本的显示。


Pango还支持各种图形格式如libpng,libjpeg,libtiff和Framebuffer port用的FreeType等。实际上GTK提供gdk-pixbuf,gdk和gtk三个连接库,其中Gdk-pixbuf让我们可做相关的图像工作,gdk是窗口绘图系统的抽象层,framebuffer相关的工作大部分在此完成,而gtk则是高层的应用程序接口。


Atk(Accessibility Toolkit)可访问性工具箱。GTK充分利用ATK使残障人士(如视力低下或行动不便)与GTK应用程序交互成为可能。

2.1.3 GtkFB的工作原理

DirectFB访问图形硬件设备依赖于操作系统提供的内核接口,即帧缓冲设备(FrameBuffer)。FrameBuffer实际上是用一块硬件来做显卡和软件之间的桥梁,Linux的内核将其开放出来,使用户的程序可以通过块内存来存取显卡。例如设定显示分辨率和色彩数、存取显示内存区等。不同的Linux需要提供针对不同显示硬件FrameBuffer的驱动程序,这就是说DirectFB需要运行于FramBuffer之上,然而Linux内核提供了常见芯片的FrameBuffer驱动。


当一个应用程序连接到GtkFB时会调用gtk_init(),如图3所示,此时GtkFB 启动Linux的Framebiffer,设定分辨率和色彩数,接下来打开键盘和鼠标等外设(PDA打开按键和触控屏幕).然后到特定目录去读取字型,最后对窗口和事件管理作初始化操作。GtkFB可以支持8、16、24、32bpp的framebuffer。


为了执行一个特定的图形操作,DirectFB芯片驱动程序将访问图形设备内存映射的I/O端口,并且把命令传递到图形设备卡的加速引擎。实际的硬件加速是完全在用户空间内完成的。


2.2 SWT+GtkFB图形系统的优点


2.2.1 内存消耗小、运行速度快特别适合嵌入式产品


由于GtkFB直接运行在FrameBufer之上,跳过X系统,这样省下了X Server这一部分资源,这使得在内存消耗、运行速度上得到显著提高。另外采用的JNI技术使得程序运行速度、事件的响应有较高的提高,能满足时间要求较为严格的实时应用场合。


2.2.2 系统稳定性好


SWT 的稳定性,关键是源于SWT 的设计理念。SWT最大化了操作系统的图形构件API,就是说只要操作系统提供了相应图形的构件,那么SWT只是应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。可以看出SWT性能上的稳定很大程度上取决于相应操作系统图形构件的稳定性。


2.2.3 易于移植和共享


SWT的API和桌面版完全相同,因而代码可以很容易地在桌面和嵌入式设备之间移植与共享。


2.2.4 小巧可配置


SWT采用了LGPL授权方式,用户可以自由地甚至是鼓励修改源代码使其更加满足用户的需求,很容易根据用户的需求来裁减特定的SWT+GtkFB,依据LGPL许可证,用户需要公布修改的源代码,但用户不必公布自给应用程序的源代码。


2.2.5 易于开发


SWT是基于Java语言开发的,具有平台独立性、面向对象、可移植、安全等Java语言所拥有特点。用户可以很容易的基于SWT提供的Widget(构件)开发出满足自己需要的Widget,而且很容易地使用这些Widget去构建应用程序。


3 SWT+GtkFB图形系统的实现


3.1 前期准备


在Linux编译和安装SWT+GtkFB,首先到http://www.gtk.org/download下载如下的包:pkg-config、glib2.x;atk、pango、DirectFB、gtk+2.x。其次到http://www.eclipse.org/download下载swt.tgr.gz。


下一步就是在/home/XXX/目录下创建SWT 和GTK两个目录并且设置环境变量。如下:


export SWT_HOME=/home/XXX/SWTexport SWT_HOME=/home/XXX/GTKexport PKG_CONFIG_PATH=$GTK_HOME /lib/pkgconfigexport LD_LIBRARY_PATH=$GTK_HOME/lib;$LD_LIBRARY_PATH此外增加“/home/XXX/GTK/bin”到系统的环境变量PATH下。


3.2 编译和安装Gtk+2.0


3.2.1 编译和安装pkg-config


tar zxvf glib-2.0.6.tar.gz -C $GTK_HOME/src


cd $GTK HOME/src/glib-2.0.6


。/configure --prefix=$GTK_HOME


make


make inSTall


3.2.2 编译和安装atk


tar zxvf atk-1.0.1.tar.gz -C $GTK_HOME/src


cd $GTK_HOME/src/atk-1.0.1


。/configure --prefix=$GTK_HOME


make


make install


3.2.3 编译和安装pango、Direct FB、gtk+2.0 、swt-forgtk2.2


步骤类似atk的安装。


4 嵌入式Linux GUI的应用前景展望


嵌入式Linux GUI的应用领域很多,既可以用于家电市场,还可以用于商业市场、工业及自动化市场、国防市场、通讯市场等。例如,在通讯市场,手机、可视电话、机顶盒等可能成为嵌入式Linu.x的运行平台,一个人性化的用户界面是赢得消费者关键因素。因此嵌入式Linux图形系统将担任着更加重要的角色。如果你此时已经学习了嵌入式,将会是非常幸运的一件事情。但是你想学确找不到方向没有资源的时候,你也可以私我。相信我也可以给你提供不少的帮助.


未来几年,嵌入式Linux GUI将朝以下方向发展:第一,轻型、占用资源少,不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI之上。第二,高性能、高可靠性,特别是工业实时控制系统,对实时性的要求非常高,并且比起嵌入式系统来说,对GUI的要求也更高。第三,可配置,我们必须清楚的意识到,嵌入式系统是一种定制设备,它们对GUI的需求各不相同,有的系统只要求一些图形功能,而有些系统要求完备的GUI支持,因此,GUI也必须是可定制的。

  • 大小: 24.2 KB
  • 大小: 21.1 KB
  • 大小: 29.1 KB
分享到:
评论

相关推荐

    几种常用的嵌入式LinuxGUI及其特点.pdf

    《几种常用的嵌入式Linux GUI及其特点》 嵌入式Linux GUI在当今信息化时代扮演着至关重要的角色,尤其是在消费电子产品中。随着3C(计算机、通信、消费电子)一体化趋势的发展,嵌入式系统的需求日益增长,而GUI...

    基于qt的嵌入式linux gui研究与实现.doc

    嵌入式 GUI(Graphical User Interface)是嵌入式系统提供的一种应用于特殊场合的人机交互接口(Man-Machine Interface)。由于嵌入式系统本身的硬件资源有限,要求嵌入式 GUI 具有高度可移植性和可裁剪性,以适应不同的...

    几种常用的嵌入式Linux GUI及其特点

    未来几年,嵌入式LinuxGUI将朝以下方向发展:第一,轻型、占用资源少,不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI之上。第二,高性能、高可靠性,特别是工业实时控制系统,对实时性的要求非常高,...

    几种常用的嵌入式LinuxGUI及其特点

    入式实时Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,如今随着WAP手机、PDA、机顶盒、及DVD/VCD播放机已经迅速普及,用户对这些手持式设备的GUI提出了更高的要求,希望能看到像...

    嵌入式Linux下GUI的编程

    对比分析了主流的几种嵌入式GUI的优缺点,重点介绍了Linux下GUI编程的注意点,对搞GUI的开发人员很有参考价值。 GUI 编程是嵌入式系统开发中不可或缺的一部分,主要用于提供用户友好的交互界面,以便用户能够轻松...

    基于嵌入式Linux的GUI设计方案

    ### 基于嵌入式Linux的GUI设计方案 #### 一、引言 随着嵌入式技术的发展,特别是在后PC时代,嵌入式系统已经广泛应用于各个领域,从消费电子产品到工业控制系统,甚至是军事和航天领域。为了提高用户体验,使设备...

    一种嵌入式linux系统GUI的实现.pdf

    【嵌入式Linux系统GUI实现】 嵌入式Linux系统的GUI(图形用户界面)是人机交互的重要组成部分,它为用户提供直观、简洁的操作界面。随着嵌入式技术的快速发展,对GUI的需求日益增长,特别是在需要高效、便捷交互的...

    Qt嵌入式LinuxGUI研究报告与实现.pdf

    本文首先介绍了嵌入式Linux GUI的当前发展状况及其特点,然后针对当前主流的嵌入式GUI系统——Qt/Embedded,阐述其图形引擎的实现。最后,结合三星公司具体平台上的实现和应用。 Qt/Embedded 是一种跨平台的C++...

    基于Qtopia Core的嵌入式Linux GUI平台移植与开发.pdf

    基于Qtopia Core的嵌入式Linux GUI平台移植与开发.pdf

    嵌入式系统/ARM技术中的几种常用的嵌入式Linux GUI及其特点

    嵌入式实时Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,如今随着WAP手机、PDA、机顶盒、及DVD/VCD播放机已经迅速普及,用户对这些手持式设备的GUI提出了更高的要求,希望能看到...

    基于Qt_Embedded嵌入式Linux GUI的移植开发

    【嵌入式Linux GUI移植开发】在嵌入式系统中,图形用户界面(GUI)扮演着至关重要的角色,尤其在PDA、HandHeld PC、AutoPC等应用中,GUI性能直接影响用户体验。嵌入式GUI需要针对特定硬件进行定制,以满足独特的外观...

    精通嵌入式Linux编程—构造自己的GUI环境

    - **LGUI系统的主要特点**:LGUI是一个轻量级的GUI系统,特别适用于资源受限的嵌入式Linux环境。其设计采用了客户机/服务器架构,并充分利用了多进程和多线程技术来提高性能。 - **LGUI的基本体系结构**:LGUI的体系...

    基于Qt_Embedded的嵌入式Linux应用程序的设计.pdf

    本文介绍了基于Qt_Embedded的嵌入式Linux应用程序的设计,首先概述了嵌入式Linux GUI的发展概况,然后描述了基于Qt_Embedded的GUI开发环境,并结合实例详细描述了一种基于Qt_Embedded的嵌入式Linux应用程序的开发...

    常用嵌入式GUI比较

    当前,嵌入式Linux系统中有多种GUI解决方案,本文将对MicroWindows、Qt/Embedded、MiniGUI、OpenGUI等几个主流的嵌入式GUI解决方案进行比较。 一、MicroWindows MicroWindows是一个开放源码的嵌入式GUI软件,它...

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

    在“嵌入式Linux系统中的GUI系统的研究与移植.pdf”文件中,你将找到更深入的技术细节,包括但不限于具体的移植步骤、常见问题及解决方案、实际案例分析等。通过学习这份资料,开发者不仅可以理解嵌入式Linux GUI...

    基于嵌入式Linux GUI的设计与实现.docx

    基于嵌入式Linux GUI的设计与实现 本文档主要介绍了基于嵌入式 Linux 平台的 GUI 设计与实现。GUI 是计算机软件系统的重要组成部分,但传统的 GUI 系统占用资源较大,对计算机的硬件设备要求较高,故不适用于嵌入式...

    Qt_E的嵌入式LinuxGUI研究与实现_汤伟1

    【Qt/E嵌入式Linux GUI】是嵌入式系统中的一种图形用户界面,它为特殊环境的人机交互提供了有效工具。嵌入式GUI系统需要具备高度的可移植性和可裁剪性,以适应不同硬件条件和应用需求。本文将重点讨论Qt/E(Qt ...

Global site tag (gtag.js) - Google Analytics