[QTE/Qtopia在linux智能手机中的应用]linux常用命令
摘要:随着嵌入式系统的发展,嵌入式系统GUI成为一个新的研究热点。QTE/Qtopia是一套十分完善的嵌入式图形系统解决方案,它采用framebuffer作为底层图形引擎。QTE是底层的核心库,提供了图形界面编程接口,Qtopia是专门针对嵌入式产品的可定制和开发的用户界面系统。文中分别介绍了它们的结构和框架,并给出了它们的移植方案,包括交叉编译环境建立,文件修改,编译参数设置。
关键词: 嵌入式linux;QTE/Qtopia;帧缓冲;智能手机
中图分类号:TP39文献标识码:A文章编号:1009-3044(2007)18-31687-03
The Applications of QTE/Qtopia on Smart Phone
CHEN Jiang
(Tongji University Software School,Shanghai 201804,China)
Abstract:with the development of embedded system, embedded GUI has became a new research focus. QTE/Qtopia is a complete solution of embedded GUI, it use framebuffer as the GUI engine. QTE is the core library, it supply the programming API. Qtopia is unrivaled as the application platform for efficient creation of Linux-based devices. The paper introduce the architecture of the QTE/Qtopia and how to porting them to a embedded system including the cross compile environment set up , source modify , compile arguments setting.
Key words:embedded linux;QTE/Qtopia;framebuffer;smart phone
1 前言
随着3G时代的到来,传统的手机已经越来越不能满足大批量的数据处理和多媒体应用了,在这种背景下,智能手机应运而生。什么是智能手机,说通俗一点就是一个简单的“1+1=”的公式,“掌上电脑+手机=智能手机”。Symbian和Windows CE、Palm、Linux是当前智能手机主要的4种操作系统,其中Linux以其开源以及方便的移植特性赢得了许多开发者的青睐。但是linux只提供一个底层的操作系统,对于一款智能手机来说,一个友好的UI,以及丰富的功能才是最重要的,在这点上QTE/QTOPIA就为我们提供了一个很好的选择,它是由Trolltech公司研发的,专用于嵌入式平台的解决方案。
2 软件体系结构
嵌入式linux平台上的软件架构主要分为四层,如图1所示。
图1 嵌入式平台软件体系机构
2.1 framebuffer
framebuffer是一种能够提取图形的硬件设备,是用户进入图形界面很好的接口。有了framebuffer,用户的应用程序不需要对底层的驱动的深入了解就能够做出很好的图形。对于用户而言,它和/dev 下面的其他设备没有什么区别,用户可以把
framebuffer看成是显示内存的一个映像,将其映射到进程机制空间以后,就可以直接进行读写操作了,而写操作可以直接反映在屏幕上。帧缓冲驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。帧缓冲为linux图形设备提供了一个抽象接口,它允许上层应用程序在图形模式下对显示缓冲区进行读写操作,而应用程序不必关心物理显存的位置,换页机制等等。
2.2 QTE
QTE是在嵌入式环境下所使用的QT,QTE是Server/Client结构,延续了QT在X上的强大功能,在底层摒弃了Xlib,仅采用帧缓冲作为底层图形接口。同时将外部输入设备抽象为keyboar和mouse输入事件,QTE类库完全采用了C++封装,提供给应用程序开发者开发图形界面所需的所有功能。QTE库的稳定性和健壮性比较好。它的类库完全兼容于同版本的QT-x11,使用X下的开发工具可以直接开发基于qt/embedded的应用程序。
QTE具有下列优点:优良的跨平台特性;面向对象;良好的封装机制使得QTE的模块化程度非常高,可重用性能较好。QTE使系统获得高效的工作性能是它拥有一个重要机制-信号与槽机制。信号和槽是一种高级接口,应用与对象之间的通信,是qt的核心特性,也是区别于其他工具包的地方。信号和槽能够携带任意数量和类型的参数,他们是类型完全安全的,不像回调函数那样会产生内核泄露。
2.3 Qt/Embedded 窗口系统结构
2.3.1服务进程
QT/Embedded 必须有一个服务进程用来处理设备输入和可重绘区域的管理。任何进程都可以作为服务进程只要传递一个 �qws 参数或者用QApplication::GuiServer 构造这个进程。服务进程和客户进程通过PF_LOCAL socket进行通讯。同时也存在一个共享内存用来保存各个顶层控件的区域。Qt/Embedded 模型最小化了客户进程与服务进程之间的通讯,大部分的行为都由客户进程自己完成。比如所有的绘画和子控件区域操作都由客户进程自己完成而不要通过服务进程。
2.3.2 窗口管理
服务进程维护所有顶层控件需要绘制的区域。执行以下任何一个操作都会引起所有顶层控件的可重绘区域的更新:
(1)show()
(2)hide()
(3)move(), setGeometry(), resize()
(3)raise(), lower()
所有以上的操作都需要一个消息传递到服务进程,由以上操作引起的的控件事件也会自发的产生。子控件区域并不是由服务进程维护,因此在子控件区域执行以上操作并不会引起客户进程和服务进程之间的通讯。
2.3.3设备输入
服务进程读取设备输入并分发这些事件到活动的客户端,按键事件和鼠标事件都由服务进程处理。
2.3.4QCop
服务进程控制QCop消息的分发。一旦客户进程创建了一个QCop通道,服务经常拿就把这个客户进程加到一个通道列表中。QCop消息首先发送给服务进程然后转发给所有正在监听这个通道的客户进程。
2.3.4绘画
QPainter 本质上是对Gfx 图形系统的封装。QGfx类是一个高层次的绘画封装。它的子类实现了其中的具体的绘画功能,比如,QGfxRaster 实现了在光栅设备上的绘画操作。如果设备支持硬件加速,通常也在这个类中实现其功能。Qt/Embedded 客户端直接在framebuffer上进行绘画操作。底层的图形系统(QGFx)处理上层的共享内存中的区域剪切。这期间不需要和服务进程进行任何通讯。
2.4Qtopia 概述
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 Qtopia是一种可定制的开发环境和用户界面,从本质上说,Qtopia之于Linux犹如UIQ和Series 60之于Symbian。Qtopia的一些主要特色包括低成本、灵活性以及可定制性,它基于跨平台的C++开发工具――Qt/Embedded之上,它健全且稳定,并可以配置为多种内存模板。基于Qt的经验,Qtopia向客户提供全部源代码,让客户可以创建与现有程序紧密结合的定制程序、定制用户界面 和程序发布工具,并能在他们需要使用的处理器上编译,并且为手机开发商提供一定程度的独立性以及创新和控制。厂商可以使用Qtopia实现对品牌标识和用户界面设计的全面控制,而且可以在许多设备上运行相同的源代码,如手机、PDA和其它消费设备。
Qtopia平台目前有两种版本:面向PDA应用的Qtopia PDA和 面向智能电话和功能型手机应用的Qtopia Phone。以Qtopia Phone为例,它包含6个组成部分,分别是插件(plugin)、服务器(server)、客户端软件和内置应用软件、文件系统、调制解调器 (modem),以及帧缓冲(framebuffer),它们之间的关系如图2所示。
图2 Qtopia 模块结构
其中,Qtopia launcher/server是服务进程,它控制着窗式系(windowing system)、进程间通信、启动所有应用程序和其它主要任务。而插件管理器(Plugin Manager)则确保不同插件类型在应用程序/服务器启动过程中都被加载,并提供了简洁的开发途径。图中显示的文件系统包括文档、配置和系统文件,以及系统中和可移除媒介中的专用文件。
Qtopia Phone提供标准的GSM AT指令,并支持专有指令。Qtopia Phone其它主要特性包括:
(1)平台级特性。Qtopia的核心功能表现在其平台级特性。通过强大的操作环境,它仅凭较低的内存就能实现智能电话功能。其平台还具备电话技术特性,包括无线配置、SMS、MMS、GPRS和现代的界面。
(2)强大的开发环境。为了正确地定制智能手机,制造商需要有强大的开发工具。奇趣科技提供了一整套工具集来定制和扩展Qtopia电话版本。强大的开发环境简化了在桌面系统进行开发,进而交互编译到目标设备的过程。
(3)可定制的用户界面。专门为移动电话用户设计,其图形用户界面完全可定制。程序制作者和网络操作人员可以更改图标、布局和外观。终端用户可以自由更改设置,从而使他们的电话保持鲜明的个性特征。
(4)强大的电话程序集。Qtopia电话版含有一套强大的电话程序集,包括PIM、电话(信息客户端、拨号器 及其它)、游戏、多媒体播放器以及一些电话个性化应用。Qtopia电话版和PDA版可以兼容,可将1,000多个现有的Qtopia应用程序导入到 Qtopia电话版上。
(5)同步框架。用户可以把他们的电话与Trolltech的跨平台桌面PIM集成或微软Outlook同步。Qtopia Phone还可以同步联系人、日志、计划事项、多媒体文件和文档等。
3 Qtopia 移植
移植使用的版本是Qtopia-opensource-4.2.x. 从版本4开始,Trolltech将Qte并入了Qtopia,并推出了新的Qtopia4。在该版中,原来的Qte被称为Qtopia Core,作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。原来的Qtopia则被分成几层核心的应用框架和插件系统被称为 Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone等。这样移植过程就比较简单了不需要单独编译qte,只要编译qtopia就可以了。
3.1安装交叉编译器 arm-linux-gcc-3.4.1.tar.bz2
步骤如下:
# tar jxvf arm-linux-gcc-3.4.1.tar.bz2
设置环境变量:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
3.2编译 qtopia-opensource-src-4.2.1.tar.gz
编译前约定:
安装目录为:/mnt/qtopia4/qtopiatslibinstall
目标目录为:/mnt/qtopia4/qtopiatslibtarget
下面解压软件包:
# tar zxvf qtopia-opensource-src-4.2.1.tar.gz
然后重命名解压后的包:
# mv qtopia-opensource-4.2.1 qtopiatslibinstall
# cd qtopiatslibinstall
为了让编译适应于目标平台和去除编译中将出现的错误,我们需要对源码进行修改和裁减。因此,编译的详细过程如下:
3.2.1修改源码包
# cd src/libraries/qtopiabase/
# cp custom-linux-cassiopeia-g++.h custom-linux-arm-g++.h
# cp custom-linux-cassiopeia-g++.cpp custom-linux-arm-g++.cpp
3.2.2裁减Qtopia core的库
# vi qtopiacore/qconfig-qpe.h
注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:
其它宏定义根据需要进行注释。
保存后将qconfig-qpe.h拷贝到global目录。
# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/
global/qconfig-qpe.h
3.2.3配置源码包
首先,确定目录为: /mnt /qtopia4/qtopiatslibinstall
然后进行配置,执行如下命令:
# ./configure -silent -release
-image /mnt/nfs/qtopia4/qtopiatslibtarget
-prefix /mnt/nfs/qtopia4/qtopiatslibtarget
-xplatform linux-arm-g++ -arch arm -no-qvfb
-displaysize 640x480 -no-modem
-extra-qtopiacore-config "-release -xplatform qws/linux-arm-g++ -embedded arm -opengl -qconfig qpe -qt-sql-sqlite
-depths 4,8,16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp
-qt-mouse-tslib -I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib" 2>../qtopiaconfgureERR.txt
3.2.4编译安装源码包
执行如下命令:
# make 2>../qtopiamakeERR.txt
# make install
编译安装完成后,在/mnt/nfs/qtopia4/qtopiatslibtarget目录下产生各个目标文件。
到此为止,整个移植完成。
4 结束语
从智能手机的发展趋势来看,现在的智能手机具备了 PDA的大部分功能,特别是个人信息管理以及基于无线数据通信的浏览器和电子邮件功能。智能手机为用户提供了足够的屏幕尺寸和带宽,既方便随身携带,又为 软件运行和内容服务提供了广阔的舞台,很多增值业务可以就此展开,如:股票、新闻、天气、交通、商品、应用程序下载、音乐图片下载等等。融合3C (Computer、Communication、Comsumer)的智能手机必将成为未来手机发展的新方向。
参考文献:
[1]trolltech.QT/Qtopia online doc[OL].https://doc.省略/4.1/qtopiacore.html.
[2]倪继利. Qt及Linux操作系统窗口设计[M].电子工业出版社,2006.4.
[3]Jonathan Corbet,Alessandro Rubini, Greg Kroah-Hartman . Linux设备驱动程序[M].中国电力出版社,2006,1.
[4]Karim Yaghmour.Building Embedded Linux Systems[M].中国电力出版社,2004,12.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
