
嵌入式开发:看门狗问题QA
关于看门狗的文章,可以参考前文《为什么需要外部看门狗?》、《嵌入式开发:TLF35584外狗之WWD》等。本文主要整理几个关于看门狗的工程问题。
Q1:外狗和内狗的监控范畴
A1:内狗主要监控程序运行后的软件状态,确切说,内狗主要监控OS启动后,周期性Task、非周期性Task、软件时序的运行状态。多数软件架构设计中,需要OS启动后,内狗功能使能。因此,内狗存在程序初始化和程序shutdown的监控盲区。为了防止程序在初始化和shutdown中出现异常,可以启用外狗监控。
提示:工程中,如果软件开发的不够鲁棒,启用看门狗以后,可能带来reset问题。
Q2:程序Shutdown过程中,外部看门狗由谁关闭
A2:当ECU需要休眠,软件执行shutdown过程时,一般不会直接关闭外部看门狗,而是操作外部看门狗所在的电源管理模块(SBC:System Basic Chip),eg:让对应的SBC进入Standby模式,当SBC进入Standby模式,关闭外部看门狗。
举例:uC的工作电压,多数由SBC提供(eg:V_LDO_uC)。为了最大程度的降低功耗,uC休眠时,可以通过切换SBC的工作模式,停止输出uC的工作电压。uC与SBC的交互示意如下:
以TLF35584为例,在uC的shutdown阶段,切换其工作模式,由Normal进入Standby,进入Standby后。Watchdog和V_LDO_uC的状态如下所示:
上图可以看出,TLF35584进入Standby模式以后,Watchdog(外狗)不再使能,LDO_uC进入Off状态,即:关闭uC供电。
Q3:SMU(Safety Managing Unit)的FSP与SBC关系
A3:工程开发过程中,大家可能听过FSP(Fault Signaling Protocol)这样一个名词。FSP属于功能安全的范畴,主要作用是:uC将失效状态告知外部监控器件(eg:SBC),由外部监控器件做进一步的异常处理(eg:Reset)。uC的FSP与SBC之间的关系示意如下:
FSP Pin的变化如下所示,当程序出现问题时,FSP Pin有下拉动作。
工程中,有些问题很难排查,有时甚至都不确定问题出在Bootloader还是Application。如果在Application中使能了此功能,可以通过FSP Pin的变化确定问题是否出在Application。
4、TLF35584状态由NORMAL切换STANDBY模式时,收到唤醒事件,如何处理?
工程中,常常碰到休眠问题,所以,理解好SBC状态切换有助于问题的分析。本文讨论一下TLF35584状态由NORMAL到STANDBY模式变化分析,如下所示:
如上图:如果使能SBC的FWD、WWD,在休眠之前,仍需要正常喂狗(Service WatchDog)。在发送"Go to Standby"指令之前,注意:uC没有禁用看门狗的动作。
TLF35584状态由NORMAL到STANDBY模式并不是立即执行,而是片选信号(SCS)拉高之后,立即启动Ttr,del计时,当超过设定阈值时间Ttr,del以后,状态才完成切换,而这个时间在100us~1.6ms之间可配置,默认900us,如下所示:
如果在"Transition"期间,收到有效的唤醒信号(eg:ENA或者WAK),状态如何切换呢?答:如果在"Transition"期间,收到有效的唤醒信号,设备状态进入INIT模式,同时触发Reset动作(ROT拉低)。
文章转载自公众号:开心果 Need Car
