一种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总线分级故障诊断恢复方法,其特征在于,闭环复检验证确认恢复成功后,清零错误计数器、清零累积的重建请求位掩码和置位健康状态标志。