没有合适的资源?快使用搜索试试~ 我知道了~
qt程序设计嵌入式GUI开发.doc
3星 · 超过75%的资源 需积分: 10 36 下载量 172 浏览量
2009-07-22
15:21:54
上传
评论
收藏 1.53MB DOC 举报
温馨提示
试读
52页
qt程序设计的一个章节,内含多个实例,具有参考价值的东西,嵌入式GUI开发.doc嵌入式GUI开发.doc嵌入式GUI开发.doc嵌入式GUI开发.doc
资源推荐
资源详情
资源评论
Linux 嵌入式系统开发指导手册
第
11
章
嵌入式
GUI
开发
图形用户接口(Graphics Uers Interface,GUI)又叫桌面系统、窗口管理系统、图形用户界面、
图形操作环境等,是操作系统和用户的人机接口。GUI 使非专业用户不再需要死记硬背大量的命
令,而直接可以通过窗口、菜单方便地进行操作。
随着嵌入式系统的日益发展及 ARM 处理以及图形设备的广泛应用,嵌入式产品对 GUI 的需
求越来越多。因此,图形用户界面已成为嵌入式应用系统研制的重点之一。目前较为流行的嵌入
式 GUI 有 Nano-X(Micro Windows)、 MiniGUI、Qt/Embedded、Tiny X 和 openGUI 等。
嵌入式 GUI 设计主要包括以下 3 个方面。
(1)硬件设计,通过 LCD 控制器将 LCD 显示器和开放系统连接起来。
(2)驱动程序设计,为输入输出设备设计驱动程序(如 LCD),驱动硬件并移植嵌入式
GUI 系统,为上层程序设计提供图形函数库。
(3)用户界面程序设计,根据嵌入式提供的函数库进行图形化程序设计。
常见的嵌入式 GUI,及其各种嵌入式 GUI 的优缺点。
介绍 MiniGUI 在嵌入式系统中的实现,重点介绍在 S3C2410 处理器上的移植过程。
详细介绍 Qt/Embedded 开发环境的安装、底层支持以及相关的编程。
讲述了 Qtopia 的移植,包括 Qtopia 的交叉编译、安装和 Qtopia 程序的移植。
Qt/Embedded 的开发流程。
Qt/Embedded 图形开发应用实例
Qtopia 移植应用实例
Qt/Embedded 实战演练
Hello,Qt/Embedded 应用程序实例
基本绘图应用程序的编写实例
11.1
嵌入式系统中的
GUI
简介
嵌入式 GUI 为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式 GUI 要求简单、
直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统
硬件本身的特殊性,嵌入式 GUI 应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用
需求。总体来讲,嵌入式 GUI 具备以下特点:体积小;运行时耗用系统资源小;上层接口与硬件
无关,高度可移植;高可靠性;在某些应用场合应具备实时性。
11.1.1
嵌入式
GUI
系统的介绍
下面分别对嵌入式 GUI 系统的作用、层级结构和设计原则。
1
、
GUI
的作用
在嵌入式系统发展的初级阶段,GUI 系统的应用相对较少。例如,在相对简单的、以单片机
为核心的简单工控系统中,人机交互通常以 LED 和按键相结合的方式,随后才有了简单的屏幕。
1
本章要点
本章要点
本章案例
本章案例
第 11 章 嵌入式 GUI 开发
这些只是简单的输入、输出系统,不能被称为“GUI 系统”。
随着嵌入式系统的发展和普及,GUI 在嵌入式系统中的作用越来越突出。当智能手机、PDA
等系统出现后,嵌入式系统已经不是仅仅给个别专业操作人员所使用的,而需要适用于很广泛的
群众。虽然在传统的嵌入式控制领域,人机交互的内容并不是很复杂,但是使用者同样需要更友
好的界面。因此,GUI 在嵌入式系统中的普及是大势所趋。
GUI 系统需要最终向用户提供输出和输入两个方面。在输出方面,GUI 系统向用户提供一个
图形化的界面,在输入方面,GUI 系统需要接受用户的操作,从而达到通过界面控制系统的目的。
2
、
GUI
的层级结构
嵌入式系统的设计一般秉承精简、高效的原则,其软件的层次结构相对简单。自下而上,一
般可以分为硬件层、操作系统层、中间件、应用层等几个层次。
嵌入式系统的硬件分为处理器、内存、板级硬件几个部分。CPU 涉及了特定体系结构的运算
和控制单元,例如 ARM、MIPS 等,在整个系统的软件开发中,一般都要基于该体系结构的编译
工作。片内设备是处理器内部的硬件模块,比较重要的包括内存管理器、中断控制器、定时器 、
GPIO 等。嵌入式系统的内存的 RAM 主要通过 SRAM 和 SDRAM 实现,可固化的存储器主要应用
Nor Flash 和 Nand Flash。板级的硬件包含了嵌入式系统中需要,但是处理器片内没有集成的部分。
嵌入式的操作系统建立在硬件之上。嵌入式系统的操作系统一般都具有一定的可移植性,可
以建立在不同的硬件平台上。操作系统的移植层通常包括对某种体系结构 CPU 的支持,需要涉及
定时器、中断控制器、系统内存等硬件。驱动程序是操作系统和硬件的接口,大量的硬件需要通
过操作系统框架内的驱动程序,向上层提供控制硬件的接口。
中间件一般提供了一些相对底层的软件层次的功能。它的实现一般不包括应用程序的逻辑,
而是向上层软件提供了各种方便的应用程序接口(API)。中间件需要通过对操作系统的调用来
建立,常常需要控制硬件。在嵌入式系统中,常用的中间件包含文件系统、网络协议、图形用户
系统等几种,它们一般都需要控制特定的硬件来实现。此外,数据库( Database)等不需要控制
硬件的下层软件,通常也作为中间件的形式出现。
应用层包含了应用程序的逻辑,它通过调用中间件和操作系统来实现。应用层的软件程序也
可以由上下若干层和不同的模块组成。
GUI 系统的核心库通常作为嵌入式系统的中间件,而使用 GUI 核心库的 GUI 应用程序属于应
用程序层的程序。
3
、
GUI
的设计原则
在嵌入式系统中,GUI 系统是实现图形化界面的核心。由于嵌入式系统的特殊性。在设计原
则方面,嵌入式的 GUI 系统应该具有以下几个特点。
(1)可配置性高
在嵌入式应用中,由于不同的系统相差较大,因此嵌入式 GUI 系统最好具有一定的可配置型,
从而适应不同系统的需求。成功的嵌入式 GUI 系统需要适应不同嵌入式应用的需求。
可配置性通常包括可裁减性、界面特性配置、皮肤和主题配置等方面。在剪裁性方面,GUI
系统可以提供很多的功能,但是在所有的功能并不是都要在某种特定系统上使用,可以去掉不相
关的功能来节省系统的开销。对于界面的特性配置,需要适应不同的解决方案需求。
(2)系统开销少
相对 PC 系统,嵌入式系统的资源都是相对有限的。系统的资源包括,包括处理器的频率 、
Flash 的空间和 RAM 空间等几个部分。在嵌入式系统中,不但资源有限,而且通常还运行着一些
比 GUI 系统更重要的程序。因此,嵌入式 GUI 系统必须具有开销小的特点,不能抢占系统过多的
资源。从编译的角度,GUI 子系统代码规模要有限制,避免占用太多的 Flash;从运行的角度
GUI 子系统的处理器开销和内存开销也是需要严格限制的。如果占用系统资源太多,不但 GUI 系
2
Linux 嵌入式系统开发指导手册
统将无法正常运行,甚至造成整个系统无法工作。
可配置性的实现通常有两种手段,一种是通过条件编译来实现,一种是通过配置文件实现运
行时的配置。
(3)可移植性好
相比通用计算机系统统一的软硬件结构,各个不同的嵌入式系统之间相差较大。作为一款成
功的嵌入式 GUI 系统,应该能在不同的嵌入式平台中运行,这就需要嵌入式 GUI 系统具有较高的
可移植性。
所谓可移植性,体现在操作系统和硬件结构两个方面。
在操作系统方面,由于嵌入式 GUI 系统需要建立在操作系统提供的一定机制上面,而不同的
操作系统提供的机制完全不同。为了能在不同的操作系统中运行,嵌入式 GUI 就需要具有一定的
可移植层来支持不同的操作系统。
硬件方面又包括了 CPU 体系结构、输出设备、输入设备等方面:适应不同 CPU 体系结构,
需要嵌入式 GUI 系统的代码可以在不同的编译器上编译,一般来说 C 语言实现的系统可以满足这
个要求,但使用特定体系结构汇编的实现就不能适应这种需求;输出设备和输入设备在不同的嵌
入式系统中相差也很大,这也要求嵌入式 GUI 系统可以支持不同系统的硬件接口。
(4)稳定性好
嵌入式系统对稳定性和可靠性有很严格的要求。个人 PC 的崩溃可以通过重新启动等方式弥
补,但是嵌入式系统的崩溃就可能导致无法挽回的严重后果。因此嵌入式 GUI 系统,需要具有更
强的稳定性。
事实上,在一些嵌入式系统中,缺少了不同任务的保护机制,整个系统运行在一个内存空间
内,因此,由于一个子系统的问题导致整个系统崩溃的概率更高。对于嵌入式 GUI 系统,一方面
需要有较高的稳定性,减少崩溃的概率;另一方面,在 GUI 系统已经崩溃的情况下,也需要确保
尽量较少影响其它子系统的工作,将问题控制在一定范围内。
11.1.2
基于嵌入式
Linux
的
GUI
系统底层实现基础
要使一个嵌入式 GUI 系统能够移植到多种硬件平台上,应用至少抽象出两类设备:基于输入
设备的输入抽象层 IAL(Input Abstract Layer)和基于图形显示设备的图形抽象层 GAL(Graphic
Abstract Layer)。 GAL 层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬
件的技术实现细节,为程序开发人员提供统一的图形编程接口。IAL 层则需要实现对于各类不同
输入设备的控制操作,提供统一的调用接口。GAL 层与 IAL 层的设计概念,可以极大程度地提高
嵌入式 GUI 的可移植性,如表 11-1 所示。
表 11-1 一种可移植嵌入式 GUI 的实现结构
API 编程接口
嵌入式 GUI
GAL 层 IAL 层
图形显示设备 输入设备
目前应用于嵌入式 Linux 系统中比较成熟,功能也比较强大的 GUI 系统底层支持库有 SVGA
lib、LibGGI、Xwindow、FrameBuffer 等。
11.1.3
嵌入式
GUI
系统的分析与比较
嵌入式系统对实时性的要求很高,因此对 GUI 的要求也更突出。通常,这些系统不希望建立
在非常消耗系统资源的操作系统和 GUI 之上,例如 Windows 或 X Window,太过于庞大和臃肿。
另外 GUI 也必须是可定制的。嵌入式系统往往是一种定制设备,它们对 GUI 的需求也各不相同。
有些系统只要求一些图形功能,而有些系统要求完备的 GUI 支持。嵌入式系统对 GUI 的基本要求
3
第 11 章 嵌入式 GUI 开发
包括轻型、占用资源少、高性能、高可靠性及可配置。尽管实时嵌入式系统对 GUI 的需求越来越
明显,但目前 GUI 的实现方法各有不同。
(1)某些大型厂商有能力自己开发满足自身需要的 GUI 系统。
(2)某些厂商没有将 GUI 作为一个软件层从应用程序中剥离,GUI 的支持逻辑由应用程序
自己来负责。
(3)采用某些比较成熟的 GUI 系统,比如 MiniGUI、MicroWindows 或者其它 GUI 系统。
下面简单介绍一些比较常见的 GUI 系统。
1
、
MiniGUI
MiniGUI 由原清华大学教师魏永明先生开发,目标是为基于 Linux 的实时嵌入式系统提供一
个轻量级的图形用户界面支持系统。它可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容
系统上,主要运行于 Linux 控制台。MiniGUI 同时也是国内最早出现的几个自由软件项目之一。
MiniGUI 开发的主要目标就是为基于 Linux 的实时嵌入式系统提供一个轻量级的图形用户界
面支持系统。MiniGUI 为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每
个应用程序可以建立多个主窗口,然后在这些主窗口中创建按钮、编辑框等控件。MiniGUI 还为
用户提供了丰富的图形功能,帮助你显示各种格式的位图并在窗口中绘制复杂图形。
MiniGUI 分为底层的 GAL(图形抽象层)和 IAL(输入抽象层),向上为基于标准 POSIX 接
口中 pthread 库的 Mini-Thread 架构和基于 Server/Client 的 Mini-Lite 架构。其中 Mini-Thread 受限于
Thread 模式,对于整个系统的可靠性影响——进程中某个 Thread 的意外错误可能导致整个进程的
崩溃,该架构应用于系统功能较为单一的场合。Mini-Lite 应用于多进程的应用场合,采用多进程
运行方式设计的 Server/Client 架构能够较好地解决各个进程之间的窗口管理、Z 序剪切等问题。
MiniGUI-Lite 上的每个程序是单独的进程,每个进程也可以建立多个窗口。
MiniGUI 的 GAL 层技术是基于 SVGA Lib、LibGDI 库、FrameBuffer 的 native 图形引擎。IAL
层则支持 Linux 标准控制台下的 GPM 鼠标服务、触摸屏及标准键盘等。
MiniGUI 下丰富的控件资源也是 MiniGUI 的特点之一。其主要有以下特点。
(1)支持 Windows 兼容的资源文件,如位图、图标、光标等。
(2)支持各种流行图像文件,包括 JPEG、GIF、PNG、TGA、BMP 等。
(3)支持多种键盘布局。MiniGUI 除支持常见的 PC 键盘布局之外,还支持法语、德语等西
欧语种的键盘布局。
(4)借鉴著名的跨平台游戏和多媒体函数库 SDL 的新 GAL 接口即 NEWGAL。提供了更快、
更强的位块操作,视频加速支持及 Alpha 混合等功能。
(5)增强的新 GDI 函数,包括光栅操作、复杂区域处理、椭圆、圆弧、多边形及区域填充
等函数。在提供数学库的平台上,还提供有高级二维绘图函数,可设置线宽、线型及填充模式等。
(6)利用 GAL 和 IAL,MiniGUI 可以在许多图形引擎上运行,并且可以非常方便地将
MiniGUI 移植到其他系统上,而这只需要根据抽象层接口实现新的图形引擎即可。()支持对话
框和消息框。
(7)提供了完备的多窗口机制和消息传递机制。
(8)提供常用的控件类,包括静态文本框、按钮、单行和多行编辑框、列表框、组合框、进
度条、属性页、工具栏、拖动条和树型控件等。
(9)支持汉字输入法,包括内码、全拼、智能拼音等。用户还可以从飞漫软件获得五笔、自
然码等输入法支持。
(10)还有一些针对嵌入式系统的特殊支持,包括一般性的 I/O 流操作,字节序相关函数等。
(11)包含其他 GUI 辅助元素,包括菜单、加速键、插入符及定时器等。
(12)支持界面皮肤。用户可通过皮肤获得外观华丽的图形界面。
(13)通过两种不同的内部软件结构支持低端显示设备和高端显示设备,后者在前者的基础
4
Linux 嵌入式系统开发指导手册
上提供了更加强大的图形功能。
2
、
MicroWindows
MicroWindows 是一个著名的开放源码的嵌入式 GUI 软件,系统基于 Server/Clinent 体系结构
基本分为三层,最高层分别提供兼容于 X Window 和 ECMA APIW 的 API;中间层提供底层硬件
的抽象接口,并进行窗口管理;最底层是面向 图形显示和键盘、鼠标或触摸屏的驱动程序 。
MicroWindows 提供了现代图形窗口系统的一些特性。MicroWindows API 接口支持类 Win32 API,
接口试图和 Win32 完全兼容。它还实现了一些 Win32 用户模块功能。MicroWindows 基本上用 C
语言实 现 。MicroWindows 已经支 持 Intel 16 位 和 32 位 CPU 、MIPS R4000 以及 ARM 芯 片;
MicroWindows
也有一些通用的窗口控件,但其图形引擎存在许多问题。
3
、
OpenGUI
OpenGUI 是用 C++编写的,只提供 C++接口。OpenGUI 基于一个用汇编实现的 x86 图形内核,
提供了一个高层的 C/C++图形/窗口接口。OpenGUI 提供了二维绘图原语、消息驱动的 API 及
BMP 文件格式支持。OpenGUI 功能强大,使用方便。OpenGUI 支持鼠标和键盘的事件,在 Linux
上基于 Framebuffer 或者 SVGALib 实现绘图。由于其基于汇编实现的内核并利用 MMX 指令进行
了优化,OpenGUI 运行速度非常快。由于其内核用汇编实现,可移植性受到了影响。通常在驱动
程序一级,性能和可移植性是相互矛盾的。
最初 OpenGUI 只支持 256 色的线性显存模式,目前支持其他显示模式,并且支持多种操作系
统平台,比如 MS-DOS、QNX 和 Linux 等,不过目前只支持 x86 硬件平台。OpenGUI 分为三层:
最低层是由汇编语言编写的快速图形引擎;中间层提供了图形绘制 API,并且兼容 Borland 的
BGIAPI;第三层用 C++编写,提供了完整的 GUI 对象库。另外 OpenGUI 还提供了二维绘图原语、
消息驱动的 API 及 BMP 文件格式支持等,使用较为方便。OpenGUI 同样支持鼠标和键盘事件,
在 Linux 上基于 Frambuffer 或 SVGALib 实现绘图。
4
、
Qt/Embedded
Qt/Embedded 是著名的 Qt 库开发商 Trolltech 的面向嵌入式系统的 Qt 版本,同样是 Server/
Client 结构。由于 Qt 是 KDE 等项目使用的 GUI 支持库,因此 Qt/Embedded 具有较好的可移植性,
许多基于 Qt 的 X Window 程序可以非常方便地移植到嵌入式系统,但是该系统的源码不是开放的 。
具体的特点在后面有作详细的介绍。
11.2
嵌入式系统下
MiniGUI
的实现
嵌入式产品在使用 MiniGUI 之前,必须在装有 Linux 操作系统的 PC 机上安装 MiniGUI,然后
利用 PC 机来编写和调试 MiniGUI 程序,最后就可以将 MiniGUI 及应用程序移植到目标产品。
11.2.1
图形用户界面
MiniGUI
简介
MiniGUI 是由北京飞漫软件技术有限公司主持的一个自由软件项目,是一种面向嵌入式系统
或者实时系统的图形用户界面支持系统。
1
、
MiniGUI
的体系结构
MiniGUI 为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程
序可以建立多个窗口,而且可以在这些窗口中绘制图形。用户也可以利用 MiniGUI 建立菜单、按
钮、列表框等常见的 GUI 元素。MiniGUI 的体系结构如图 11-1 所示。
5
剩余51页未读,继续阅读
资源评论
- woshimuzhongwuren2013-01-13虽然看的不大懂。。。但是对自己还是有帮助的。。
mendida
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功