打印
[ZLG-ARM]

qtopia-opensource-4.3.2在arm上的移植

[复制链接]
1427|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armqt|  楼主 | 2009-7-3 13:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Qtopia 是Trolltech 公司为采用嵌入式Linux 操作系统的消费电子设备而开发的综合应用平台, Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。 Qtopia的特性如下 所示:

  窗口操作系统 游戏和多媒体 工作辅助应用程序 同步框架 PIM应用程序 Internet应用程序 开发环境 输入法 Java集成 本地化支持 个性化选项 无线支持 

Trolltech 提供三大Qtopia 版本:

  Qtopia 手机版、Qtopia PDA 版和Qtopia 消费电子产品平台

  Qtopia 手机版: 面向嵌入式Linux 的Qtopia 手机版(Qtopia Phone) 是Qtopia 的一个自定义版本用于内存有限的智能手机和功能手机它的用户界面可自定义内存占用量低手机制造商使用它可以创建令人赞叹的图形用户界面从而令手机卓越超群Qtopia 手机版有两个版本键盘驱动和手写笔驱动。

  Qtopia PDA 版: Qtopia PDA 版Qtopia PDA 是一个强大的平台专用于基于Linux操作系统的PDA 个人数字助理设备许多PDA 都已采用了Qtopia,Qtopia PDA 版已经成了事实上的Linux 标准它代表了可行的第三种PDA 设计方案Qtopia PDA 版具有可定制的用户界面支持多种不同的屏幕尺寸以及横向和纵向布局。

  Qtopia 消费电子产品平台:While Qtopia 手机版和Qtopia PDA 版是针对移动电话和PDA 制造商的统包解决方案,而Qtopia 消费电子产品平台(Qtopia CEP) 则是一套高层次开发平台适用于那些希望自行设计和开发应用套件的制造商。

Qtopia CEP使得制造商能够在形形色色的手写笔和键盘驱动的设备上创建自定义的环境这些设备包括电视机Web Pad 无线联网板机顶盒以及许多其它基于Linux 的设备等等。 Qtopia 产品系列旨在为基于Linux 的消费电子设备提供和创建图形用户界面它为制造商提供了前所未有的灵活性和众多选择。
qtopia-opensource-4.3.2在arm上的移植过程如下:

1、下载
下载地址:
ftp://ftp.trolltech.com/qtopia/source/qtopia-opensource-src-4.3.2.tar.gz

2、准备工作
建立build目录和安装目录:
/opt/qtopia/source 源代码解压到该目录
/opt/qtopia/target 编译目录
/usr/local/qtopia 安装目录

3、编译tslib-1.3.tar.bz2 
详细步骤如下: 
# tar jxvf tslib-1.3.tar.bz2  
# cd tslib-1.3 
# export CC=arm-linux-gcc 
# export CXX=arm-linux-g++ 
# ./autogen.sh 
# ./configure --prefix=/opt/tslib --host=arm-linux 
# make 
# make install

注意:
当然,在ubuntu下要先安装两个工具,如果没安装,./autogen.sh是通不过的,安装如下:
#sudo apt-get install libtool automake
Make 过程中有个错误,如下:
libtool:link: only absolute run-paths are allowed
要修改/tslib/plugins/Makefile里面找rpath将
LDFLAGS :=$(LDFLAGS) -rpath $(PLUGIN_DIR)
修改为:
LDFLAGS :=$(LDFLAGS) -rpath `cd $(PLUGIN_DIR) && pwd`

4、修改源代码
把qtopia-opensource-src-4.3.2.tar.gz解压到source里
#cp qtopia-opensource-src-4.3.2.tar.gz /opt/qtopia/
#tar –xzvf qtopia-opensource-src-4.3.2.tar.gz 
#mv qtopia-opensource-4.3.2 source
修改如下:
#cd source 
# vi qtopiacore/qconfig-qpe.h 
首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现: 
// Qtopia Core 

/* 
#ifndef QT_NO_QWS_CURSOR 
#  define QT_NO_QWS_CURSOR 
#endif 
*/ 

/* 
#ifndef QT_NO_QWS_MOUSE 
#  define QT_NO_QWS_MOUSE 
#endif 
#ifndef QT_NO_QWS_MOUSE_AUTO 
#  define QT_NO_QWS_MOUSE_AUTO 
#endif 
*/ 

其它宏定义根据需要进行注释。 
保存后将qconfig-qpe.h拷贝到global目录。 
# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h 

注释掉其他文件里的QT_NO_QWS_CURSOR的定义 
# vi qtopiacore/qt/src/corelib/global/qfeatures.h 

注释掉如下内容: 

/* 
#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR)) 
#define QT_NO_QWS_CURSOR 
#endif 
*/ 

保存退出。 
# vi qtopiacore/qt/src/corelib/global/qglobal.h 

注释掉以下内容: 
//#    define QT_NO_QWS_CURSOR

5、配置、编译qtopia
#cd /opt/qtopia/target
#../source/configure -release -image /usr/local/qtopia -prefix /usr/local/qtopia -xplatform 
linux-arm-g++ -arch arm -no-qvfb -displaysize 800x480 -no-modem -extra-qt-config “-little
-endian” -extra-qtopiacore-config '-release -xplatform qws/linux-arm-g++ -embedded arm -
qconfig qpe -depths 8,16,32 -qt-sql-sqlite  -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp  -qt
-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib'

主要配置选项解说如下: 
-xplatform linux-arm-g++ -arch arm 目标平台为arm-linux,体系结构为arm。 
-no-qvfb  目标平台已支持framebuffer,因而不使用虚拟帧缓冲。 
-extra-qtopiacore-config 为Qtopia core 配置选项。 
-xplatform qws/linux-arm-g++ -embedded arm 目标平台编译配置文件使用
qtopiacore/qt/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm。 
-qconfig qpe 使用配置文件qconfig-qpe.h,若使用qconfig-large.h配置文件,则使用-qconfig large
选项。 
-qt-sql-sqlite 数据库支持Sqlite。 
-qt-kbd-usb 键盘支持usb协议。 
-no-mouse-linuxtp -qt-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib 触摸屏协议不支持linuxtp,支持tslib,并在后面添加上刚才编译的tslib的头文件和库。

#make 
#make install

Make 过程会出现一些问题,无非就是一些库没安装,装上即可。

编译完后,把opt/tslib/lib下的库复制到/usr/local/qtopia/lib下

6、进入开发板,配置与运行
#mount –t nfs 192.168.2.223:/ /tmp –o proto=tcp –o nolock
#mkdir –p /usr/local/qtopia
#mount /tmp/usr/local/qtopia /usr/local/qtopia
#cd /usr/local/qtopia/bin
#export QWS_DISPLAY='LinuxFb:mmWidth35:mmHeight45:0'
#./qpe &

如果没问题民,就成功了。

后记:
1、编译完tslib后,要换一个终端来编译qtopia,就是取消环境变量CC和CXX,否则就会出现错误
2、触摸还没校准,可能是内核的触摸驱动没调好,也可能是环境变量还没设好
3、因为开发板的文件系统下已有时区,刚好是在/usr/share/zoneinfo下,所以不用复制过来了
 
   

相关帖子

沙发
qtopia| | 2009-7-4 12:49 | 只看该作者

弄了2.2.0.好像不行啊

使用特权

评论回复
板凳
auzxj| | 2009-7-4 13:31 | 只看该作者

m

使用特权

评论回复
地板
lpc2410| | 2009-7-6 13:17 | 只看该作者

比较难弄,这玩意儿

使用特权

评论回复
5
chun1chun| | 2009-7-7 13:23 | 只看该作者

qt版本较多,我都迷糊了……

使用特权

评论回复
6
tmake| | 2009-7-9 13:36 | 只看该作者

不错,我看过了!

使用特权

评论回复
7
armqt|  楼主 | 2009-7-24 18:10 | 只看该作者

是啊,我弄到现在都没有好呢

使用特权

评论回复
8
孤独行者| | 2009-7-25 18:27 | 只看该作者

还不错,只是太理论啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

150

帖子

0

粉丝