ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux驱动开发十八.触摸屏驱动——2.tslib使用以及将驱动添加至内核

2022-09-14 20:32:40  阅读:216  来源: 互联网

标签:文件 Linux 编译 触摸屏 tslib 驱动 TSLIB


在前面的操作中我们已经测试了驱动的使用,但是那种方式是不够直观的。下面我们借助一个第三方的应用程序通过UI来测试下我们的驱动是否工作正常,并且将完成的驱动直接添加到内核中以便可以开机自动加载。

tslib

Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能(万能的度娘给出的定义)。   至于Tslib是如何工作的,不是属于我们这一章节要将的东西,这里要讲如何去编译、配置以及使用这个tslib让我们测试触摸屏驱动。 tslib编译 我们使用的tslib版本号为1.21,下载源码以后解压。文件夹里有个autogen.sh文件可以用来自动生成Makefile。但是有些时候需要安装些依赖的库,我们直接apt安装就可以了。完成以后就可以直接运行autogen.sh。 makefile生成以后我们要进行配置,指定我们使用的交叉编译器arm-linux-gnueabihf,以及目录
./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/path/tslib-1.21/arm-tslib

最后加红加粗的部分是tslib最后编译完成后的生成路径,我们根据实际需求改写就可以。完成以后就make和make install就可以了

make
make install

编译完成后我们关注的就是指定的编译输出了。

 

 在bin下就是执行文件,我们可以看下执行文件的属性

可以看出来生成的执行文件属于ARM架构的,说明我们编译的文件没有问题。

移植tslib到文件系统

编译完成后就可以吧我们的arm-tslib整个文件夹复制到根目录下了,可以放在/usr/lib目录下。然后配置环境变量/etc/profile

1 #!/bin/shexport 
2 
3 TSLIB_ROOT=/usr/lib/arm-tslib
4 export TSLIB_FBDEVICE=/dev/fb0
5 export TSLIB_TSDEVICE=/dev/input/event1
6 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
7 export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
8 export TSLIB_CALIBFILE=/etc/pointercal
9 export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

主要要注意的就是TSLIB对应的硬件,第4行的就是我们屏幕对应的framebuffer文件,第5行里的event后面的数值需要根据实际情况修改;最后一行的LD_PRELOAD是不知道为什么有些时候找不到libts.so,需要我们直接显性的指定。

下面可以直接通过source /etc/profile的命令直接使能新修改的profile文件,或者直接重启,直接运行文件测试下我们的驱动

如果配置什么的没问题,就会在屏幕上显示

 

 中间的小十字坐标会随着我们手指滑动运动,点击中间的Draw按钮可以有类似画图的效果。

 

 这样就说明我们的驱动程序没问题了!

移植驱动至内核

由于触摸屏的驱动是我们嵌入式开发必须要使用的,就需要我们把这个测试完成的驱动文件(.c文件)移植到内核,通过编译内核的时候直接编译进去,就免去了每次启动系统以后手动加载ko文件的过程。方法很简单,先将驱动复制到内核里(驱动一般都在driver下)由于是触摸屏的驱动,可以直接放在drivers/input/touchscreen路径下。

复制完驱动源文件以后要修改驱动路径下(触摸屏驱动文件所在文件夹下)的Makefile文件,只用在最后添加规则就可以了

重新编译内核,启动系统以后可以看一下

 

 input这一行就是加载的触摸屏驱动信息。这就说明触摸屏驱动加载成功,但是还要查一下上报的event事件是哪一个!然后修改一下/etc/profile里的tslib配置

 

 用source命令重新加载一下profile。用tslib里的测试命令测试一下,没问题就可以了!

 

 

 

 

 

 

标签:文件,Linux,编译,触摸屏,tslib,驱动,TSLIB
来源: https://www.cnblogs.com/yinsedeyinse/p/16688802.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有