微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 83|回复: 0

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

[复制链接]

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-4-10 10:49:55 | 显示全部楼层 |阅读模式
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
#!/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里的测试命令测试一下,没问题就可以了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-7 04:59 , Processed in 0.081385 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表