现实问题:
有一个基于Linux4.19内核开发了,在海思SS528芯片运行的系统,用鼠标可以正常使用。
现在要求使用一块公司开发的 多点触控屏 连接这个系统,能正常使用。
分析问题:
要在LInux系统使用触控屏,可能需要移植tslib
的库,这个有以前做过,可以自己解决。
移植后,如果还有问题,可能是驱动的问题,系统没识别到这个触控屏。
关于触摸屏驱动的,经验较少,估计需要从网络寻找答案。
尝试解决问题:
移植完tslib
库之后,鼠标的位置仍然不准,而且执行tslib
的校准工具时,报错找不到文件,猜测是没有触摸屏驱动,导致没有对应的触摸屏设备文件。
剩下的问题:
找一找Linux源码有没有自带的、适用于大多数触摸屏的驱动。
有的话,要怎样配置内核去编译驱动模块?
没有的话,再想其他办法。
有教我怎样写驱动的,如:
十三、Linux驱动之触摸屏驱动
从零开始写触摸屏驱动(Linux4.3.2 JZ2440V3 480*272)
也有介绍一些usb驱动的,感觉这个可以参考:
linux系统usb触摸驱动,Linux ——usb触摸屏驱动 - usbtouchscreen
还有其他很多文章,都很有帮助,但并不能直接地完全解决问题,只是看完后会更了解触摸屏驱动的相关知识。或许看得再多一点,也能解决上面的问题。
搜了很久,没找到直接答案,突然想起上周看到的 ChatGpt 免费网站,就抱着试试看的心态去尝试一下。要解决这个驱动的问题,我现在尝试的方案是:找一个Linux通用的触摸屏驱动,并且告诉我怎样配置内核编译。
然后我就尝试问 ChatGpt,
- Linux内核有哪些触摸屏驱动可以使用?(尝试去找到可用的驱动)
- 驱动怎么配置编译?
问 ChatGpt 的过程
Linux内核有哪些触摸屏驱动可以使用
Linux内核有哪些触摸屏驱动可以使用,请列出驱动名称和功能
这回给的答案,和我想要的差不多了,而且这个
hid-multitouch
驱动有点像我要找的,我去翻了之前其他芯片的产品关于驱动的目录下,也找到一个hid-multitouch.ko
,所以决定先编译这个试试。
我接着问,怎么交叉编译那个ko。它给的答案不是我想要的。我就重新描述问题。
Linux4.19内核在Ubuntu18.04的系统使用aarch64-mix210-linux-gcc交叉编译时,怎么配置编译触摸屏驱动hid-multitouch.ko
这回给的答案,不能说完全是我想要的,但关于怎样配置内核,已经给了足够的信息了:
进入内核源代码目录,运行以下命令:make ARCH=arm64 CROSS_COMPILE=aarch64-mix210-linux- menuconfig 在menuconfig界面中,选择 "Device Drivers" -> "HID support" -> "Special HID drivers" -> "HID Multitouch panels",并选中对应的驱动程序. 退出menuconfig界面并保存修改。
我又问了好几个chatGpt,最后感觉这个答案最符合,就连内核配置菜单中的层级关系都表示出来了。
最后,我就照着去做,然后解决了问题。就特别惊讶,感觉这有点是手把手教了,也是第一次意识到 chatGpt 可以这么牛。所以,就写个文章记录一下这个过程。
平时通过搜索技术文章或者百度,可以比较系统的学习到知识,甚至可以说很多问题也能通过查看技术文章得到解决。但是如果遇到的问题是比较有深度的、专业的,感觉需要向别人请教的,你或许可以先问问 ChatGpt
,它偶尔可能给你意想不到的惊喜!!!
如果文章有帮助的话,点赞、收藏⭐,支持一波,谢谢