看到的人过来帮帮忙啊!!!纠结的触摸屏移植问题(为什么别人可以,我不行呢)

近期在做mips上移植触摸屏的课题。
网上的方法都看遍了,tslib-1.3,tslib-1.4都可移植到板子上,但是依然不能实现触摸屏的校准功能。


下面描述一下自己所遇到的问题,希望能得到大家的指正。

目标平台:mips
交叉编译工具:mipsel-linux-gcc.
内核:linux-2.6.22.19-29-sigma
触摸屏:未手动安排触摸屏驱动,将屏插入到板子的usb接口。
cat /proc/bus/input/devices 显示如下:
I: Bus=0003 Vendor=0eef Product=0001 Version=0112
N: Name="HOLTEK Touch"
P: Phys=usb-tangox-ehci-hcd-1.1/input0
S: Sysfs=/class/input/input1
U: Uniq=
H: Handlers=mouse0 event0 
B: EV=b
B: KEY=401 0 30000 0 0 0 0 0 0 0 0
B: ABS=f
cat /dev/input/event0,手摸触摸屏,有反应。

经过排查错误,tslib-1.3或者1.4都已经./autogen.sh ./configure,make,make install成功。
其中./configure --host=mipsel-linux --prefix=/nfsroot/8654root/mnt/config/tslib ac_cv_func_malloc_0_nonnull=yes --disable-inputapi

tslib-1.3时:
export TSLIB_ROOT=/tslib;
export TSLIB_TSDEVICE=/dev/input/event0;
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal;
export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal;
export TSLIB_PLUGINDIR=$TSLIB_ROOT/share/ts/plugins;
export TSLIB_CONSOLEDEVICE=none;
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf;
export TSLIB_FBDEVICE=/dev/fb0;
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH;
export TSLIB_TSEVENTTYPE=UCB1x00;

运行./ts_calibrate
可显示光标,x轴正确,但是y轴其实在78%的时候便已经超出。
查看源码presure值一直为正。按光标没法进入下一个点校正。
将ts_calibrate函数getxy()中的
if (index < MAX_SAMPLES-1)
index++;
改为
if (index < MAX_SAMPLES-1)
  index++;
  esle
  break;
在prssure值不等于0的情况下也可跳出循环,则显示如下:
Took 127 samples...
Top left : X = 19912 Y = 29152
Took 127 samples...
Top right: X = 19912 Y = 27934
Took 127 samples...
Bot right: X = 19912 Y = 34397
Took 127 samples...
Bot left : X = 19912 Y = 37781
Took 127 samples...
Middle: X = 19912 Y = 37470
902.598145 0.046774 0.015463
524.549683 0.018851 0.005005
Calibration constants: 59152672 3065 1013 34376888 1235 327 65536

可以看到读到的值都是错的。
尝试export TSLIB_TSEVENTTYPE为其它的值,也都不行。

tslib-1.4时:
export TSLIB_ROOT=/tslib;
export TSLIB_TSDEVICE=/dev/input/event0;
export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal;
export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal;
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts;
export TSLIB_CONSOLEDEVICE=none;
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf;
export TSLIB_FBDEVICE=/dev/fb0;
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH;
export TSLIB_TSEVENTTYPE=UCB1x00;

./ts_calibrate
不可显示光标,读值也不对。



个人分析:从ts_read_raw读到的数便是错的,猜想可能是tslib里面所定义的几个结构
struct ts_event ;
struct h3600_ts_event;
struct mk712_ts_event ;
struct arctic2_ts_event ;
struct collie_ts_event ;
struct corgi_ts_event ;
都不满足/dev/input/event0的设备文件所读到的数,有可能是选错了触摸屏所对应的驱动类型,但是全部试过都不行,是否是tslib中未出现的类型?
是否可能是我的触摸屏根本就没有安装驱动程度,但是又为何cat /dev/input/event0时可以有反应??
--disable-inputapi项尝试过不加,但是也不行。

纠结了好久了啊,希望大家给意见,谢谢,谢谢!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值