• IIC挂死问题解决过程


    0.环境:arm CPU 带有IIC控制器作为slave端,带有调试串口。

    1.bug表现:IIC slave 在系统启动后概率挂死,导致master无法detect到slave。

    猜测1:认为IIC device程序有问题

    检查1:查看程序发现有可能溢出的部分,使用IIC 工具刷过量数据到slave,未出问题。

    猜测2:认为IIC device寄存器进入异常状态未能恢复

    检查2:检查正常IIC寄存器和异常状态IIC寄存器,未能发现问题。

    猜测3:时钟分频问题

    检查3:询问同事,答固定分频。

    猜测4:看波形分析

    检查4:波形未量到,测量波形导致通信异常,部分设备破坏,放弃该方法。

    2.发现新情况:系统启动过程中如果调试串口有数据输入,问题会概率出现。如果串口没有输入则多次测试不会出现问题。

    猜测1:串口中断导致IIC初始化时被打断产生问题。

    检查1:删除调试串口设备树节点,发现IIC启动100%出现问题 T-T。

    猜测2: 100%复现的问题和之前的概率出现的问题相同

    检查2:检查寄存器,检查设备detect 表现,认为是相同问题。

    3.删除调试串口,IIC受影响的原因?

    删除串口设备树节点,IIC device 必出问题。

    猜测1:怀疑调试串口外部硬件电平高低导致IIC外设受影响

    检查1:检查原理图,未发现影响的可能性。

    猜测2:怀疑串口初始化部分处理了部分IIC设备依赖的初始化(导致不初始化串口IIC不能正常工作)。

    检查2:查看串口初始化代码未能发现有值得注意的初始化。

    猜测3:怀疑串口初始化影响公共寄存器间接影响IIC。

    检查3:发现公共寄存器IIC div分频部分和正常工作的分频不一样,改回后问题解决。

    4.公共寄存器怎么被修改的?

    删除串口设备后公共寄存器值不正常,串口收到数据后公共寄存器值不正常。

    猜测1:调试串口或IIC代码异常导致寄存器值被修改。

    检查1:增加打印,发现问题原因在于IIC初始化过程中分频寄存器设置失败。但是同样方法在IIC device端初始化时设置该寄存器是成功的。

    5.公共寄存器为什么不能写入?

    猜测1: 特定配置下IIC 分频寄存器为只读

    检查1:芯片设计方核实不存在这样的设计。

    检查1:在写入分频寄存器前增加打印,dump所有公共寄存器。和正常公共寄存器做比较,未发现问题。写入IIC分频器成功。

    猜测2:增加打印信息后写入成功为必现,去掉打印会写入不成功。

    检查2:证实猜测。

    猜测3:写入成功和读取公共寄存器相关

    检查3:减少dump范围,小范围dump写入失败,大范围dump写入成功。

    猜测4:写入成功和写入时间相关

    检查4:dump的寄存器次数不变dump相同寄存器。证实写入成功与写入时间相关。

    6.为什么不能写入和时间相关?

    思考:可能和时钟初始化相关,但是公共寄存器的时钟初始化状态dump是正常的。

    猜测1:dump过程中时钟初始化完成(证据:增加dump后写入正常)。

    检查1:减少dump范围,发现公共寄存器的mpll稳定寄存器未稳定。

    猜测2:时钟相关初始化未完成导致写入失败。

    检查2:根据时钟依赖,在写入前增加等待,同时去掉打印,写入成功。

    去掉串口设备导致问题100%复现,原因是串口不用初始化导致IIC 时钟分频更早初始化,写入IIC分频寄存器失败。

    总结:

    1.解决问题过程中,曾经怀疑过时钟分频问题但是未检查寄存器,导致问题解决时间拉长。

    2.最开始未能考虑问题和时间相关的情况,如果直接思考该可能性,预计提高解决问题速度。

  • 相关阅读:
    一个将配置文件转换成xml的示例程序
    DatagridView控件加CheckBox
    Sql Server Split函数
    SQL语句压缩数据库和Log
    NPOI、OpenXML SDK、OpenOffice SDK 操作Excel
    判断参数对象是否为DBNULL
    软件开发模型
    c# ComboBox禁用鼠标滚轮
    动态管理视图和函数的使用
    TreeView 在失去焦点的时候 选中的TreeNode仍为高亮
  • 原文地址:https://www.cnblogs.com/fanguang/p/11808700.html
Copyright © 2020-2023  润新知