目录
- 一、触摸屏驱动概览
- 1、常用的2种触摸屏
- 2、本专栏文章开发板:朱老师X210使用的触摸屏
- 3、学习触摸屏驱动的关键点
- 二、gslX680驱动的移植实践
- 1、初步移植实验
- 2、在内核配置中添加CONFIG项
- 3、内核编译的一般配置
- 三、gslX680驱动源码分析
- 1、kernel/drivers/input/touchscreen/gslX680.c
(1)电阻触摸屏。驱动一般分2种:一种是SoC内置触摸屏控制器,一种是外置的专门触摸屏控制芯片,通过I2C接口和SoC通信。
(2)电容触摸屏。驱动只有一种,外接专用的电容式触摸屏控制芯片,I2C接口和SoC通信。
(1)X210V3使用的触摸屏:ft5x06
(2)X210V3S使用的触摸屏:gslX6803
(1)input子系统相关知识
(2)中断上下半部
(3)I2C子系统
(4)触摸屏芯片本身知识
(1)源码获取
gsl_point_id 厂商提供的预先编译好部分代码
gslX680.c
gslX680.h
一般开发:源码是不编译进内核中的,而是编译成模块方便进行测试,随时修改代码。但这里是无法这样操作的,因为触摸屏厂商提供的代码是不完整的,有部分是提前编译好的,在编译链接的过程中会出现问题.
(2)源码加入内核中:kernel/drivers/input/touchscreen
(3)mach文件中添加board_info,从而生成一个struct i2c_client类型的变量可进行匹配(kernel/arch/arm/mach-s5pv210/mach-x210.c)
参考gslX680.c中的信息:
iic通信中,从地址取决于从设备,可通过从设备的芯片手册得到。查阅手册得到:
上述的这个移位操作在主机代码中操作了所以我们在从设备驱动代码使用 0x40 即可。
修改后的文件:
(1)定义一个宏名,譬如CONFIG_TOUCHSCREEN_GSLX680
(2)在代码中使用宏来条件编译
(3)在Makefile中使用宏来条件配置
文件末尾添加:
(4)在Kconfig项目中添加宏的配置项
文件末尾添加:
(5)make menuconfig并选择Y或者N
(6)make -j4进行编译,生成镜像后去烧录启动。
部分解析请查阅上篇文章:linux驱动之I2C子系统
驱动内基本不定义结构体变量,都是定义结构体指针,然后kzalloc()申请内存,避免栈溢出了
mt表示支持多点触摸
对于该部分代码具体操做设置请仔细阅读触摸屏读数据手册,但有些内容我们是无法探究清楚的,只有专业搞触摸屏驱动的那些原厂工程师清楚。
注:本资料大部分由朱老师物联网大讲堂课程笔记整理而来并且引用了部分他人博客的内容,如有侵权,联系删除!水平有限,如有错误,欢迎各位在评论区交流。