1. 项目概述
在嵌入式Linux开发中,触摸屏驱动的移植是一个常见但极具挑战性的任务。最近我在Tina Linux(基于Linux 4.9内核)平台上成功移植了Sitronix ST7123 TDDI触摸控制器,这是一款广泛应用于嵌入式设备的触摸芯片。整个移植过程涉及硬件接口配置、内核驱动集成、设备树修改以及系统验证等多个环节,其中遇到了不少值得分享的技术细节和问题解决方案。
ST7123是一款集成了触摸和显示接口(TDDI)的控制器,通过I2C接口与主控通信。在本次项目中,我们使用的是全志V851s平台,该芯片采用ARM架构,广泛应用于智能家居和工业控制领域。移植工作的核心目标是在保持系统稳定性的前提下,实现触摸功能的完整支持。
2. 硬件环境搭建
2.1 硬件连接与引脚定义
硬件连接是驱动移植的基础,必须确保电路连接与软件配置完全匹配。ST7123通过I2C2接口与V851s主控连接,具体引脚定义如下:
- PH11 -> CTP_SCL (I2C SCL)
- PH12 -> CTP_SDA (I2C SDA)
- PH13 -> CTP_EINT (Touch INT)
- PH14 -> CTP_RST (Touch RESET)
触摸面板分辨率为720x1280,这是一个常见的手机屏幕分辨率。在实际测量中,我们发现I2C设备地址为0x55,而非文档中常见的0x38,这提醒我们在驱动移植时不能完全依赖文档,实际测量验证非常重要。
2.2 电源与信号完整性检查
在硬件准备阶段,除了引脚连接外,还需要特别注意:
- 电源稳定性:使用示波器检查触摸芯片的供电电压,确保在允许范围内(通常3.3V±5%)
- 信号质量:检查I2C信号线的上升/下降时间,过长的边沿可能导致通信失败
- 上拉电阻:确认SCL和SDA线是否有适当的上拉电阻(通常4.7kΩ)
- 中断信号:确保中断线连接正确,必要时可添加适当的滤波电容
3. 软件环境准备
3.1 Tina Linux开发环境
Tina Linux是全志针对其芯片定制的OpenWrt分支,本次使用的版本基于Linux 4.9.191内核。开发环境搭建在Docker容器中,工程目录为:
code复制/home/zq/Documents/linux/d
