一、Qt、Liod-270平台简介
Qt/Embedded是著名的Qt库开发商TrollTech(http://www.trolltech.com/)发布的面向嵌入式系统的Qt版本。因为Qt是KDE等项目使用的GUI支持库,所以有许多基于Qt的X Window程序可以非常方便地移植Qt/Embedded版本上。自从Qt/Embedded发布以来,就有大量的嵌入式Linux开发商转到了Qt/Embedded系统上,并且有多种免费版本可以使用。本次2006年"英特尔杯"全国大学生电子竞赛所用的Liod-270平台,除了可以使用TinyX以外也可以选择Qt。本文将以亿道电子提供的Liod-270平台为例,详细说明QTE/Qtopia的移 植过程。
Trolltech提供三大Qtopia版本:Qtopia手机版,Qtopia PDA版本和Qtopia消费电子产品平台。本文采用的是Qtopia PDA版的免费版本。
此次竞赛平台Liod是亿道电子设计、生产并捐赠的。武耀博德信息技术有限公司( www.51board.com )是 亿道电子 旗下全资控股的嵌入式方案设计公司,其前身是亿道电子的嵌入式研发中心。武耀博德专业提供基于英特尔嵌入式处理器的ODM/OEM项目设计、测试、生产服务,涉及从高校实验平台、导航系统、数字家庭、多媒体终端、行业PDA、监控项目、工业控制、RFID物流项目等等领域。
二、移植过程
1.编译准备
在编译QTE和QPE之前,我们先要下载QTE和QPE的源代码。
上述的软件都可以在"英特尔杯"全国大学生电子竞赛的支持网站(www.xsbase.com )上下载得到。解压上述的源代码包。
2.安装Toolchain
使用cp命令将 Xsbase-arm-linux-qt.tar.gz文件拷贝到PC上/usr/local/下,然后进入到/usr/local/目录下,解压该文件。
为了之后在任何目录下面都能够使用Toolchain,必须要对路径进行设置。打开/root/.bash_profile文件来设置路径,用VI编辑器打开/root/.bash_profile文件并添加下述的路径:
保存并退出该文件,使用source命令来使其路径起作用。
3. 编译Qt/X11
编译qt-x11的唯一目的就是为编译QTE提供uic(用户接口编译器)uic用来把.ui文件转成.h和.cpp文件.uic是for x86的文件。
4. 编译QTE的库
拷贝qconfig-qpe.h文件到QTE中。
进入到qt-2.3.7文件夹里面,并进行configure。
configure 选项中:-qconfig qpe是编译qtopia的配置参数。执行configure的话会问到如下几个问题:
- 是否同意license?选择yes。
- 选择colordepth时选择16。
- 是否支持Qt Virtual Framebuffer?在ARM上用,可以选择 no。Qt Virtual Framebuffer(qvfb)程序在X上实现Framebuffer。
环境设置结束后弹出如下信息,因为是设置为ARM用,最下面一行的Build Type中会出现linux-arm-g++ -share。
然后就可以执行make sub-src。
编译结束后查看Qt/Embedded 库来确认编译是否正常。确认各个库文件的连接关系。
利用file命令确认生成的执行文件是否适合目标平台即生成ARM平台的二进制文件。
前面将QT/E编译了目标板上,但我们发现还不能进行操作,那是因为板子的触摸屏设备驱动和QT/E的readMouseData()函数不匹配,需要修改QT/E源代码。利用vi工具打开管理触摸屏的QT/E源代码/root/qt-2.3.7/src/kernel/qwsmouse_qws.cpp,并参考ARMLinux系统的触摸屏ADS7843驱动代码(/driver/char/ads7843_ts.c)中的读函数来适当地修改参数值。
下面是修改好的readMouseData()的代码。
5编译工具库
编译Qtopia的时候需要用到jpeg和libuuid的库。这两个库需要编译到我们的交叉编译工具中。
首先编译e2fsprogs。
进入 到e2fsprogs-1.32/lib/uuid文件夹里面,打开uuidP.h文件,把#include <ext2_types.h>改成#include "ext2_types.h"。修改e2fsprogs-1.32/lib/uuid下面的Makefile文件。
编译后会生成我们需要的库文件libuuid.a。
我们需要把它拷贝到我们的工具链中。
Qtopia里面的BMP和JPEG格式的图片的显示需要调用到JPEG的库函数,因此我们需要编译jpeg的库。
Configure后生产Makefile文件,我们需要编译jpeg for ARM的库,编译前需要修改Makefile。
然后进行make 就可以了。
6 编译Qtopia
所有的准备工作就完成了,就可以开始编译QT的图形用户界面Qtopia了。先解压。
先configure一下。
然后直接make一下就开始编译Qtopia了。
编译完成后,我们可看到以下的文件夹是我们需要的。包括文件夹目录apps , bin , etc , li8n , lib , pics , plugins ,include共八个文件夹。
7运行Qtopia
在文件系统的/usr目录下新建一个qpe文件夹,把上面编译好的Qtopia文件夹拷贝到这个qpe文件夹里面,同时把qt-2.3.7/lib下面的库文件和font文件夹一起拷贝到文件系统的/usr/qpe/lib下面。
运行Qtopia。运行后,首先可以看到Welcom to Qtopia,然后一些语言和时间的设置,最后就可以看到类似下面的界面,至此就移植全部完成了。