Linux驱动开发.触摸屏驱动

您所在的位置:网站首页 虚拟机导入完成不安装 Linux驱动开发.触摸屏驱动

Linux驱动开发.触摸屏驱动

2023-04-16 00:40| 来源: 网络整理| 查看: 265

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就可以了

makemake install

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

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

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

移植tslib到文件系统

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

#!/bin/shexport TSLIB_ROOT=/usr/lib/arm-tslib export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_CALIBFILE=/etc/pointercal 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里的测试命令测试一下,没问题就可以了!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3