【i.MX6ULL】驱动开发13—电容触摸驱动实践(下)
大家好,小科来为大家解答以上问题。【i.MX6ULL】驱动开发13—电容触摸驱动实践(下)这个很多人还不知道,现在让我们一起来看看吧!
解答:
1、 最后一篇文章介绍了电容式触摸驱动程序的编程,包括设备树和驱动程序(IIC驱动中断输入子系统)的修改,并通过实时打印触摸坐标值来测试触摸功能。
2、 在本文中,我们先介绍一下测试触摸库——tslib,它可以用于图形化触摸测试。之后,分析了触摸协议上报的原理和通过输入子系统上报的数据的具体含义。
3、 1tslib的使用
4、 Tslib是一个开源程序,可以为触摸屏驱动获取的样本提供滤波、去抖、校准等功能。它通常作为触摸屏驱动程序的适配层,为上层应用程序提供统一的接口。
5、 1.1tslib库迁移
6、 首先下载tslib库的源代码:https://github.com/libts/tslib/tags.
7、 最新版本是1.22,但本文先用1.21版本。
8、 1.1.1在Ubuntu上编译tslib
9、 将下载的源代码复制到ubuntu虚拟机中,然后解压:
10、 tarxvftslib-1.21.tar.bz2
11、 编译tslib时,需要先在ubuntu中安装一些文件。
12、 sudoapt-get安装自动配置
13、 sudo安装自动制造
14、 sudoapt-get安装libtool
15、 在ubuntu中创建一个名为“tslib”的目录来存储编译结果,然后执行以下指令进行编译:
16、 cdtslib-1.21/。/autogen.sh。/configure-host=arm-Linux-gnueabihf-prefix=/home/xxpcb/myTest/imx6ull/otherlib/tslib/tslib/
17、 制造
18、 进行安装
19、 编译后,makeinstall会将编译结果复制到指定的tslib目录:
20、 您可以看到最终的编译生成了五个文件夹。
21、 1.1.2tslib配置在开发板上。
22、 将五个编译好的文件夹复制到开发板的根文件系统中:
23、 sudocp*-rf~/myTest/nfs/rootfs/
24、 然后打开电路板的/etc/ts.conf文件,找到下面一行:
25、 模块_原始输入
26、 如果此句前面有“#”注释,则删除“#”。我默认没有,不需要修改。
27、 打开电路板的/etc/profile文件。我的板此时没有这个文件,所以我创建了一个新文件,然后向其中添加了以下内容:
28、 导出tslib_tsdevice=/dev/input/event2
29、 导出tslib_CALIBFILE=/etc/pointercal
30、 导出TSLIB_CONFFILE=/etc/ts.conf
31、 导出TSLIB_PLUGINDIR=/lib/ts
32、 exportTSLIB_CONSOLEDEVICE=none
33、 导出TSLIB_FBDEVICE=/dev/fb0
34、 TSLIB_TSDEVICE:触摸设备文件,根据具体情况设置为/dev/input/event1或event2(如果鼠标和键盘连接,这个数字可能会发生变化,比如我连接无线键盘后,触摸又变成了事件)。
ts_calibrate
ts_test_mt
ABS_MT_POSITION_Xx[0] ABS_MT_POSITION_Yy[0] SYN_MT_REPORT ABS_MT_POSITION_Xx[1] ABS_MT_POSITION_Yy[1] SYN_MT_REPORT SYN_REPORT
ABS_MT_POSITION_Xx[1] ABS_MT_POSITION_Yy[1] SYN_MT_REPORT SYN_REPORT
SYN_MT_REPORT SYN_REPORT
ABS_MT_SLOT0 ABS_MT_TRACKING_ID45 ABS_MT_POSITION_Xx[0] ABS_MT_POSITION_Yy[0] ABS_MT_SLOT1 ABS_MT_TRACKING_ID46 ABS_MT_POSITION_Xx[1] ABS_MT_POSITION_Yy[1] SYN_REPORT
ABS_MT_SLOT0 ABS_MT_POSITION_Xx[0] SYN_REPORT
ABS_MT_TRACKING_ID-1 SYN_REPORT
ABS_MT_SLOT1 ABS_MT_TRACKING_ID-1 SYN_REPORT
/** *dev:MT设备对应的input_dev *num_slots:设备要使用的slot的数量,也就是触摸点的数量 *flags:其他一些flags信息 *return:0-成功负值-失败 */ intinput_mt_init_slots(structinput_dev*dev, unsignedintnum_slots, unsignedintflags)
#defineINPUT_MT_POINTER0x0001/*pointerdevice,e.g.trackpad*/ #defineINPUT_MT_DIRECT0x0002/*directdevice,e.g.touchscreen*/ #defineINPUT_MT_DROP_UNUSED0x0004/*dropcontactsnotseeninframe*/ #defineINPUT_MT_TRACK0x0008/*usein-kerneltracking*/ #defineINPUT_MT_SEMI_MT0x0010/*semi-mtdevice,fingercounthandledmanually*/
2.3.3input_mt_report_slot_state/** *dev:MT设备对应的input_dev *slot:当前发送的是哪个slot的坐标信息,也就是哪个触摸点 *return:无 */ voidinput_mt_slot(structinput_dev*dev,intslot)
/** *dev:MT设备对应的input_dev *tool_type:触摸类型 *active:触摸或抬起 *return:无 */ voidinput_mt_report_slot_state(structinput_dev*dev, unsignedinttool_type, boolactive)
/** *dev:MT设备对应的input_dev *code:要上报的是什么数据 *value:要上报的数据值 *return:无 */ voidinput_report_abs(structinput_dev*dev, unsignedintcode, intvalue)
3input子系统上报数据含义讲解 3.1input子系统简介/** *dev:MT设备对应的input_dev *use_count:true-有效的触摸点数量false-追踪到的触摸点数量多于当前上报的数量 *return:无 */ voidinput_mt_report_pointer_emulation(structinput_dev*dev,booluse_count)
#defineEV_SYN0x00/*同步事件*/ #defineEV_KEY0x01/*按键事件*/ #defineEV_REL0x02/*相对坐标事件*/ #defineEV_ABS0x03/*绝对坐标事件*/ #defineEV_MSC0x04/*杂项(其他)事件*/ #defineEV_SW0x05/*开关事件*/ #defineEV_LED0x11/*LED*/ #defineEV_SND0x12/*sound(声音)*/ #defineEV_REP0x14/*重复事件*/ #defineEV_FF0x15/*压力事件*/ #defineEV_PWR0x16/*电源事件*/ #defineEV_FF_STATUS0x17/*压力状态事件*/
#defineKEY_RESERVED0 #defineKEY_ESC1 #defineKEY_12 #defineKEY_23 #defineKEY_34 #defineKEY_45 //...... #defineBTN_TOOL_QUINTTAP0x148 /*Fivefingersontrackpad*/ #defineBTN_TOUCH 0x14a #defineBTN_STYLUS 0x14b //...... #defineABS_X 0x00 #defineABS_Y 0x01 #defineABS_Z 0x02 #defineABS_RX 0x03 #defineABS_RY 0x04 #defineABS_RZ 0x05 #defineABS_MT_SLOT 0x2f /*MTslotbeingmodified*/ #defineABS_MT_TOUCH_MAJOR 0x30 /*Majoraxisoftouchingellipse*/ #defineABS_MT_TOUCH_MINOR 0x31 /*Minoraxis(omitifcircular)*/ #defineABS_MT_WIDTH_MAJOR 0x32 /*Majoraxisofapproachingellipse*/ #defineABS_MT_WIDTH_MINOR 0x33 /*Minoraxis(omitifcircular)*/ #defineABS_MT_ORIENTATION 0x34 /*Ellipseorientation*/ #defineABS_MT_POSITION_X 0x35 /*CenterXtouchposition*/ #defineABS_MT_POSITION_Y 0x36 /*CenterYtouchposition*/ #defineABS_MT_TOOL_TYPE 0x37 /*Typeoftouchingdevice*/ #defineABS_MT_BLOB_ID 0x38 /*Groupasetofpacketsasablob*/ #defineABS_MT_TRACKING_ID 0x39 /*UniqueIDofinitiatedcontact*/ #defineABS_MT_PRESSURE 0x3a /*Pressureoncontactarea*/ #defineABS_MT_DISTANCE 0x3b /*Contacthoverdistance*/ #defineABS_MT_TOOL_X 0x3c /*CenterXtoolposition*/ #defineABS_MT_TOOL_Y 0x3d /*CenterYtoolposition*/
/*****************input_event类型********************/ /*编号*//*tv_sec*//*tv_usec*//*type*//*code*//*value*/ 000000000f60000e53900030003003900000000 000001000f60000e539000300030035009d0000 000002000f60000e53900030003003600c10000 000003000f60000e53900030001014a00010000 000004000f60000e539000300030000009d0000 000005000f60000e53900030003000100c10000 000006000f60000e53900030000000000000000 000007000f6000011ad000500030039ffffffff 000008000f6000011ad00050001014a00000000 000009000f6000011ad00050000000000000000
130、
cpgt911.c../../kernel/nxp_kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga/drivers/input/touchscreen/-f
obj-y+=gt911.o
5总结cd/lib/modules/4.1.15 depmod modprobegt911.ko cd/
本文到此结束,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
上厕所时,发现马桶里的水泛起血色,或是手纸沾着鲜红的痕迹,相信不少人都会心头一紧:"是痔疮犯了?还是……...浏览全文>>
-
最近收到一位患者的留言,说自己这几天总感觉肛门有下坠胀感,特别难受,上网一查,好多信息都指向癌症,这可...浏览全文>>
-
腹痛、腹泻总反复!可能是小肠、大肠在抗议。基于症状特征区分小肠疾病与大肠疾病的具体差异分析:一、核心症状...浏览全文>>
-
近日,中国中医药信息学会肛肠分会·肿瘤分会·治未病分会·河北名医学会肛肠分会·盆底与便秘分会·河北省中...浏览全文>>
-
安徽蚌埠的长安启源E07作为一款备受关注的新能源车型,其价格和配置一直是消费者热议的话题。如果你正考虑入手...浏览全文>>
-
近年来,随着新能源汽车市场的快速发展,插电式混合动力车型逐渐成为消费者关注的焦点。生活家PHEV作为一款备...浏览全文>>
-
在2025款生活家PHEV车型正式上市之前,提前了解相关费用明细对于购车者来说至关重要。这款插电式混合动力车型...浏览全文>>
-
大众途昂作为一款中大型SUV,凭借其宽敞的空间和强劲的动力配置,在市场上一直拥有不错的口碑。对于计划购买20...浏览全文>>
-
阜阳地区的长安启源Q05 2025款车型凭借其时尚的外观设计和丰富的配置,吸引了众多消费者的关注。这款车型作为...浏览全文>>
-
阜阳揽巡作为一款备受关注的中型SUV,凭借其豪华的配置和超值的价格吸引了众多消费者的目光。这款车不仅在外观...浏览全文>>