Firefly开源社区

急!!! 官方5.5寸屏幕的tslib触摸移植问题

73

积分

0

威望

0

贡献

技术小白

积分
73
发表于 2015-9-9 23:21:39     
本帖最后由 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
2222.png
回复

使用道具 举报

发表于 2015-9-10 15:48:46     
Ubuntu貌似对小屏支持不好,楼主可以在上报的函数中加上打印跟踪一下坐标来调试
暴走的创客!
回复

使用道具 举报

73

积分

0

威望

0

贡献

技术小白

积分
73
发表于 2015-9-10 17:07:27     
暴走的阿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来选择,究竟选择的是哪一个啊?
回复

使用道具 举报

37

积分

0

威望

0

贡献

禁止发言

积分
37
发表于 2015-9-11 10:23:52     
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

239

积分

0

威望

0

贡献

禁止发言

积分
239
发表于 2016-2-25 23:30:48     
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2016-2-26 09:17:02     
ohyeah521 发表于 2016-2-25 23:30
firefly-rk3288-plus 刷ubuntu 支持什么屏幕?

最好搭配之前官方出售的10.1寸屏,或者后续新出的大显示屏
暴走的创客!
回复

使用道具 举报

15

积分

0

威望

0

贡献

技术小白

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

还会出10.1寸的新屏么?
回复

使用道具 举报

19

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
19
发表于 2016-3-4 14:36:38     
冒似10.1寸屏没有卖了
回复

使用道具 举报

164

积分

0

威望

0

贡献

技术小白

积分
164
发表于 2016-9-19 14:07:22     
后面问题解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表