ts_calibrate不响应的问题

3450阅读 0评论2020-05-16 fangdikui
分类:LINUX

移植QTARM板上

近几年一直做QT开发,也有独立移植,最近换工作,又需要在移植新的平台,以往的经验能跳过一些坑,然而并不能跳过所有的坑,这不今天刚从新坑里出来

QT的编译我就不再详说了,其本上改一下qt-everywhere-src-5.12.6/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf里的编译器就能通过了

 

这里先描述下现象

1)先是ts_calibrate不响应的

2)解决了ts_calibrate不响应后,触屏一碰就报segment fault

3)配置问题,到此已能完美的运行QT

 

第一个问题(1)先是ts_calibrate不响应的

原因

input_dev里设置了支持ABS_PRESSURE

set_bit(ABS_PRESSURE, pInputDev->absbit);

input_set_abs_params(pInputDev,ABS_PRESSURE, 0, PRESS_MAX, 0 , 0); input_set_abs_params(pInputDev,ABS_MT_PRESSURE, 0, PRESS_MAX, 0 , 0);

但是驱动里却没有上报这个值,导致tslib一直以为支持PRESSURE,等待到PRESSURE变化,结果一直没有等到,当然就不能识别按下和抬起了

解决方法:

增加input_report_abs(input_dev,ABS_PRESSURE,pressStatus);

也不知上个驱动开发者为啥留这样的坑

 

第二个问题,(2)解决了ts_calibrate不响应后,触屏一碰就报segment fault

一直以为还是tslib的配置问题,最后脑子一转,QT还没完整的配过,可能由鼠标和触摸屏同时存在时,如果不配置export QT_QPA_FB_TSLIB=1就会segment fault

解决方法:

配置export QT_QPA_FB_TSLIB=1

第(3)配置问题,到此已能完美的运行QT

借鉴了同事的作做,把tslib qtlib qtapp放在一个文件夹下,用start.sh脚本来配置环境,并启动qtapp很好

我的目录结构如下

app  qtlib  start_app.sh  ts_calibrate.sh  tslib

cat start_app.sh

 

#!/bin/sh

#

#

SHELL=/bin/sh

CUR_PATH=$(cd `dirname $0`;  pwd)

ROOT=$(cd `dirname $0`; pwd)

echo  ROOT:$ROOT

 

#########for tslib###########

export TSLIB_ROOT=$ROOT/tslib

export TSLIB_TSDEVICE=/dev/input/touchscreen0

export TSLIB_CONFFILE=${TSLIB_ROOT}/etc/ts.conf

export TSLIB_PLUGINDIR=${TSLIB_ROOT}/lib/ts

export TSLIB_CALIBFILE=${TSLIB_ROOT}/etc/pointercal

 

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

 

 

#########for qt###########

export QTDIR=$ROOT/qtlib

export LD_LIBRARY_PATH=${QTDIR}/lib:${TSLIB_ROOT}/lib:$LD_LIBRARY_PATH

 

export QT_QPA_FB_TSLIB=1

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0

export QT_PLUGIN_PATH=${QTDIR}/plugins

export QT_QPA_FONTDIR=${QTDIR}/lib/fonts

 

export PATH=${TSLIB_ROOT}/bin:$PATH

 

./app/testqt

上一篇:全志A20 fex 解析示例源码
下一篇:去掉编译内核的优化选项