您现在的位置是:首页 > 手机 > 正文
【i.MX6ULL】驱动开发13—电容触摸驱动实践(下)
发布时间:2022-05-31 13:38:31来源:
大家好,小科来为大家解答以上问题。【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/
本文到此结束,希望对大家有所帮助。
标签:
猜你喜欢
最新文章
- 联想服务器官网首页
- dell官网商城
- 联想驱动下载
- 苹果电脑适合什么人用
- 谷歌Pixel6line可以同时使用面部和指纹解锁
- 笔记本散热性能排行榜
- Zimmer Biomet 首次推出 WalkAI™ 人工智能模型以预测术后恢复进度
- 三星Galaxy A33和Galaxy A73智能手机获得了Bixby Routines功能
- 戴尔笔记本电脑哪款好
- Netflix已确认广告何时到达平台
- 5000预算买什么游戏笔记本
- 联想电脑型号图片大全
- EA 和 DICE 推出了战地 2042更新 1.2
- 一体机电脑好还是台式电脑好
- 笔记本电脑标志logo大全
- 联想笔记本商务哪款好
- 戴尔电脑回收官网
- 电脑报价网站
- 戴尔全国售后服务网点
- 联想zuk官网
- thinkpad t450
- 移动硬盘无法读取怎么修复
- 惠普打印机维修上门
- 计算机配置清单及价格