zoukankan      html  css  js  c++  java
  • linux驱动移植问题点

    1、I2C地址是否和其它IC冲突。通过改地址解决

      ——通常,以下三种情况的log表现相同:1、ic没连接到主板;2、i2c地址错误;3、该器件I2C地址与同组其它器件冲突

    2、I2C通信是否受到其它slaver影响。检测:示波器测I2C波形。排查:逐个去掉其它I2C部件,看本IC的I2C波形是否恢复正常。

    3、是否由于IC本身原因,某个寄存器写值后无应答。我调的这款LED的reset寄存器就是如此,导致probe 调用reset时报错,而其他寄存器正常。

    4、硬件接触是否良好。我遇到的是金手指和卡座接触不良,而且,该金手指上的另一个IC——距离传感器在较松的插入情况下可以正常工作,但LED不能。排查:将LED引脚直接接到卡座引脚,绕过金手指排线

    4.9、I2C可以通信后,若无法request_irq,检查该函数的第一个参数,通常是中断号出错。adb中可读取已注册的中断脚:cat proc/interrupts

    4.99、若probe成功,无法产生中断:测量IC中断脚电平,看是否有硬件中断产生,若有:再测量IC供电电平,若IC供电电平=中断电平,则会导致CPU无法产生中断事件。解决方案:硬件提高IC供电电平 或 IC厂降低中断电平

      可能用到的引脚操作函数:

      HAL_tlmm_SetOwner(pin,TLMM_OWNER_PERIPHERAL);
      gpio_direction_output(pin,level);

    4.999、看注册中断脚request irq之后,是否有enable_irq

    5、若某个GPIO无法拉高,检查GPIO配置,modem端需配置为TLMM_OWNER_MASTER,kernel端需配置为TLMM_OWNER_PERIPHERAL

    6、厂商提供的代码和本地平台可能会有版本差异性,一些宏定义、函数定义可能会不同,需要比对本地依赖库中的函数。

  • 相关阅读:
    Flink架构、原理与部署测试
    EntityFramework 简单入个门
    Gdb远程调试Linux内核遇到的Bug
    掌握jQuery插件开发
    两分钟实现安全完备的登录模块
    SQL Server 手把手教你使用profile进行性能监控
    Paxos 实现日志复制同步
    作用域是什么
    Consul 服务注册与服务发现
    C语言之预处理
  • 原文地址:https://www.cnblogs.com/yiru/p/3360510.html
Copyright © 2011-2022 走看看