Firefly开源社区

标题: 急!!! 官方5.5寸屏幕的tslib触摸移植问题 [打印本页]

作者: qiyei2009    时间: 2015-9-9 23:21
标题: 急!!! 官方5.5寸屏幕的tslib触摸移植问题
本帖最后由 qiyei2009 于 2015-9-9 23:28 编辑

买了一块5.5寸屏,本人自己折腾了一段时间,现在显示已经可以正常的在ubuntu系统下显示文字,图片等(自己编写的应用程序)

现在想移植tslib库来支持触摸,根据下面这个网站移植的
http://blog.csdn.net/shui1025701856/article/details/7849669

由于修改了pad板的内核让其支持触摸屏,运行
hexdump /dev/input/event1 会有一下数据输出

运行其他的hexdump /dev/input/其他的event就没有输出,因此可以确定。,触摸节点就是、、/dev/input/event1

按照http://blog.csdn.net/shui1025701856/article/details/7849669这个网址交叉编译tslib后,
tslib下的文件复制到rootfs/usr/local下,并且修改rootfs/etc/profile如下:
export TSLIB_DIR=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event1
exportTSLIB_CALIBFILE=$TSLIB_DIR/etc/pointercal
exportTSLIB_CONFFILE=$TSLIB_DIR/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_DIR/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$TSLIB_DIR/lib

运行tslib/bin/目录下的任何测试程序,均会出现
tslib: Selected device is not a touchscreen(must support ABS_X and ABS_Y events)


首先根据错误信息考,发现错误发生在tslib中的plugins目录下input-raw.c文件中的check_fd函数内
static int check_fd(struct tslib_input *i)
{
         structtsdev *ts = i->module.dev;
         intversion;
         longevbit[BITS_TO_LONGS(EV_CNT)];
         longabsbit[BITS_TO_LONGS(ABS_CNT)];
         longkeybit[BITS_TO_LONGS(KEY_CNT)];

         if(ioctl(ts->fd, EVIOCGVERSION, &version) < 0) {
                   fprintf(stderr,"tslib: Selected device is not a Linux input event device\n");
                   return-1;
         }

         if(version < EV_VERSION) {
                   fprintf(stderr,"tslib: Selected device uses a different version of the event protocolthan tslib was compiled for\n");
                   return-1;
         }

         if( (ioctl(ts->fd, EVIOCGBIT(0, sizeof(evbit)), evbit) < 0) ||
                   !(evbit[BIT_WORD(EV_ABS)]& BIT_MASK(EV_ABS)) ||
                   !(evbit[BIT_WORD(EV_KEY)]& BIT_MASK(EV_KEY)) ) {
                   fprintf(stderr,"tslib: Selected device is not a touchscreen (must support ABS and KEYevent types)\n");
                   return-1;
         }
if ((ioctl(ts->fd, EVIOCGBIT(EV_ABS,sizeof(absbit)), absbit)) < 0 ||
                   !(absbit[BIT_WORD(ABS_X)]& BIT_MASK(ABS_X)) ||
                   !(absbit[BIT_WORD(ABS_Y)]& BIT_MASK(ABS_Y))) {
                   fprintf(stderr,"tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Yevents)\n");
                   return-1;
         }

估计是触摸屏上报事件时,没有上报ABS_X ABS_Y,应该需要在驱动中修改吧,本人对触摸屏驱动位置还不熟悉,请问版主和各位大神们,是在那个文件那个地方修改啊?我看触摸屏驱动都在这个目录下啊
drivers\input\touchscreen\synaptics_dsx

还请版主和大神们解答!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!





1111111111111111.png (55.21 KB, 下载次数: 437)

1111111111111111.png

2222.png (9.46 KB, 下载次数: 462)

2222.png

作者: 暴走的阿Sai    时间: 2015-9-10 15:48
Ubuntu貌似对小屏支持不好,楼主可以在上报的函数中加上打印跟踪一下坐标来调试
作者: qiyei2009    时间: 2015-9-10 17:07
暴走的阿Sai 发表于 2015-9-10 15:48
Ubuntu貌似对小屏支持不好,楼主可以在上报的函数中加上打印跟踪一下坐标来调试

版主,我看在synaptics_dsx_core.c文件中有三个上报事件函数, synaptics_rmi4_f11_abs_report, synaptics_rmi4_f12_abs_report,synaptics_rmi4_f1a_report,5.5寸屏幕需要在synaptics_rmi4_report_touch函数中根据fhandler->fn_number来选择,究竟选择的是哪一个啊?
作者: jiangdou    时间: 2015-9-11 10:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: ohyeah521    时间: 2016-2-25 23:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: 暴走的阿Sai    时间: 2016-2-26 09:17
ohyeah521 发表于 2016-2-25 23:30
firefly-rk3288-plus 刷ubuntu 支持什么屏幕?

最好搭配之前官方出售的10.1寸屏,或者后续新出的大显示屏
作者: ml_user    时间: 2016-3-2 10:52
暴走的阿Sai 发表于 2016-2-26 09:17
最好搭配之前官方出售的10.1寸屏,或者后续新出的大显示屏

还会出10.1寸的新屏么?
作者: Johnny.Chan    时间: 2016-3-4 14:36
冒似10.1寸屏没有卖了
作者: mlt911213    时间: 2016-9-19 14:07
后面问题解决了吗?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1