一种I2C总线分级故障诊断恢复方法与流程

摘要: 本发明涉及车载嵌入式系统容错,尤其涉及一种i2c总线分级故障诊断恢复方法。背景技术:1、车载i2c总线连接多类外设——串行器/解串器、触控芯片、摄像头模组等,在...
一种I2C总线分级故障诊断恢复方法与流程

本发明涉及车载嵌入式系统容错,尤其涉及一种i2c总线分级故障诊断恢复方法。

背景技术:

1、车载i2c总线连接多类外设——串行器/解串器、触控芯片、摄像头模组等,在行车振动、静电放电(esd)冲击、线缆劣化等复杂工况下,易出现总线挂死(scl/sda持续低电平)或外设失联故障。

2、现有方案主要包括两类:

3、(a)单一重试策略,例如,公告号为cn116107788a的专利公开了一种i2c总线故障处理方法及装置,该方法在检测到i2c传输失败时反复重试读/写操作直至超时或成功,此方案无法区分故障原因——若故障是外设物理掉电,重复重试只会持续占用总线、延长恢复时间。

4、(b)单一硬件定时器监控复位策略,例如,公告号为cn120950295a的专利公开了一种基于飞腾2000_4处理器的iic总线挂死修复方法,该方法通过gpio硬件监控复位电路周期性复位i2c控制器,仅复位控制器侧而无法处理外设侧深度故障。

5、上述现有方案均未实现与故障原因匹配的分层诊断与递进恢复,主要存在以下缺陷:

6、1.无法区分总线物理挂死、从设备不应答和从设备配置丢失三种根因,导致恢复手段选型失配;

7、2.恢复手段单一,仅做控制器复位或仅做外设复位,在面对深度故障(如链路配置丢失、串行器掉电)时恢复失败率高;

8、3. 低层级恢复失败后无自动升级机制,需依赖人工或系统级重启;

9、4.恢复结果缺乏闭环验证,无法确认恢复是否真正生效。

技术实现思路

1、本申请旨在至少解决现有技术中存在的技术问题,提供一种i2c总线分级故障诊断恢复方法。

2、本发明提供的一种i2c总线分级故障诊断恢复方法,所述方法包括:

3、读取i2c总线上从设备canary寄存器中的canary值;

4、根据canary值判定i2c总线的故障原因;

5、设定l0级、l1级和l3级三个恢复能力逐级增强的恢复层级,根据故障原因匹配对应的初始恢复层级,并执行对应恢复层级的恢复流程;

6、恢复流程执行完成后,进行闭环复检验证;

7、若满足健康条件,则判定对应恢复层级的恢复成功;

8、若不满足健康条件,则判定对应恢复层级的恢复失败,推进下一恢复层级进行恢复。

9、可选地,所述根据canary值判定i2c总线的故障原因,包括:

10、若canary值全部为0xff,则将故障原因判定为i2c总线物理挂死故障;

11、若canary值全部为0x00,则将故障原因判定为从设备不应答故障;

12、若任一canary值与预设期望值不匹配,则将故障原因判定为从设备配置丢失故障;

13、若所有canary值均与预设期望值匹配,则判定i2c总线链路健康。

14、可选地,若故障原因为i2c总线物理挂死,则对应的初始恢复层级为l0级;若故障原因为从设备不应答,则对应的初始恢复层级为l1级;若故障原因为从设备配置丢失,则对应的初始恢复层级为l3级。

15、可选地,所述l0级的恢复流程包括:

16、控制i2c控制器关断、掩蔽所有中断源,并清除i2c控制器内全部已挂起的中断;

17、清零软件侧锁存错误标志,并将i2c控制器状态复位为idle,并重建i2c控制器工作参数;

18、使i2c控制器保持关断状态,且不设置持久锁标志并释放i2c控制器。

19、可选地,所述l1级的恢复流程包括soc直驱型子路径和反向通道转发型子路径,根据外设位置确定本次恢复流程选择的子路径。

20、可选地,所述soc直驱型子路径包括:

21、将主控soc的gpio引脚配置为推挽输出模式;

22、通过gpio引脚输出低电平并维持预设复位时长,此期间串行器芯片强制释放sda/scl引脚,直接对i2c总线上的串行器执行硬件复位;

23、控制gpio引脚持续输出高电平,直至串行器完成内部初始化。

24、可选地,所述反向通道转发型子路径包括:

25、通过主控soc的gpio引脚输出复位电平,经串行器编码后借助fpd-linkiii链路的反向通道传输至解串器;

26、解串器对接收到的复位信号解码,驱动远端从设备复位引脚输出低电平并保持预设复位时长,完成远端从设备硬件复位;

27、拉高复位电平并等待预设初始化延时,使远端从设备完成内部初始化。

28、可选地,所述l3级的恢复流程包括:

29、切断解串器及下游从设备电源,等待第一预设时长,以使得所述解串器和下游从设备充分放电;

30、恢复解串器电源,配置基础寄存器并等待第二预设时长以使解串器完成芯片内部pll锁定;

31、重建串行器、解串器寄存器配置,搭建fpd-linkiii链路并初始化下游从设备。

32、可选地,所述l0级的健康条件为i2c总线读写成功;所述l1级的健康条件为canary值全匹配预期值或从设备id寄存器的设备id正确;所述l3级的健康条件为解串器的活性探针寄存器值正确。

33、可选地,闭环复检验证确认恢复成功后,清零错误计数器、清零累积的重建请求位掩码和置位健康状态标志。

34、综上所述,本申请包括以下有益技术效果:

35、1.本发明中,采用canary寄存器分级诊断+递进式三级恢复+闭环验证的整体架构,由三个协同模块构成;通过canary寄存器分组诊断精确区分不同类型的故障原因,根据故障原因选择与故障严重程度匹配的恢复手段,避免了低层级手段处理高层级故障导致的无效重试和恢复延迟。再根据canary诊断结果,选择与故障原因匹配的恢复层级。

36、2.本发明中,l0级仅作用于i2c控制器自身;l1级仅作用于目标从设备,且l1级的复位信号通路完全独立于i2c总线,在i2c总线scl/sda已被从设备拉低的极端情况下仍能复位该从设备、释放总线;l3级作用于单条链路的全部设备;任一外设及其所属链路独立执行诊断与恢复,不受其他外设状态影响;且每次恢复后原地复检标志性寄存器,只有复检通过才确认恢复成功,避免虚假恢复遮蔽实际故障。

37、3.本发明中,通过位掩码计数器对恢复日志实施限流,确保在持续性物理故障场景下日志输出量不超出可接受范围。

1.一种i2c总线分级故障诊断恢复方法,其特征在于,所述方法包括:

2.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述根据canary值判定i2c总线的故障原因,包括:

3.如权利要求2所述的i2c总线分级故障诊断恢复方法,其特征在于,若故障原因为i2c总线物理挂死,则对应的初始恢复层级为l0级;若故障原因为从设备不应答,则对应的初始恢复层级为l1级;若故障原因为从设备配置丢失,则对应的初始恢复层级为l3级。

4.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述l0级的恢复流程的步骤包括:

5.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述soc直驱型子路径包括:

6.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述反向通道转发型子路径包括:

7.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述l3级的恢复流程的步骤包括:

8.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,所述l0级的健康条件为i2c总线读写成功;所述l1级的健康条件为canary值全匹配预期值或从设备id寄存器的设备id正确;所述l3级的健康条件为解串器的活性探针寄存器值正确。

9.如权利要求1所述的i2c总线分级故障诊断恢复方法,其特征在于,闭环复检验证确认恢复成功后,清零错误计数器、清零累积的重建请求位掩码和置位健康状态标志。