Linux驱动开发十八.触摸屏驱动——2.tslib使用以及将驱动添加至内核
2022/9/15 5:17:11
本文主要是介绍Linux驱动开发十八.触摸屏驱动——2.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驱动开发十八.触摸屏驱动——2.tslib使用以及将驱动添加至内核的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南