位置:51电子网 » 技术资料 » EDA/PLD

基于Qt/Embedded的GUI移植及应用程序开发

发布时间:2007/9/11 0:00:00 访问次数:814

随着互联网和移动通信技术的日益成熟,两者相互渗透和融合的步伐正在加快。21世纪被誉为“移动之王”时代,与此同时,嵌入式linux在手机、PDA(个人数字助理)等手持信息设备领域的应用出现了一个强劲的发展势头。手持设备的关键在于人机交互技术的体现,所以一个十分友好的图形用户界面(GUI)是必不可少的。

1 系统平台构建

文构建的系统是实现一个掌上信息处理终端系统,集个人数字助理应用、网络应用、多媒体应用于一身,并成功运行在XSbase255嵌入式开发板上。整个系统包括四部分:

(1)引导装载程序(BootLoader),这是一段驻留在开发板上的代码,系统上电后首先被执行,对CPU、内存等进行初始化,完成内核映像的装载和引导;

(2)Linux内核,是在官方的2.4.18 linux内核基础上,加入了相应的硬件驱动和新的文件系统而构成的;

(3)图形用户界面,采用基于Qt/Embedded的Qtopia桌面环境;

(4)应用程序的编写与添加。本文重点介绍图形用户界面的移植和添加应用程序。表1给出了整个系统平台的结构。



表1 系统平台构建

2 硬件平台的选择

采用XSBase255开发板,这是一款比较理想的PDA、手机等等应用的开发系统。采用高性能(400MHz主频)和低功耗的Intel PXA255 处理器,64Mb SDRAM以及32MB 的FLASH(闪存)组成。640*480分辨率的LG TFT LCD,和触摸屏驱动ADS7843。PXA255处理器是Intel公司新近推出的取代Strong ARM的新一代嵌入式应用处理器,它拥有Thumb压缩指令、64位长乘法指令、扩展型DSP指令等先进特性。PXA255具有众多的扩展接口与无线接口,可支持PCMCIA、Compact Flash、MMC/SD Card、USB、Bluetooth IF、IrDA等设备。

3 嵌入式GUI的移植

3.1 Qt/Embedded选取

嵌入式Linux系统的有代表性的GUI系统主要有MiniGUI、MicroWindows、Tiny X以及Qt/Embedded。这些GUI系统在接口定义、体系结构、功能特性等方面存在着很大的差别。

Tiny-X,是标准X-windows在嵌入式系统的小巧实现,作为一个图形环境,X-window是成功的,但由于在体系接口上的原因,限制了它对游戏、多媒体的支持能力。

MicroWindows,其主要特色在于提供了C/S体系结构,同时也提供了相对完善的图形功能。但却无任何硬件加速能力,图形引擎中也存在着许多未经优化的低效算法。

MiniGUI,是建立在比较成熟的图形引擎之上,其特点是小巧精致。它尽量保持与Win32的兼容,这样在Win CE应用的场合,也可以使用MiniGUI。

Qt/Embedded,是一个专门为小型设备提供图形用户界面的应用框架和窗口系统。提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt 是 KDE 等项目使用的 GUI 支持库,所以有许多基于 Qt 的 X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。最终,在分析和比较了各种GUI的特点,我们选用Qt/Embedded作为移植对象。

3.2 Qt/Embedded底层支持分析


不管你选择的标准如何,大量现成的COTS电路板对于高性能嵌入式系统开发过程来说是至关重要的。当设计师拓展技术边界时,电路板供应商与标准化组织都必须赶紧升级规范,并用相应产品填补空缺。如果一直成功的COTS产品出现问题,则可能是业界不能决定一种或两种交换结构技术。在供应商制造的电路板支持多达6种相互竞争结构的情况下,预计按同一标准生产的模块之间的互操作问题会日益严重。Qt/Embedded  以原始  Qt  为基础,并做了许多出色的调整以适用于嵌入式环境。Qt/Embedded  通过  Qt  API  与  Linux  I/O  设施直接交互,成为嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省内存,因为它不需要一个X服务器或是Xlib库,它在底层撅弃了X lib,采用framebuffer(帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。Qt/Embedde的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的Xlib/Server系统。



表2  Qt/Embedded与Qt/X11的比较


Qt/Embedded的底层图形引擎基于framebuffer,framebuffer出现在2.2.x以上内核的版本当中的一种驱动程序接口。这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。framebuffer驱动程序[1]是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面:一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。


3.

随着互联网和移动通信技术的日益成熟,两者相互渗透和融合的步伐正在加快。21世纪被誉为“移动之王”时代,与此同时,嵌入式linux在手机、PDA(个人数字助理)等手持信息设备领域的应用出现了一个强劲的发展势头。手持设备的关键在于人机交互技术的体现,所以一个十分友好的图形用户界面(GUI)是必不可少的。

1 系统平台构建

文构建的系统是实现一个掌上信息处理终端系统,集个人数字助理应用、网络应用、多媒体应用于一身,并成功运行在XSbase255嵌入式开发板上。整个系统包括四部分:

(1)引导装载程序(BootLoader),这是一段驻留在开发板上的代码,系统上电后首先被执行,对CPU、内存等进行初始化,完成内核映像的装载和引导;

(2)Linux内核,是在官方的2.4.18 linux内核基础上,加入了相应的硬件驱动和新的文件系统而构成的;

(3)图形用户界面,采用基于Qt/Embedded的Qtopia桌面环境;

(4)应用程序的编写与添加。本文重点介绍图形用户界面的移植和添加应用程序。表1给出了整个系统平台的结构。



表1 系统平台构建

2 硬件平台的选择

采用XSBase255开发板,这是一款比较理想的PDA、手机等等应用的开发系统。采用高性能(400MHz主频)和低功耗的Intel A255 处理器,64Mb SDRAM以及32MB 的FLASH(闪存)组成。640*480分辨率的LG TFT LCD,和触摸屏驱动ADS7843。A255处理器是Intel公司新近推出的取代Strong ARM的新一代嵌入式应用处理器,它拥有Thumb压缩指令、64位长乘法指令、扩展型DSP指令等先进特性。A255具有众多的扩展接口与无线接口,可支持PCMCIA、Compact Flash、MMC/SD Card、USB、Bluetooth IF、IrDA等设备。

3 嵌入式GUI的移植

3.1 Qt/Embedded选取

嵌入式Linux系统的有代表性的GUI系统主要有MiniGUI、MicroWindows、Tiny X以及Qt/Embedded。这些GUI系统在接口定义、体系结构、功能特性等方面存在着很大的差别。

Tiny-X,是标准X-windows在嵌入式系统的小巧实现,作为一个图形环境,X-window是成功的,但由于在体系接口上的原因,限制了它对游戏、多媒体的支持能力。

MicroWindows,其主要特色在于提供了C/S体系结构,同时也提供了相对完善的图形功能。但却无任何硬件加速能力,图形引擎中也存在着许多未经优化的低效算法。

MiniGUI,是建立在比较成熟的图形引擎之上,其特点是小巧精致。它尽量保持与Win32的兼容,这样在Win CE应用的场合,也可以使用MiniGUI。

Qt/Embedded,是一个专门为小型设备提供图形用户界面的应用框架和窗口系统。提供了丰富的窗口小部件(Widgets),并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面。Qt 是 KDE 等项目使用的 GUI 支持库,所以有许多基于 Qt 的 X Window 程序可以非常方便地移植到 Qt/Embedded 版本上。最终,在分析和比较了各种GUI的特点,我们选用Qt/Embedded作为移植对象。

3.2 Qt/Embedded底层支持分析


不管你选择的标准如何,大量现成的COTS电路板对于高性能嵌入式系统开发过程来说是至关重要的。当设计师拓展技术边界时,电路板供应商与标准化组织都必须赶紧升级规范,并用相应产品填补空缺。如果一直成功的COTS产品出现问题,则可能是业界不能决定一种或两种交换结构技术。在供应商制造的电路板支持多达6种相互竞争结构的情况下,预计按同一标准生产的模块之间的互操作问题会日益严重。Qt/Embedded  以原始  Qt  为基础,并做了许多出色的调整以适用于嵌入式环境。Qt/Embedded  通过  Qt  API  与  Linux  I/O  设施直接交互,成为嵌入式Linux端口。同Qt/X11相比,Qt/Embedded很省内存,因为它不需要一个X服务器或是Xlib库,它在底层撅弃了X lib,采用framebuffer(帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。Qt/Embedde的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的Xlib/Server系统。



表2  Qt/Embedded与Qt/X11的比较


Qt/Embedded的底层图形引擎基于framebuffer,framebuffer出现在2.2.x以上内核的版本当中的一种驱动程序接口。这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。framebuffer驱动程序[1]是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面:一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。


3.

相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!