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

发布者:sumig最新更新时间:2012-05-17 来源: 电子产品世界 关键字:GUI移植  Qt  Embedded 手机看文章 扫描二维码
随时随地手机看文章

随着互联网和移动通信技术的日益成熟,两者相互渗透和融合的步伐正在加快。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作为移植对象。[page]

3.2   Qt/ Embedded底层支持分析

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系统。

Qt

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



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

3.3 Qt/Embedded和Qtopia的移植

移植过程中我们采取了宿主机和目标板的开发模式。宿主机是一台运行Linux 的PC 机,目标板即hybus开发板。先在宿主机上调试通过后,再移植到目标板上。

3.3.1 宿主机上的移植

前面介绍过Qt/Embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vitural framebuffer)来模拟帧缓冲。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序,允许我们在桌面及其上开发Qt嵌入式程序,而不需要在命令台和X11之间来回切换。qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。这样我们在每次调试应用时不需要总是刷新嵌入式设备的FLASH存储空间,从而加速了应用的编译、连接和运行周期。

因此在最初编译配置嵌入式Linux内核时必须使其支持帧缓冲。宿主机上的移植需要的工具及环境变量见表3。其中环境变量可以直接用export 来声明,也可以在~/.bash_profile脚本文件中进行设置。

宿主机移植所需工具及环境变量声明

表3  宿主机移植所需工具及环境变量声明



特别指出,在配置qt-2.3.7时,./configure -qconfig -qvfb -depths 4,8,16,32 就是指定Qt嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32位的显示颜色深度。运行Qt的虚拟缓冲帧工具的方法是:在Linux图形模式下运行命令:./qvfb &。如果要把Qt嵌入式应用程序的显示结果输出到虚拟缓冲帧时,运行时需在程序名后加上-qws选项。如./canvas-qws。

Qtopia即QPE(Qt Palmtop Environment )是由著名的Trolltech公司基于Qt的嵌入式版本Qt/Embedded库的基础上,专门针对PDA、SmartPhone这类运行嵌入式 Linux的移动计算设备和手持设备所开发的开放源码的一套应用程序包和开发库。Qtopia是基于qt/embedded程序库编写的应用程序环境, (Qtopia是Qt在Linux/embedded Linux版本里的一个application实现。)界面优美。主要应用于高端手机,pda等嵌入式系统,具有广阔的发展前景。

3.3.2 目标板上的移植

目标板上的移植与宿主机类似,只需将编译参数做一定的修改即可。表4列出了qtopia移植中qtembedded共享库的支持,环境变量声明和关键的编译配置命令,以及最后目标板上qpe的架构。图1是在XSbase255开发系统上移植Qt/Embedded和Qtopia的显示截图。

Qtopla配置编译及其架构

                                                      表4  Qtopla配置编译及其架构

基于XSbase的Qtopia图形

图1  基于XSbase的Qtopia图形[page]

4  添加应用程序到qtopia

如前所述,我们已经安装好了Qtopia应用环境。下面介绍如何在Qtopia里添加我们编写的应用程序(camera)例子,具体Qt程序的编写不在本文内容之内。

(1) 建立camera程序的图标文件制作一个32×32大小的PNG格式的图标文件,将此文件存放在Qtopia/pic/inline目录下,然后我们要用到qt-x11-free-3.3.3里的一个工具qembed将Qtopia/pics/inline下所有的图形文件转换成一个C语言的头文件,此头文件包含了该目录下的图形文件的rgb信息。

(2) 重新交叉编译qtopia。

(3)建立.desktop文件,将其保存在qtopia/apps/applications目录下,具体内容可参考qtopia自带应用的.desktop文件。

(4)制作文件系统映像我们需要利用原有的文件系统映像,把新建的应用程序的相关文件加入其中。表5为我们下载到Flash中的JFFS2的文件系统结构。根目录下除opt以外的文件目录都来自原有文件系统。我们首先需要把新建的应用程序的相关文件(包括启动器文件,包含了图标的库文件 libqte.so.*和应用程序的可执行文件)复制到qpe的对应的目录下。接下来通过JFFS2工具mkfs.jffs2创建生成新的文件系统映像。利用bootloader将生成的文件系统映像下载后写入flash,从而为内核启动作好了根文件挂载的准备。

文件系统组织图

表5 文件系统组织图



(5)自动运行我们对嵌入式系统上的linux启动过程进行了研究,若要使qpe能够自动运行,我们需要改写其脚本文件,在etc/profile脚本中,做如下添加。 重新运行qtopia,就可以看到我们添加的应用的图标,点击此图标就可以运行此应用程序了。图2是我们编写的Camera程序在 Qtopia下的截图。

添加camera程序后的Qtopia

图2  添加camera程序后的Qtopia

参考文献
1 Intel XScale. http://www.intel.com/design/pca/applicationsprocessors.
2   'Linux  Device Driver', Alessandro Rubini & Jonathan Corbet. 

关键字:GUI移植  Qt  Embedded 引用地址:基于Qt/Embedded的GUI移植及应用程序开发

上一篇:μC/OS-Ⅱ在MSP430F149上的移植
下一篇:嵌入式LINUX系统的静/动态集成调试模式

推荐阅读最新更新时间:2024-03-16 12:59

μC/GUI在MSGl9264液晶上的移植
介绍在MSP430F149单片机上移植,μC/CUI到MSCl9264液晶的过程, 详细阐述了,μC/GUI移植的原理以及在移植中应注意的事项。 μC/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。与μC/OS一样,μC/GUI具有源码公开、可移植、可裁减、稳定性和可靠性高的特点 。采用μC/GUI,开发人员可以很方便地在液晶上显示文本、曲线、图形以及各种窗口对象如按钮、编辑框、滑动条等,可完全产生类似于Windows的显示效果。另外,μC/GUI提供了在VC下的仿真库,这使得用户完全可以在Windows下仿真μC/GUI的各种效果。 采用μC/GUI,可以大大降低嵌入式系统中显示设计的难度,但μC
[单片机]
μC/<font color='red'>GUI</font>在MSGl9264液晶上的<font color='red'>移植</font>
诺基亚出售Qt开发平台业务 转向WP7再作调整
    北京时间3月8日凌晨消息,诺基亚在全面转向Windows Phone 7手机操作系统后再度作出重大调整,将Qt开发平台业务出售给一家名为“Digia”的芬兰公司。   2008年,诺基亚通过收购挪威手机软件厂商Trolltech而获得Qt平台。开发人员可借助Qt制作出针对塞班和MeeGo手机操作系统的应用软件,并快速部署到其他平台。   值得注意的是,诺基亚出售的是Qt平台业务,而非Qt平台本身。该公司正致力于将这一平台转变为一种开放管理模式。诺基亚去年6月宣布了这一计划,何时完成尚无时间表。   Digia计划在台式机和嵌入式系统中推广Qt开发平台。根据协议,Digia将获得3500个Qt平台用户,并聘请19名诺基
[手机便携]
基于嵌入式Qt的车载GUI平台的设计
1 引言     随着经济社会的不断发展汽车已进入普通家庭,汽车用户对车载娱乐系统的要求不断地提高,希望汽车载娱乐系统的功能更加强大娱乐设施更加完美。嵌入式GUI(Graphical User Interface)可以满足用户需求,人机交互好,作为车载娱乐系统中人机交互界面的开发平台,对整个系统的设计起着决定性作用,越来越受到开发者的青睐。目前比较流行的GUI平台有Qt/Embedded、紧缩的X Windows系统、MicroWindows以及MiniGUI系统。     X Window系统是一个基于客户/服务器(Client/Server)结构的视窗系统,基于X的终端(服务器)上显示出来。此系统配置在大多数的UNIX
[嵌入式]
罗德与施瓦茨公司将参加embedded world 2015展会
罗德与施瓦茨公司将在纽伦堡举行的embedded World 2015展会中重点展示其Scope-of-the-art系列示波器的亮点以及多种创新技术。包括:R&S RTO系列和R&S RTE系列示波器支持16bit高清晰度;R&S RTM系列示波器支持更多可选择带宽,历史回放模式以及内存分段采集技术;全系列示波器支持更多的行业标准一致性测试,更多的处罚与解码选件功能等。 2015年1月8日,慕尼黑 罗德与施瓦茨公司持续致力于开发新型示波器产品以及示波器的多种应用功能和附件。参观者将在于德国纽伦堡举行的embedded World 2015展会中一览其示波器产品及测试解决方案。 R&S示波器支持16bit高
[测试测量]
IAR为兆易创新RISC-V提供Embedded Workbench开发工具
IAR Systems和兆易创新宣布了一项新的合作,IAR将为兆易创新的RISC-V的微控制器(MCU)提供开发工具。 IAR产品经理Thomas Andersson在一份新闻稿中说:“我们对与兆易创新的合作感到非常兴奋,我们将为他们屡获殊荣的RISC-V 32位处理器提供领先的开发工具支持。兆易创新处理器和IAR Embedded Workbench的结合为RISC-V社区增加了强大的设备和开发工具。” 随着RISC-V技术的扩展,对开发工具的需求也在增加。IAR和兆易创新通过将IAR的编译器和调试器技术与兆易创新基于RISC-V的MCU相结合来满足这一需求,可解决希望从事RISC-V开发却缺少相关开发工具支持的局面。
[嵌入式]
基于Qt/Embedded的蓄电池状态检测控制软件设计
1 引言   蓄电池生产过程中的状态参数检测是保证蓄电池出场质量的关键。然而目前,国内蓄电池的状态检测主要依靠蓄电池电压巡检仪、蓄电池电导测试仪和内阻容量测试仪等仪器,这些仪器只是能够实现单一的检测蓄电池状态,而且操作灵活度有限,数据的存储、传输以及实时分析都需要额外的pc的辅助来实现, 已经不能很好的满足当前许多要求较高的工业现场控制的应用。为了使蓄电池生产线上的蓄电池性能参数测量更加灵活,本文提出一种基于qt/embedded的便携式蓄电池状态检测系统,实现了对蓄电池的多路数据采集,控制软件界面友善、检测仪器轻巧方便。 2 系统总体设计与实现   本检测系统由数据采集部分、a/d转换
[汽车电子]
基于<font color='red'>Qt</font>/<font color='red'>Embedded</font>的蓄电池状态检测控制软件设计
Atmel的6通道触摸控制芯片AT42QT1060
爱特梅尔公司 ( Atmel © Corporation ) 宣布推出全新集成了 6 个触摸感应通道的触摸控制芯片 AT 42QT 1060 , 能够通过 PWM 的输出功能直接驱动多达 7 个低电流 LED 。该器件具有宽工作电压范围 ( 从 1.8 至 5.5VDC) ,待机模式下的耗电量低于 1uA ,能够延长电池寿命。 AT 42QT 1060 采用微型 4mm x 4mm MLF28 封装,适用于手机和其它手持式设备。 AT 42QT 1060 是爱特梅尔全面的电容性触摸控制器系列的最新产品,这些器件以量研科技 (Quantum Research Group)
[安防电子]
嵌入式Linux中基于Qt/Embeded触摸屏驱动的设计
嵌入式 Linux 以其开源性、内核的健壮性和稳定性、可裁减性,以及有着专业的商业公司和世界顶尖的自由软件开发者的支持和维护等各方面优势,吸引了嵌入式系统开发商的目光,成为嵌入式操作系统的新宠。触摸屏由于其友善的人机交互性、操作简单灵活、输入速度快,大大简化了嵌入式系统的输入而被广泛运用。本文介绍了基于嵌入式 Linux 系统平台上 Qt/Embedded 的触摸屏驱动的设计。该方案已成功运用于工程机械安全仪和电能质量监测仪项目,实现了 GUI(图形用户操作接口)界面对触摸屏的支持,并能根据触摸屏的不同进行定制。 1、Qt/Embedded 简介 Qt/Embedded 是著名的 Trolltech 公司发布的专门面向嵌
[单片机]
嵌入式Linux中基于<font color='red'>Qt</font>/Embeded触摸屏驱动的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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