打开ci 调试

$this -> output -> enable_profiler(TRUE);
$this->db->last_query();
echo "<pre>";
var_dump($this->db->queries);
$this->db->save_queries = TRUE;
$this -> output -> enable_profiler(TRUE);
 
 
______________function 中写redis
function static_version(){
$cache = init_cache('redis')->redis;
$static_version = $cache->get('admin/file_static_version');
if(!$static_version){
$static_version = date('YmdHis');
$cache->save('admin/file_static_version', $static_version, 86400);
}
return $static_version;
}

转载于:https://www.cnblogs.com/csjoz/p/7243815.html

<think>嗯,用户想调试触摸屏的I2C驱动问题,我需要根据提供的引用资料和知识库内容来整理步骤。首先,确保硬件连接正确,比如检查I2C总线和供电,这很重要,因为硬件问题可能导致驱动无法正常工作。然后需要确认设备树配置,比如检查compatible属性和reg地址是否正确,引用里提到Goodix GT9xx的地址是0x5d,所以用户需要确认他们的设备树是否有类似设置。 接下来是驱动加载情况,使用lsmod和dmesg查看驱动是否加载成功,如果有错误日志,可能需要重新编译驱动。I2C通信测试部分,i2c-tools里的i2cdetect能扫描设备,如果地址没出现,可能是硬件或配置问题。 然后是中断和输入子系统,检查中断是否注册,输入设备有没有创建。引用3提到i2c_driver的添加和挂起函数的处理,所以驱动中的probe函数是否正常执行也很关键。如果有注册问题,可能是设备树匹配或驱动初始化的问题。 最后,调试工具和日志分析,使用devmem2直接读取寄存器,或者打开内核的调试选项,比如动态调试和输入子系统的事件记录。如果所有步骤都检查过了,可能需要联系厂家获取更详细的支持。 用户可能遇到的问题包括设备树配置错误、驱动未正确编译加载、I2C通信失败或中断配置不当。需要一步步排查,从硬件到软件,逐步缩小问题范围。</think>### 调试触摸屏 I2C 驱动程序的步骤 #### 1. **硬件连接验证** - 检查 I2C 总线物理连接是否正常(如 SCL/SDA 信号线、供电电压),确保触摸屏控制器芯片(如 Goodix GT9xx 或 FT5X06)的 I2C 地址与设备树配置一致[^2][^4]。 - 使用示波器或逻辑分析仪观察 I2C 总线波形,确认是否有起始信号、ACK/NACK 响应。 #### 2. **设备树配置检查** - 确认设备树(Device Tree)中 I2C 节点是否正确定义,例如: ```c &i2c2 { gt9xx@5d { compatible = "goodix,gt9xx"; reg = <0x5d>; interrupt-parent = <&gpio>; interrupts = <PIN_X LEVEL_TRIGGER>; }; }; ``` 需确保 `compatible` 属性与驱动匹配,`reg` 地址与芯片手册一致[^2][^3]。 #### 3. **驱动加载与日志分析** - 使用 `lsmod` 检查驱动模块是否加载,通过 `dmesg | grep i2c` 或 `journalctl -k` 查看内核日志,定位初始化错误(如 probe 函数失败、中断注册问题)。 - 若驱动未加载,需重新编译内核或模块,确保配置启用了对应驱动(如 `CONFIG_TOUCHSCREEN_GOODIX`)。 #### 4. **I2C 通信测试** - 安装 `i2c-tools` 工具包,执行 `i2cdetect -l` 列出所有 I2C 总线,再通过 `i2cdetect -y <bus_num>` 扫描设备地址: ```bash i2cdetect -y 2 # 检查总线2上的设备(GT9xx 地址应为0x5d) ``` 若设备地址未出现,可能是硬件问题或设备树配置错误。 #### 5. **中断与输入子系统调试** - 检查 `/proc/interrupts` 确认触摸屏中断是否被正确注册和触发。 - 使用 `evtest` 工具监听输入事件,验证触摸操作是否上报坐标数据: ```bash evtest /dev/input/eventX # X为触摸屏对应的设备编号 ``` 若无事件输出,可能是中断处理函数或输入子系统注册失败[^3]。 #### 6. **寄存器级调试** - 通过 `i2cget` 和 `i2cset` 直接读写芯片寄存器(需参考芯片手册): ```bash i2cget -y 2 0x5d 0x8140 # 读取GT9xx固件版本寄存器 ``` - 使用 `devmem2` 工具检查硬件寄存器状态(如 GPIO 中断引脚配置)。 #### 7. **动态调试与跟踪** - 启用内核动态调试功能: ```bash echo "file goodix* +p" > /sys/kernel/debug/dynamic_debug/control ``` - 使用 `ftrace` 跟踪驱动函数调用链,分析时序问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值