单片机看门狗(嵌入式老鸟这样设计看门狗)
现在物联网产品越来越普及,如何设计好一个物联网嵌入式硬件产品,是很多工程师不断追求的目标。
物联网应用蓝图
在一般的嵌入式系统设计过程中,往往通过添加看门狗来保证系统的稳定性。而在汽车ECU设计中,不仅需要看门狗功能,而且功能相对而言,比一般的嵌入式系统看门狗要更为复杂。 在汽车电子系统中,复杂的看门狗可以实现对系统任务,软件组件、运行实体等多种级别的状态监控。(即软件组件实现的是一个大的功能,而运行实体是一个比较单一的功能实体,系统任务可包含多个软件组件,软件组件可以包含多个运行实体)。系统级框图具体如所示:
系统框图
- 看门狗的软件逻辑分类
1.周期刷新型看门狗,应用场景一般是做周期任务监控,确认一定时间内,被监控的实体,如某个任务,软件组件或者运行实体运行的次数在一定的范围内。比如在3秒内某个任务是否运行了145-155次,若没在这个范围内,则触发看门狗。
2.截止型看门狗,一般用来监测非周期型的软件组件或者非周期型任务。实现往往是在软件组件或任务的开始记录一个时间,运行到目标区域再记录一个时间,通过计算两个时间的差,确定指定区域的软件运行时间是否超出监控的范围,若时间超出范围,则触发看门狗。
3.逻辑流控制看门狗:应用场景是对指定的程序流实现监控,例如确保a,b,c函数或者分支是否按a->b->c的顺序执行,若出错,则触发看门狗。
- 看门狗硬件分类
1.内部看门狗,一般MCU都有看门狗外设,可以通过刷新看门狗寄存器等操作更新看门狗。此方案的好处是,几乎不用额外的成本,就可以实现看门狗功能。坏处也很明显,看门狗和MCU共用时钟总线,当时钟出问题的时候,逻辑没问题,但是和外部真实世界的时间存在巨大差异,无法实现安全监控。
2.外部看门狗芯片,MCU需要通过GPIO或者SPI通讯总线等进行看门狗刷新,若刷新超时,则触发看门狗。此方案的的好处是看门狗拥有独立于MCU的时钟源,可以有效避免MCU时钟出错或受干扰时,看门狗依然可以正常工作,系统稳定性增强。缺点是需要增加硬件成本。
- 软件设计注意事项
看门狗任务设计时可以分为看门狗管理功能和看门狗驱动两部分,管理功能主要用来统计各个监控节点的刷新情况,超时情况和逻辑顺序记录情况。若上述三种情况中的任何一个出现错误,则请求看门狗驱动停止刷新看门狗,实现触发看门狗的功能。
看门狗任务优先级:一般情况下,看门狗任务优先级会高于应用软件功能任务的优先级。
看门狗任务运行时间:看门狗运行周期和被监控的应用任务中周期最小的保持一致。
应用程序任务管理:软件组件、运行实体等应根据所在的任务优先级,确定一个看门狗超时时间,优先级越低,看门狗超时时间越长。例如示意图中,若优先级和超时配置如下表:
任务看门狗配置图
当Task2看门狗超时3S的时候,看门狗管理功能可以在请求看门狗驱动停止刷狗前记录下Task2导致了看门狗出错,这个记录可以作为出错分析的依据。若Task1和Task2的超时时间互换,Task2跑死时,会先触发Task1的看门狗,然后看门狗出错记录将无助于问题分析。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。