不好意思,回复迟了,谢谢各位的回复。
我的配置编译和运行过程如下:
一. 对源码包的修改
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
2.
在3.4.1版的arm编译器目录arm/3.4.1/arm-linux/include/linux/videodev2.h和arm/3.4.1/arm-linux/sys_include/linux/videodev2.h中添加如下内容:
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */
如上内容可参考网页:
http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/videodev2.h?v=2.6.16.18#L3053.TSLIB_TSDEVICE(我的触摸屏驱动程序 ts-uptech.o 是插入到 /dev/input/event0)
vi qtopiacore/qt/src/gui/embedded/qmousetslib_qws.cpp
将第124行的/dev/ts修改为/dev/input/event0
4.POINTERCAL_FILE(由于其他目录不可写,我把校准文件的存放位置改到了/mnt/yaffs/tmp/目录下)
vi src/settings/calibrate/calibrate.cpp
将第82行的/etc/pointercal改为/mnt/yaffs/tmp/pointercal
5.POINTERCAL_FILE
vi src/server/pda/firstuse.cpp
将第347行的/etc/pointercal改为/mnt/yaffs/tmp/pointercal
6.POINTERCAL_FILE
vi qtopiacore/qt/src/gui/embedded/qmouse_qws.cpp
将所有/etc/pointercal修改为/mnt/yaffs/tmp/pointercal
7.
vi qtopiacore/qconfig-qpe.h
注释掉:
/*
#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
*/
9.
vi qtopiacore/qt/src/corelib/global/qfeatures.h
/*
#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
#define QT_NO_QWS_CURSOR
#endif
10.
vi qtopiacore/qt/src/corelib/global/qglobal.h
//# define QT_NO_QWS_CURSOR
11.
cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h
12.
vi src/libraries/qtopia/qtimezone.cpp
将114行的/usr/share/zoneinfo改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/
(注:我安装的目标目录是/mnt/nfs/qtopia4/qtopiatslibtarget/,在目标目录下建了zoneinfo文件夹,用来放置时区信息,时区信息可以从本机的/usr/share/zoneinfo拷过去)
13.
vi src/settings/systemtime/settime.cpp
将318行的/usr/share/zoneinfo改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/
二。配置编译安装过程
1。配置(我用tslib1.3来驱动触摸屏,同时加了pc协议的鼠标)
./configure -silent -debug -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 "-debug -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-pc -qt-mouse-tslib -I/mnt/nfs/tslib1.3-install/include -L/mnt/nfs/tslib1.3-install/lib" 2>../qtopiaconfgureERR.txt
2。编译安装
make 2>../qtopiamakeERR.txt
make install
三。运行例子
采用NFS方式mount到开发板上,编译出来的目标包,没放到开发板上,是mount上取的 ,因为开发板的空间不够。
我的建立运行环境脚本如下:
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/mnt/nfs/tslib1.3-install/etc/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CALIBFILE=/mnt/yaffs/tmp/pointercal
export TSLIB_PLUGINDIR=/mnt/nfs/tslib1.3-install/share/ts/plugins
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs/tslib1.3-install/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs/qtopia4/qtopiatslibtarget/lib
export QWS_SIZE=640x480
export QWS_MOUSE_PROTO=" Tslib:/dev/input/event0 "
export POINTERCAL_FILE=/mnt/yaffs/tmp/pointercal
insmod /mnt/yaffs/touchscreen/ts-uptech.o
cd /mnt/nfs/tslib1.3-install/bin
./ts_calibrate
cd /mnt/nfs/qtopia4/qtopiatslibtarget/bin
if [ -f "$TSLIB_CALIBFILE" ]; then
./fifteen -qws
else
/mnt/nfs/tslib1.3-install/bin/ts_calibrate
./fifteen -qws
fi
这样运行后,能效准,出现例子程序运行界面后,点击屏幕,在屏幕中央的鼠标指针消失,然后终端也没输出。后来我用qWaring()函数打印信息,发现点击屏幕,程序一直在执行readMouseData()函数。各位看看到底是什么问题?
另外,如果不用触摸屏,插上USB的鼠标直接运行程序:
./fifteen -qws
程序可以正常运行。