嵌入式Linux系统GUI特点介绍

发布者:快乐旅人最新更新时间:2013-10-21 来源: eefocus关键字:图形系统  Linux  实时控制系统 手机看文章 扫描二维码
随时随地手机看文章
随着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。[page]

为了执行一个特定的图形操作,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/SWT
export SWT_HOME=/home/XXX/GTK
export PKG_CONFIG_PATH=$GTK_HOME /lib/pkgconfig
export 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也必须是可定制的。

关键字:图形系统  Linux  实时控制系统 引用地址:嵌入式Linux系统GUI特点介绍

上一篇:WindRiver推出最新版面向物联网软件平台
下一篇:应用c进行嵌入式Linux的研究

推荐阅读最新更新时间:2024-05-02 22:48

Linux常用的命令及ARM开发板的一些技能用法
Linux 开发板UBUNTU18.04 注意 qt5.8 网络配置基本命令 ifconfig eth0 XXX.XXX.XXX df -hl df --help 硬盘 free -h free --help 内存 ps -ef 查看所有进程 top #实时显示进程状态 Ipcs -a/q/m/s 进程管理命令,共享内存,消息队列,信号量等 Ipcrm -m/M 查看与/dev/input目录下的event对应的设备:cat /proc/bus/input/devices 查看CPU信息:cat /proc/cpuinfo 查看内存信息:cat /proc/meminfo 查看USB设备:cat /p
[单片机]
<font color='red'>Linux</font>常用的命令及ARM开发板的一些技能用法
linux内核移植和网卡驱动(二)
一,内核移植步骤: 1, 修改顶层目录下的 Makefile ARCH ?= $(SUBARCH) CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE: % =%) 修改为: ARCH :=arm CROSS_COMPILE :=/usr/local/arm/4.4.3/bin/arm-linux- 2, 拷贝配置文件 这里用的是 FS2410 开发板,拷贝相应的板文件到顶层目录下 cp arch/arm/configs/s3c2410_defconfig ./ 编译配置文件,生成 .config 文件: Make s3c2410_defconfig 内核配置的目的: .config
[单片机]
Linux PC可选用的电源管理:DPM
  谈到 PC 的 电源管理 标准,不作二想的当然是ACPI,不过这样的想法如今似乎需要一些补充,若将PC的定义更广义延伸来看,那么可使用的电源管理机制、标准将不单只有ACPI,DPM(Dynamic Power Management,动态电源管理)则是另一个可评估的选择,以下我们将对此逐一说明理由。   不是所有PC OS都支持ACPI   PC使用ACPI的电源管理机制已久,打从1996年发布首版标准以来已经使用超过10年的时间,就连Apple在2005年决议将Mac OS X移植到x86平台后,所使用的电源管理规范也一样是ACPI,由此来看真的需要选用ACPI之外的省电标准吗?   这样的疑问,主要是以
[电源管理]
<font color='red'>Linux</font> PC可选用的电源管理:DPM
基于Linux的ISA总线DMA的实现
  引 言   众所周知, 视觉是人类感知世界的最重要的方式, 而现实生活中的所有物质形态都是以三维空间而客观存在。三维显示能真正地再现客观世界的立体空间, 提供更符合人们观察习惯的交流方式, 有助于人们在综合运用各种深度暗示之后, 通过大脑的计算感知而获得真实、丰富、可靠的视觉体验, 对社会的发展以及在科技、经济等方面的发展具有重要的作用。   目前, 三维显示大致可以分为四类: 体视三维显示、全息三维显示、透视三维显示和体三维显示 ,其显示的原理和特点如表1 所示。 表1 各类三维显示原理及特点     本文通过旋转24×16 二维LED 阵列实现了具有69120个体像素, 空间尺寸为Φ9414 m
[嵌入式]
嵌入式Linux ARM汇编(三)——ARM汇编指令(四)
十二、ARM伪指令 ARM伪指令不是ARM指令集中的指令,只是为了编程方便编译器定义了伪指令,使用时可以像其他ARM指令一样使用,但在编译时这些伪指令将被等效的ARM指令代替。 1、符号定义伪指令 A、全局变量定义 GBLA(GBLL/GBLS) 全局变量名 GBLA 、GBLL 和GBLS 伪指令用于定义一个ARM 程序中的全局变量,并将其初始化。其中: GBLA 伪指令用于定义一个全局的数字变量,并初始化为0 ; GBLL 伪指令用于定义一个全局的逻辑变量,并初始化为F(假); GBLS 伪指令用于定义一个全局的字符串变量,并初始化为空; 由于以上三条伪指令用于定义全局变量,因此在整个程序范围内变量
[单片机]
基于Linux的C02激光雕刻系统步进电机驱动程序
随着嵌入式技术的不断成熟,基于嵌入式系统编写特制电路下的设备驱动程序也越来越受到人们的青睐。在各种嵌入式操作系统中,嵌入式Linux是免费的源代码开放软件,可根据需要任意进行剪裁。在嵌入式Linux开发过程中需要为指定设备编写和编译驱动程序,这与以往在PC机上的Linux驱动开发明显不同,本文设计了基于S3C2440嵌入式Linux下激光雕刻系统的步进电机驱动程序。 1 硬件系统的设计 步进电机开环控制系统主要由中央控制器、步进电机驱动器、传感器以及步进电机四大部分组成。本系统采用基于ARM920t内核的S3C244 0A微处理器作为控制系统的中央控制器,该芯片主频400MHz,最高可达到533MHz,内含多种设备接口
[工业控制]
Debian 13“Trixie”Linux 发行版有望将带来 RISC-V 64 位支持
6 月 12 日消息,Debian 是最为古老的 GNU / Linux 发行版之一,该操作系统以稳定性为重,不追求高速迭代,因此在新版本发布很早以前,就会揭晓一系列新特性。目前 Debian 项目宣布,在未来的 Debian 13 “Trixie” 中,将带来 RISC-V 64 位支持。 日前 Debian 发布团队分享的更新邮件中,Debian 开发人员 Jonathan Wiltshire 透露了 RISC-V 架构下 Debian 的现状:“虽然 RISC-V 64 位移植在此前取得了良好进展,但最终还是并未实装到 Debian 12 中。未来该特性有望在 Debian 13 中进一步完善,之后提供官方 RISC-V
[嵌入式]
Debian 13“Trixie”<font color='red'>Linux</font> 发行版有望将带来 RISC-V 64 位支持
老查的ARM学习笔记:chapter-2(linux总线设备驱动详解)
1 总线设备驱动模型概述 随着技术的不断进步,系统的拓扑结构也越来越复杂,对智能电源管理,热插拔的支持要求也越来越高,2.3内核已经难以满足这些要求,为了适应这种形势需要,linux2.6内核提供了全新的内核设备模型。 总线的作用就是感知设备是否连接上usb,网卡等等,总线设备驱动模型更好的支持热插拔的设备,也更好的提供移植性。 在设备模型中,我们将看到,设备驱动主要是由总线,驱动程序,设备三个部分构成,通过这三个标准部件,把各种纷繁杂乱的设备归结过来,达到简化设备驱动编写的目的,下面我们就将按三个部分总线,驱动和设备来学习一下。 2 总线 1 总线的描述 在Linux 内核中, 总线由bus_type 结构表示,在这个结构中
[单片机]
老查的ARM学习笔记:chapter-2(<font color='red'>linux</font>总线设备驱动详解)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved