嵌入式Linux系统中的GUI系统的研究与移植介绍
GUI的种类及uCGUI的架构

GUI的种类及uCGUI的架构(说明:本博文转载自他人笔下,希望可以帮助同僚更深刻的认识GUI)GUI的种类及uC/GUI的架构一. GUI概述GUI(Graphic User Interface)是图形化的用户界面,它能提供友好的人机交互接口。
它有以下特性:体积小,运行时耗用系统资源少,层次化的结构,易移植,可靠性高嵌入式GUI种类嵌入式GUI种类有很多,下面列举几种:1. WINCE的GWES(图形、窗口、事件子系统),由应用程序接口(API)、用户接口(UI)和图形设备接口(GDI)组成,包含了消息机制2. Trolltech公司的产品:QT、QTE、QTOPIA,它们跨平台、功能强大,但资源消耗多3.MINIGUI是魏永明创建的嵌入式GUI中间件,可以以多线程、多进程、以及单任务运行,是比较成熟的商用系统4.ucGUI能支持多种环境的GUI,可以以多任务形式运行或者以前后台模式运行。
商用化,但功能相对简单GUI的两种模式:1. Windows模式,采用类似windows的API和相应的消息机制,如ucGUI、MicroWindows、miniGUI2.C/S模式,采用一个XServer,所有的显示都以客户端的形式请求服务,如Nano-XGUI在嵌入式系统或实时系统中的地位越来越多的市场需求数据显示,包括PDA、娱乐消费电子、机顶盒、DVD等影音设备、WAP 手机等高端电子产品得到广泛应用,原先仅在军工、工业控制等领域中使用的GUI图形系统,受到越来越多的关注。
对于轻量级 GUI 的系统而言,对 GUI 的要求相对较低,如传统51类型单片机这类系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和 GUI 之上,如 Windows 或 X Window。
目前此类系统都直接使用原有编程手段,采用比较简单的手法实现GUI。
对于太过庞大和臃肿的GUI系统而言,μc/GUI这类可运用于此类资源较紧张的轻型 GUI 的需求更加突出uc/GUI简介μc/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。
嵌入式Linux系统中图片解码和显示的多格式支持方法

嵌入式Linux系统中图片解码和显示的多格式支持方法嵌入式系统在现代科技中扮演着越来越重要的角色,而嵌入式Linux系统作为其中的一种,提供了强大的操作系统支持。
在嵌入式Linux系统中,图片解码和显示是一个常见的需求。
本文将介绍嵌入式Linux系统中图片解码和显示的多格式支持方法。
第一节:图片解码方法图片解码是将图片数据转换为可读取和显示的格式,常见的图片格式包括JPEG、PNG、GIF等。
在嵌入式Linux系统中,可以通过以下几种方法来实现图片解码:1. 使用开源库:开源库提供了丰富的图片解码功能,其中最为著名的是libjpeg、libpng和libgif等。
这些库提供了丰富的API接口,可以方便地进行图片解码操作。
在嵌入式Linux系统中,可以通过编译和链接这些库来实现图片解码功能。
2. 使用硬件加速:硬件加速可以大大提高图片解码的速度和效率。
现代的嵌入式处理器通常集成了专门用于图像处理的硬件加速模块,可以加速图片解码的过程。
通过调用相关的硬件接口,可以在嵌入式Linux系统中实现基于硬件加速的图片解码功能。
3. 自定义解码算法:根据特定需求,也可以开发自定义的解码算法。
通过分析图片文件的格式和结构,编写专门的解码程序,可以实现针对特定图片格式的解码功能。
这种方法需要开发者对图片格式有较深入的了解,并进行相关的算法开发和优化。
第二节:图片显示方法图片解码后,就可以将其显示在嵌入式系统的屏幕上了。
下面介绍几种常见的图片显示方法:1. 使用图形库:嵌入式Linux系统中常用的图形库有Qt、GTK等。
这些图形库提供了丰富的GUI接口和功能,可以方便地进行图片显示操作。
通过调用图形库提供的接口,可以实现在屏幕上显示解码后的图片。
2. 使用Framebuffer:Framebuffer是嵌入式Linux系统中常用的显示方式之一。
Framebuffer提供了一种直接访问显示硬件的方法,可以通过在Framebuffer上绘制解码后的图片来实现图片显示。
基于嵌入式ARM-Linux的播放器的设计与实现

基于嵌入式ARM-Linux的播放器的设计与实现摘要随着21世纪的到来,人类进入了PC时代。
在这一阶段,嵌入式技术得到了飞速发展和广泛应用。
由此,本文提出了一种基于嵌入式ARM-Linux的播放器设计与实现的方案。
本文首先详细分析了ARM体系结构,研究了嵌入式Linux操作系统在ARM9微处理器的移植技术,包括交叉编译环境的建立、引导装载程序应用、移植嵌入式Linux内核及建立根文件系统,并且实现了嵌入式Linux到S3C2410开发板的移植。
由于嵌入式系统本身硬件条件的限制,常用在PC机的图形用户界面GUI系统不适合在其上运行。
为此,本文选择了Minigui作为研究对象,在对其体系结构等方面进行研究基础上,实现了Minigui到S3C2410开发板的移植,完成了嵌入式图形用户界面开发,使得系统拥有良好的操作界面。
对于播放器,本文实现了Linux系统下的通用媒体播放器—Mplayer到S3C2410开发板的移植。
通过对音频数据输出的研究,解决了Mp1ayer播放声音不正常的问题,实现了一个集音乐和视频播放于一体的嵌入式多媒体播放系统。
最后,总结了论文所做的工作,指出了嵌入式播放器所需要进一步解决和完善的问题。
关键词:嵌入式ARM-Linux; S3C2410; Mplayer; GUI界面; MiniguiPlayer Designing and Implement Based On Embedded ARM-LinuxAbstractAlong with the 21st century arrivals, the humanity enters the post PC time. In this stage, embedded technology gets rapidly developed and widely used. So, this paper aims to design a player based on embedded ARM-Linux.First, in this paper, ARM architecture and the characteristic are analyzed in detail. The emphasis of the study is put on the porting techniques of embedded Linux operation system based on the ARM9 micro-processor, which include setting cross complier、transplanting Bootloader、transplanting embedded Linux kernel and setting root file system; Furthermore, implement the technique of transplanting Embedded Linux to S3C2410 board.GUI (Graphical User Interfaces) systems which are supported by normal PCs cannot run well on the embedded systems, just because of the restriction of the hardware of embedded devices. So, this paper selects Minigui as research object. Based on the Minigui architecture and its other aspects, the technique of transplanting Minigui to S3C2410 board is given in detail, and then an embedded GUI system is established and it also makes the handle interface friendly.About the player, this paper implements transplanting the universal player on Linux-Mplayer to S3C2410 board. By learning of audio data, it solves the problem of sound abnormality, and achieves an embedded multimedia system which could play audio and video files.Key words: Embedded ARM-Linux; S3C2410; Mplayer; GUI interface; Minigui目录摘要 (I)Abstract ........................................................... I I 目录.............................................................. I II 第一章绪论.. (1)1.1系统研究背景 (1)1.1.1 多媒体播放器与嵌入式系统 (1)1.1.2 嵌入式多媒体播放器国内外发展现状 (1)1.2 嵌入式处理器 (3)1.3 嵌入式系统 (4)1.3.1嵌入式系统的概述 (4)1.3.2 嵌入式系统的选择 (5)1.4 本文的意义和主要工作 (7)第二章系统软硬件平台的搭建 (8)2.1 硬件开发平台的介绍 (8)2.1.1 核心板 (8)2.1.2 外设板 (8)2.1.3 设计所用硬件介绍 (9)2.2 硬件平台的设计方案 (9)2.2.1 核心板设计 (9)2.2.2 外设电路设计 (14)2.3 嵌入式软件开发环境 (15)2.3.1 引导装载程序 (16)2.3.2 宿主机开发环境配置 (17)2.3.3 交叉开发环境的建立 (18)2.3.4 内核的编译 (18)2.3.5 烧制内核映像和文件系统 (20)2.4 嵌入式图形用户界面的实现 (20)2.4.1 图形用户界面minigui的简介 (20)2.4.2 MiniGUI在S3C2410开发板上的移植过程 (21)第三章 Mplayer的移植 (25)3.1 Mplayer的简介 (25)3.2 Mplayer的移植 (25)3.2.1 安装交叉编译工具及解压源代码 (25)3.2.2 编译Mplayer (25)3.3 调试 (27)第四章嵌入式播放器Mplayer的设计 (31)4.1 播放器的工作流程 (31)4.2 播放器的逻辑结构 (31)4.3 Mplayer播放器的目录文件组织结构 (32)4.4 播放器对解码器和输出设备的管理方式 (34)第五章总结与展望 (36)5.1 本文主要完成的工作及结论 (36)5.2 完善与展望 (36)致谢 (37)参考文献: (38)第一章绪论1.1系统研究背景从上世纪末开始,随着计算机和电子技术的发展走上快车道,便携式电子设备,诸如智能手机,个人电子助理(PDA)的运算存储能力和通信能力都得到了长足的进步,便携式设备的用户界面也变的越来越友好,从早期的只能显示单色文字的LED,发展到现在大尺寸6万色彩色液晶屏幕。
MiniGUI图形界面实验

学习移植 MiniGUI-STR(for uC/OS-II)软件到 SmartARM2200 开发板的基本方法,然后 编写一个简单的 MiniGUI 应用程序,使用 MessageBox 函数创建一个消息框,消息框中显示 字符串“Hello MiniGUI!” 。 4. 实验预习要求 (1) 仔细阅读<<ARM 嵌入式系统实验教程(二)>>第 1 章的内容,了解 SmartARM2200 开发板的硬件结构,注意 TFT 液晶接口电路和键盘电路。 (2) 阅读 MiniGUI 的文档 <<MiniGUI 用户手册 >> 和 <<MiniGUI 编程指南 >> ,了解 MiniGUI 的基本特点和应用配置选项,以及应用程序的编写。 5. 实验原理 (1) MiniGUI 简介 MiniGUI 项目的最初目标是为基于 Linux 的实时嵌入式操作系统提供一个轻量级的图形 用户界面支持系统,发展到今天,MiniGUI 已进入成熟和稳定阶段,并且所支持的操作系统 已不仅仅限于 Linux,它还可以在 uClinux、uC/OS-II、eCos、VxWorks 等系统上运行。 MiniGUI 为应用程序定义了一组轻量级的窗口和图形设备接口, 利用这些接口, 每个应 用程序可以建立多个主窗口,然后在这些主窗口中创建按钮、编辑框等控制。MiniGUI 还为 用户提供了丰富的图形功能,以显示各种格式的位图并在窗口中绘制复杂图形。 MiniGUI 和嵌入式操作系统的关系如图 1.1 所示,基于 MiniGUI 的应用程序一般通过 ANSI C 库以及 MiniGUI 自身提供的 API 来实现自己的功能。
4
广州周立功单片机发展有限公司 }
Tel: (020)38730976
3、嵌入式操作系统介绍

——ARM与C/OS-Ⅱ
北京航空航天大学 智能嵌入式技术工作室
王田苗 魏洪兴
1
第四讲、嵌入式实时操作系统分析
一、操作系统概述 二、嵌入式实时操作系统C/OS 三、嵌入式Linux简介 四、WinCE
2
一、操作系统的发展
串行处理 简单批处理系统——IBMSYS 多通道程序批处理系统 分时操作系统 实时操作系统
33
任务控制块结构
Struct os_tcb {
OS_STK *OSTCBStkPtr;
struct os_tcb *OSTCBNext; struct os_tcb *OSTCBprev;
事件控制块的指针
OS_EVENT *OSTCBEventPtr;
void
*OSTCBMsg;
INT16U OSTCBDly; INT8U OSTCBStat;
21
µC/OS-II提供的系统服务
信号量 带互斥机制的信号量
减少优先级倒置的问题 事件标志 消息信箱 消息队列 内存管理 时钟管理 任务管理
22
µC/GUI and µC/FS
µC/GUI 嵌入式的用户界面 用ANSI C书写 支持任何8, 16, 32-bits CPU 彩色,灰、度,等级或黑白显示 代码尺寸小
3
批处理操作系统
工作方式: 用户将作业交给系统操作员 系统操作员将许多用户的作业组成一批作业 之后输入到计算机中,在系统中形成一个自动转接
的连续的作业流 启动操作系统 系统自动、依次执行每个作业 最后由操作员将作业结果交给用户
4
分时操作系统
工作方式:
一台主机连接了若干个终端 每个终端有一个用户在使用 交互式的向系统提出命令请求 系统接受每个用户的命令 采用时间片轮转方式处理服务请求 并通过交互方式在终端上向用户显示结果 用户根据上步结果发出下道命令
天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发

18:19
4
3.1.1 嵌入式软件体系结构
18:19
5
1. 设备驱动层
设备驱动层是嵌入式系统中必不可少的重 要部分,使用任何外部设备都需要有相应 驱动程序的支持,它为上层软件提供了设 备的操作接口。 上层软件不用理会设备的具体内部操作, 只需调用驱动层程序提供的接口即可。 驱动层一般包括硬件抽象层HAL、板级支 持包BSP和设备驱动程序。
18
3.2.2 基于开发板的二次开发
所谓二次开发是利用现成的开发板进行开发,不同于通用 计算机和工作站上的软件开发工程,一个嵌入式软件的开 发过程具有很多特点和不确定性。其中最重要的一点是软 件跟硬件的紧密耦合特性。 由于嵌入式系统的灵活性和多样性,这样就给软件设计人 员带来了极大地困难。第一,在软件设计过程中过多地考 虑硬件,给开发和调试都带来了很多不便;第二,如果所 有的软件工作都需要在硬件平台就绪之后进行,自然就延 长了整个的系统开发周期。这些都是应该从方法上加以改 进和避免的问题。 为了解决这个问题,通常的做法是基于某种开发板做二次 开发,从这个角度看,硬件开发所占的比重不到20%,而 软件开发的比重占到了80%。
3.1 嵌入式软件结构 3.2 嵌入式软件开发流程 3.3 嵌入式linux开发环境 3.4 嵌入式系统引导代码 3.5 linux内核结构及移植 3.6 嵌入式文件系统及移植 3.7 linux设备驱动概述 3.8 设备驱动程序接口 3.9 linux设备驱动开发流程
18:19 3
3.1 嵌入式软件结构
?在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器rs232接口lcd等等
嵌入式的有关知识

嵌入式的有关知识1.什么是嵌入式?嵌入式的定义与特点?(1) 嵌入式系统的定义按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”。
“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。
对象系统则是指嵌入式系统所嵌入的宿主系统。
(2) 嵌入式系统的特点嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。
不同的嵌入式系统其特点会有所差异。
与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。
与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。
与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。
与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。
另外,在理解嵌入式系统定义时,不要与嵌入式设备相混淆。
嵌入式设备是指内部有嵌入式系统的产品、设备,例如,内含单片机的家用电器、仪器仪表、工控单元、机器人、手机、PDA 等。
2.什么是嵌入式系统嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
3.什么是嵌入式操作系统?与其他操作系统相比,嵌入式有那些优势?嵌入式操作系统EOS(Embedded Op eratingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。
EOS负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
嵌人式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
基于uClinux的手持设备GUI应用系统的设计

关键 词 : Ci x 图形 用户接 口; u lu ; n 嵌入 式 系统; 脚本执行 引擎; 手持设备
中图分类号 :P 1 . 1 3 15 2 文献标识码 : A
Dein o s fGUIS se f rHa d ed E u p n a e n u i u g y tm o n h l q i me tB sd o Cl x n
ir u s o - s nahn h d ̄n m n’ g p c ¥rn r c ae nul u dH D F 2 ee pn l n o c w t d i ad d q v  ̄t8 r h si ̄ tfe bs o Cl xa H RZ38dvl i pa tde h o e g i ai I ie a d n n o g 怕肌.T e h
mJ GL n-i ,H i . i A i g n Z U Qa m N a b o
( . ho o Cm u r c ne&Tcnl y SohwU i rt,Sz u 106 C i ; 1S ol f o p t i c c eS e eho g , co n e i uh 50 , h a o c v sy o 2 n 2 K yLbo C m u rno ao r es gTcnl yoJ ns r i , uh u 250 , h a . e a f o pt f m t nPo sn eho g f i guPo n Szo 10 6 C i ) eI r i c i o a vc e n
维普资讯
2O 年第 l 期 O6 1
计 算 JU I椰 S
机 与 现 代 化 Y XA D 删 I U IN A A
总第 15 3 期
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式Linux系统中的GUI系统的研究与移植介绍嵌入式Linux系统中的GUI系统的研究与移植介绍摘要:针对嵌入式Linux系统中几种常见的GUI(Graphic User Interface)系统,讨论嵌入式GUI实现的底层技术方式;详细分析Microwindows、MiniGUI、Qt/Embedded等三种GUI的实现特点、体系结构、API接口。
结合这三种嵌入式GUI在以Motorola i,MX1为核心的实际应用系统中移植开发的问题,讨论移植技术与中文化技术。
引言嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。
嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。
另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。
总体来讲,嵌入式GUI具备以下特点:*体积小;*运行时耗用系统资源小;*上层接口与硬件无关,高度可移植;*高可靠性;*在某些应用场合应具备实时性。
(收集整理)1 基于嵌入式Linux的GUI系统底层实现基础一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL (Graphic Abstract Layer),基于输入设备(如键盘,触摸层等)的输入抽象层IAL(Input Abstract Layer)。
GAL层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬件的技术实现细节,为诮程序开发人员提供统一的图形编程接口。
IAL层则需要实现对于各类不同输入设备的控制操作,提供统一的调用接口。
GAL层与IAL层的设计概念,可以极大程序地提高嵌入式GUI的可移植性,如图1所示。
目前应用于嵌入式Linux系统中比较成熟,功能也比较强大的GUI系统底层支持库有SVGA lib、LibGGI、Xwindow、framebuffer等。
2 三种嵌入式GUI系统的分析与比较2.1 MicrowindowsMicrowindows是一个典型的基于Server/Clinent体系结构的GUI系统,基本分为三层,如图2所示。
最底层是面向图形显示和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于X Window和ECMA APIW(Win32子集)的API。
其中使用Nano-X接口的API与X接口兼容,但是该接口没有提供窗口管理,如窗口移动和窗口剪切等高级功能,系统中需要首先启动nano-X的Server程序nanoxserver和窗口管理程序nanowm。
用户程序连接nano-X的Server获得自身的窗口绘制操作。
使用ECMA APIW编写的应用程序无需nanox-server和nanowm,可直接运行。
Microwindows提供了相对完善的图形功能和一些高级的特性,如Alpha混合、三维支持和TrueType字体支持等。
该系统为了提高运行速度,也改进了基于Socket套接字的X实现模式,采用了基于消息机制的Server/Client传输机制。
Microwindows也有一些通用的窗口控件,但其图形引擎存在许多问题,可以归纳如下:*无任何硬件加速能力;*图形引擎中存在许多低效算法,如在圆弧图函数的逐点判断剪切的问题。
由于该项目缺乏一个强有力的核心代码维护人员,2003年Microwindows推出版本0.90后,该项目的发展开始陷于停滞状态。
2.2 MiniGUIMiniGUI是由国内自由软件开发人员设计开发的,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。
MiniGUI的体系架构如图3所示。
MiniGUI分为最底层的GAL层和IAL层,向上为基于标准POSIX 接口中pthread库的Mini-thread架构和基于Server/Client的Mini-Lite架构。
其中前者受限于thread模式对于整个系统的可靠性影响——进程中某个thread的意外错误可能导致整个进程的崩溃,该架构应用于系统功能较为单一的场合。
Mini-Lite应用于多进程的应用场合,采用多进程运行方式设计的Server/Client架构能够较好地解决各个进程之间的窗口管理、Z序剪切等问题。
MiniGUI还有一种从Mini-Lite衍生出的standalone运行模式。
与Lite架构不同的是,standalone模式一次只能以窗口最大化的方式显示一个窗口。
这在显示屏尺寸较小的应用场合具有一定的应用意义。
MiniGUI的GAL层技术SVGA lib、LibGGI、基于framebuffer 的native图形引擎以及哑图形引擎等,对于Trolltech公司的QVFB在X Window下也有较好的支持。
IAL层则支持Linux标准控制台下的GPM鼠标服务、触摸屏、标准键盘等。
MiniGUI下丰富的控件资源也是MiniGUI的特点之一。
当前MiniGUI的最新版本是1.3.3。
该版本的控件中已经添加了窗口皮肤、工具条等桌面GUI中的高级控件支持。
2.3 QT/EmbeddedQt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。
因为Qt是KDE等项目使用的GUI支持库,许多基于Qt的X Window程序因此可以非常方便地移植到Qt/Embedded上。
Qt/Embedded同样是Server/Client结构。
Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了X lib,仅采用framebuffer作为底层图形接口。
同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。
Qt/Embedded类库完全采用C++封装。
丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。
它的类库接口完全兼容于同版本的Qt-X11,使用X下的开发工具可以直接开发基于Qt/Embedded的应用程序QUI界面。
与前两种GUI系统不同的是,Qt/Embedded的底层图形引擎只能采用framebuffer。
这就注定了它是针对高端嵌入式图形领域的应用而设计的。
由于该库的代码追求面面俱到,以增加它对多种硬件设备的支持,造成了其底层代码比较凌乱,各种补丁较多的问题。
Qt/Embedded的结构也过于复杂臃肿,很难进行底层的扩充、定制和移植,尤其是用来实现signal/slot机制的moc文件。
Qt/Embedded当前的最新版本为3.3.2,能够支持Trolltech的手持应用套件Qtopia的Qt/Embedded最高版本为2.3.8。
Trolltech 公司将于2004年末推出的Qt/Embedded 3为基础的Qtopia 2应用套件。
3 三种嵌入式GUI的移植与中文化在进行以上三种嵌入式GUI的研究和移植过程中,硬件平台采用自行设计的以Motorola MC9328 MX1为核心的开发系统。
该系统采用CPU内部LCD控制器和320×240分辨率的16bpp TFT LCD作为显示设备,使用I2C总线扩展出16按键的键盘,同时配置了9位A/D 量化精度的电阻触摸屏作为鼠标类输入设备;同时移植了ARM Linux 作为操作系统。
以下分别讨论这三种嵌入式GUI的底层移植和中文化技术。
移植以上三种嵌入式GUI系统,需要首先实现Linux内核中的framebuffer驱动。
对应于开发系统为MC9328中的LCD控制器,该部分驱动程序必须以静态方式编译进内核,在系统启动时由传递进内核的启动参数激活该设备。
I2C键盘的驱动程序和触摸屏的驱动程序实现后,作为Linux内核模块在使用时动态加载。
3.1 Microwindows的移植Microwindows驱动层相应的源码目录为src/drivers/。
其中以scr*开头的源码是针对显示设备的驱动接口,以mou*开头的源码文件为鼠标设备(包括触摸屏)的驱动接口,以kbd*开头的源码文件针对键盘设备的驱动接口。
移植过程中需要实现自己的设备驱动接口提供给Microwindows使用,就必须按照指定的接口格式编写相应的scr、mou、kbd的底层支持。
这种方式实现简单,条理也很清晰。
显示设备驱动接口:Microwindows的图形发生引擎支持framebuffer,修改src/中的config文件指定使用framebuffer作为底层图形支持引擎;但需要注意嵌入式Linux的framebuffer较少支持控制台字符模式,需要修改Microwindows中对framebuffer的操作部分以关闭显示模式的转换。
在应用程序开发移植中需要注意的是:使用ECMAAPIW接口设计的程序无需nano-X的Server程序和nanowm。
系统中可以直接启动使用该接口编写的用户程序;但需要注意的是,一个系统中如同时存在使用两种不同的API接口编写的进程,会造成nano-X的Server 与ECMA APIW的进程对系统硬件资源的使用竞争,双方的程序将无法正常显示或响应应用户输入。
在为Microwindows增加中文显示的支持时,主要工作包括两个部分。
一部分是系统字体的中文支持。
此处使用等宽光栅字体,主要负责窗口标题和内置控件的中文绘制,将字体编译进Microwindows 内核中,光栅信息作为一维数组,显示时按照字符偏移量从该数组中调出相应的光栅信息显示即可。
除此之外,当程序调用CreateFont时,需要在内部实现为打开文件系统中的字体文件。
通过修改src/engine/devfont.c中的GdCreateFont部分,添加相应的hzk(汉字库)支持,便可以实现在CreateFont时创建出一个支持GB2312字符集的逻辑字体,并使用外部字体进行显示。
在应用程序设计时,如果没有调用SelectObjectu将外部字体选入,中文显示时将默认使用系统字体。
3.2 MiniGUI由于MiniGUI较好地将硬件设备抽象为GAL层和IAL层,移植时只需要针对自身的`硬件特点按照GAL层调用接口和IAL层调用接口来做内部实现即可。
图4为MiniGUI的GAL层结构示意,IAL层结构类似。
实现了framebuffer的Linux驱动后,配置MiniGUI选择Native 的GAL引擎,便可以使用framebuffer作为MiniGUI的图形发生引擎。
MiniGUI的IAL层将输入设备的输入事件最终映射为GUI系统API 层的消息事件。
IAL层默认处理两种设备的输入操作:键盘设备和鼠标设备。