Linux系统中触摸库报错怎么解决

描述

大家好,我是情报小哥~

在编译Linux系统的过程中,总容易遇到各种大大小小的问题,要么是某个编译选项设置不正确,编译器与编译源码不匹配,又或者是系统中没有安装相应的软件或者库等等。

然而这些问题运气不错网络上搜索一下即可搞定,然而遇到生僻一点的问题,那估计得把你折腾得半死,问题是还不一定弄得好。

好在这些成熟的组件或者系统源码在编译或者使用异常以后,或多或少都会输出一些信息,供程序员进行问题排查。

那么小哥下面就简单介绍一下最近遇到的tslib问题排查过程。

01

一个问题

编译

在部署完tslib环境以后,其安装目录中会生成一些测试程序供用户使用,然而当我们运行相应的测试应用程序,却得到如下结果 :

编译

表示环境变量中指定的设备,tslib库识别不出该设备为触摸设备。而这样的错误字符串的输出,一般都来源于源码,直接在tslib源码路径中进行搜索得到如下结果。(当然如果要进行详细的分析也可以使用VSCode等工具分析)

编译

这里采用grep命令行对路径中的文件进行字符串的查找,grep主要是用于搜索匹配模板的行,默认情况下就是打印出来匹配的行。

-n选项表示:以行号作为前缀;

-R选项表示递归读取每级目录下的所有文件。

更加详细的使用说明就交给man grep了。

上面的输出结果,其字符串来源于input-raw.c文件的61行,看一下该文件输出该字符串的条件,并根据条件来进行判断和调试。

编译

可以直接修改此部分的判断语句,进行调试,输出到底是那个条件导致无法满足。

通过调试可以了解到version==EV_VERSION条件不满足,一个是内核传入的,一个是编译器指定的。

通过同样的方式可以查到内核中的EV_VERSION的定义如下:

编译

同样查找编译器中的EV_VERSION的定义如下:

编译

两者确实是不同,所以导致运行tslib库报错,这里我们优先把内核中的EV_VERSION改成与编译器的一致,看是否能够解决该问题。

然后重新编译内核并进行烧录。

完成以后直接运行bin文件下的ts_print测试触摸屏驱动看是否正常,运行程序以后没有再输出之前的异常字符串,然后点击触摸屏,即可看到终端输出相应的坐标数据:

编译

这样看来tslib初步测试和部署完成。

**最 后 **

好了,这里小哥就介绍了一下tslib触摸库部署过程一个排查问题的基本过程,很多类似的问题也可以尝试这样排查,希望本文能够对你有帮助,本系列文件还会持续更新。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分