分类: LINUX
2007-05-13 22:20:38
交叉编译qtopia-
解压qtopia-free-src-
/root/host /qtopia-free-
cd /root/host/qtopia-free-
./configure
make
得到本机运行版本uic 工具
解压qtopia-free-src-
cp /root/host/qtopia-free-
/root/2410s/qtopia-free-
如上所述arm-linux-gcc 已安装到/usr/local/arm/2.95.3/bin/,并设置$PATH变量
export PATH=/usr/local/arm/2.95.3/bin:$PATH
建立PDA安装目录
mkdir /root/2410s/qtopia (make install的安装目录)
cd /root/2410s/qtopia-free-
修改文件
vi /root/2410s/qtopia-free-
其中有3处/ect/pointercal 将其改为/mnt/yaffs/pointercal
(这里因为我的根文件系统不可写,默认的/etc下不可写,所以在校准的时候把pointercal方到了/mnt/yaffs/下,这里按照你自己校准文件的存放路径改即可,如果是可读根文件系统,就不用修改了)
修改文件
vi /root/2410s/qtopia-free-
将此行
QMAKE_LIBS_QT = -lqte
修改为
QMAKE_LIBS_QT = -lqte -lpng -lts -lz -luuid -ljpeg
再:
export QTDIR=/root/2410s/qtopia-free-
export QPEDIR=/root/2410s/qtopia-free-
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/root/2410s/qtopia-free-
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
****************
在/root/2410s/qtopia-free-
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
***********************8
cp /root/2410s/qtopia-free-
/root/2410s/qtopia-free-
cd $QPEDIR/src/libraries/qtopia
cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
开始configure了
cd /root/2410s/qtopia-free-
./configure -qte "-embedded -xplatform linux-arm-g++ -qconfig qpe -no-qvfb -depths 8,16,24,32 -system-jpeg -system-libpng -system-zlib -tslib -gif -thread -no-xft –release -I/root/2410s/arminclude -L/root/2410s/armlib -lpng -lts -lz –luuid -ljpeg" -qpe '-xplatform linux-arm-g++ -edition pda –displaysize 640x480 -I/root/2410s/arminclude -L/root/2410s/armlib
-prefix=/root/2410s/arm/qtopia'
最后
make
make install
/root/2410s/下面有一个qtopia目录,是所需的文件
在/root/2410s/qtopia/lib/目录下面看到libqte.so libqte.so.2 libqte.so.2.3
libqte.so.
拷贝库与触摸屏校准/测试程序
mkdir /root/2410s/qtopia/bin/tests
mkdir /root/2410s/qtopia/lib/ts
cp /root/2410s/tslib-1.3/tests/.libs/ts_* /root/2410s/qtopia/bin/tests
cp /root/2410s/tslib-1.3/src/.libs/libts-0.0.so.0* /root/2410s/qtopia/lib
cp /root/2410s/tslib-1.3/src/.libs/libts.so /root/2410s/qtopia/lib
cp /root/2410s/tslib-1.3/plugins/.libs/*.so /root/2410s/qtopia/lib/ts
cp /root/2410s/armlib/*.so* /root/2410s/qtopia/lib //所有需要的支持的库文件
将qtopia复制到共享文件夹/root/share/
cp -r /root/2410s/qtopia /root/share/
注意 :::: 把文件/root/2410s/tslib-1.3/etc/ts.conf文件拷贝到你的板子的/etc/目录下
cp /root/2410s/tslib-1.3/etc/ts.conf /root/share
****************
首先要建立宿主机和开发板的通讯,假设本机的ip 地址为192.168.0.155 并且/root/share 为共享文件夹。
*******************
将/root/share设置为共享目录,可通过nfs来访问
配置NFS(网络文件系统)
使计算机系统通过网络访问其它计算机系统的目录和文件
远程访问控制
修改etc/export指定文件夹共享可访问
最后一行加上
/root/share 192.168.0.* (rw,sync,no_root_squash)
共享目录 可访问主机ip地址 访问方式
执行minicom
minicom
启动nfs服务(也可在一个文件中加上语句,不用每次敲击命令)
nfs /etc/rc.d/init.d/nfs start
在开发板终端输入命令
ifconfig eth0 192.168.0.12 (如果开发板不能自动得到ip,需要设置)
mount –t nfs –o nolock 192.168.0.155:/root/share /mnt/nfs 将文件复制到开发板上
mount –t nfs –o nolock 192.168.0.155:/tmp/qtmp /tmp
(因为qte在板上跑会创建/tmp/qtembedded-0,而我的根文件系统为只读文件系统cramfs,这句是为了使/tmp可写,要不然会出现错误Cannot create Qt/Embedded data directory: /tmp/qtembedded-0。如果是可写文件系统不用这一步。)
把文件/root/share/tslib/etc/ts.conf文件拷贝到你的板子的/mnt/yaffs目录下
cp /mnt/nfs/ts.conf /mnt/yaffs
(默认是/etc目录下面的,我这里需要修改也是因为根文件系统不可写的缘故)
运行[以下操作在目标板上进行]:
在你的板子上设置运行环境变量
export QTDIR=/mnt/nfs/qtopia
export QPEDIR=/mnt/nfs/qtopia
export QWS_MOUSE_PROTO=TPanel:/dev/touchscreen/0raw
export LD_LIBRARY_PATH=/mnt/nfs/qtopia/lib
export TSLIB_TSEVENTTYPE=H3600 对tslib中的设备结构体定义
export TSLIB_CONSOLEDEVICE=none tslib运行需要的控制台,这里就是LCD屏幕 ,设定控制台设备为none,否则默认为/dev/tty
export TSLIB_FBDEVICE=/dev/fb0 指定帧缓冲设备
(我的开发板上只有/dev/fb/0,所以做了一个链接 ln -s /dev/fb/0 /dev/fb0)
export TSLIB_TSDEVICE=/dev/touchscreen/0raw指定开发板对应触摸屏设备节点文件
export TSLIB_CALIBFILE=/mnt/yaffs/pointercal指定触摸屏校准文件pintercal的存放位置
(默认是在/etc下面,可写文件系统为/etc/pointercal)
export TSLIB_CONFFILE=/mnt/yaffs/ts.conf 指定TSLIB配置文件的位置
export TSLIB_PLUGINDIR=$QTDIR/lib/ts 指定触摸屏插件所在路径
***************************
如果为可写根文件系统,可以修改开发板/etc/profile文件,将这些环境变量写入,就不用每次设置了
*****************************
校准屏幕(5点校准)
cd /mnt/nfs/qtopia/bin/tests
./ts_calibrate
会陆续在LCD的4个角和中点出现光标,点击光标进行校准,生成校准文件
再运行测试
/ts_test
这时LCD上出现光标,你的手指点哪里光标就会跟到哪里才成功
(如果有问题,参考终端的打印信息,坐标的值)
需要时序信息。如果是可写rootsf,新建/urs/share文件夹,按照上面的方法,将本机/root/2410s/qtopia/etc/zoneinfo文件夹拷贝到/urs/share/下 如果是只读rootfs,要重新制作镜像文件烧写(还需要支持输入法文件,运行pda时会有warnig)
运行PDA
cd ..
./qpe
出现”Tap anywhere to continue”,然后进行qpe5点校准,进入qpe
************************
感谢nanfansky和oceanheart_cai的帮助!
nanfansky是一个骨灰极刀子嘴 豆腐心的 超级热心的同志~ 呵呵...
推荐论坛
Qt/Qtopia中文论坛
中国Linux论坛
|
chinaunix网友2009-11-18 10:29:29
你好,能交个朋友吗?我现在乜在做QTOPIA的移植,但遇了不少问题,可以交流一下吗? 我的email:jiexkj@126.com
chinaunix网友2008-04-23 10:00:54
你好! 以前做tslib的时候来过你的博客,现在要移植qtopia2.2.0.又来向你请教了。 我碰到一个这样的问题:我把交叉编译好的qtopia2.2.0放到开发板上,如果通过手动设定环境变量和启动qpe的时候没有问题。但是我想要开机就运行qpe。我在启动文件中加入环境变量设置和启动选项。qpe也能运行,但是在选择语言一项死活到不了下一项。 不知道你有没有碰到过。多谢! 我的email是:zhanglei.dut@gmail.com.