首页 > 代码库 > 关于Qt移植arm上点击没反应,箭头也不动的问题

关于Qt移植arm上点击没反应,箭头也不动的问题

关于Qt的移植,以前移植过一次S3C2440的.现在这平台是AT91SAM9X35的.不过移植过程都一样,只不过遇到了以前没遇到的事情,在此记录下来

平台:AT91SAM9X35

环境:linux-2.6.39

移植Qt版本:4.6.4

交叉编译器:arm-linux-gcc

移植过程遇到的问题:运行Qt程序,点击屏幕没有反应.鼠标也没动.

(1)问题分析:交叉编译器头文件EV_VERSION宏与所移植的内核版本的EV_VERSION宏不一样.

解决途径

查看下EV_VERSION的定义.

交叉编译器中的位置:/opt/buildroot-2011.11/arm926t/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/include/linux/input.h 这是我交叉编译器中该文件的位置

linux内核中的位置:include/linux/input.h

我这里两个都是   #define EV_VERSION      0x010001. 也有的是0x010000 只要两个文件下的一样就可以. 如果不一样,就去把内核里的改成匹配交叉编译器里的.

该问题产生的现象

如果在运行Qt程序之前,运行tslib库进行校正的话, 会出现selected device is not a touchscreen I understand的错误.出现这个错误信息的原因和

调试方法下篇再讲.

(2)问题分析:环境变量设置不正确

解决途径

export QWS_MOUSE_PROTO=TSLIB:/dev/event0

export TSLIB_TSDEVICE=/dev/event0

这是主要的环境变量,其他的就不在这贴了,都一样.

当然,有的是/dev/input/event0或其他的,这里就要测试一下到底是哪个.

测试方法

1、cat /dev/event0 然后点击触摸屏,看是否有东西输出,乱码也是可以的.

2、hexdump /dev/event0 点击屏幕,查看是否有数据输出. 

两种方法的原理都一样,就是要确认哪个是触摸屏的设备

(3)问题分析:编译Qt库出现问题

我的问题就是在这里,编译的时候configure是时候没加入-qt-mouse-tslib这个选项,所以configure的时候要加入这个选项. 下面是我的编译选项,仅供参考

./configure -prefix /apps/qt-everywhere-arm926t/ -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -xplatform qws/linux-arm-g++ -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -embedded arm -little-endian -qt-freetype -depths 16,18 -no-glib -qt-mouse-tslib -no-javascript-jit -no-script -no-scripttools 

至此,问题解决完毕.

关于Qt移植arm上点击没反应,箭头也不动的问题