外部看门狗是嵌入式系统工程师工具箱里重要且关键的工具,然而为了捕捉到故障,且预防故障的发生,看们狗必须设计得当。因此设计一个看门狗系统时应考虑以下5个秘诀。
技巧1—监测心跳
一个外部看门狗须具备的最简单功能是监测由主应用处理器产生的一个定期“心跳(heartbeat)”信号,以及在心跳异常时发出一个错误信号。心跳监测可做为两种不同的用途:首先,在经过已在软件执行的功能检查之后,微控制器(mcu)应该只是生成心跳,以确保软件的正常工作。第二,如果系统的实时响应已受到损害,心跳应该要能显示出来。
为软件功能和实时响应监测心跳,可透过一个使用简单,“哑巴(dumb)”的外部看门狗。外部看门狗应该有沿着一个心跳必须出现的窗口的能力调派一个心跳周期,心跳窗口的作用是当系统的实时响应受到损害时,允许看门狗进行检测。而在该功能或实时检查失败的情况下,看门狗会试图透过应用处理器的重置来恢复系统。
技巧2—采用一个低效能mcu
简易基于定时器的外部看门狗可在相对低成本的状况下监控心跳,但这会严重限制看门狗系统的能力和恢复的可能性。其实,低效能微控制器就可以做为外部看门狗的定时器,所以何不为看门狗增添一些智能且采用微控制器呢?微控制器的固件(firmware)可被开发用来满足增加许多功能的心跳监测窗口所需。
一个“聪明”的看门狗有时被称为监督者或安全看门狗,且已在不同的产业,如汽车领域实际使用了许多年;另外,通常基于微控制器的看门狗以被主要用于安全关键应用。目前开发工具已相当可用且硬件成本也低,这样的设计具成本效益,且在其他的应用中亦是如此。
技巧3—监督关键的系统功能
使用一个小微控制器作为看门狗的决定,可开启看门狗该如何使用的无限可能。其中可赋予智能看门狗的第一个角色通常是监督的重要系统功能,如系统电流或传感器状态。看门狗如何能监督电流的一个例子是,采取一个电流的独立测量,并提供监测值给应用处理器,之后,应用处理器可比较看门狗与自身读取到的数值。若是两者之间有分歧,则系统将执行故障树(faulttree)此一被应用程序视为适当的方式。
技巧4—观察一个信道
有时嵌入式系统可像个看门狗且应用处理器也可以如期工作,但外部的检查员是处于非响应的状态。在这样的状态下,绑定智能看门狗到一个信道如通用异步收发器(uart)是可行的。当看门狗被连接到信道时,不仅可以监控通道流量,还可以接收对看门狗而言的特定指令。
在这方面一个很好的例子是专为小型卫星设计的看门狗,其可监视飞行器计算机和地面基地台间的无线电通信。如果飞行器计算机变得不响应无线电,看门狗将接收到一个命令,然后执行并重置飞行器计算机。
技巧5—考虑外部定时重置功能
采用一个微控制器执行看门狗,会有额外功能增加其复杂性,以及一个新软件单元到系统的设计,因此,系统中看门狗的问题无疑是由工程师的头脑来监看。在看门狗自行“放大假”的情况下,其将如何恢复?
选择之一是使用前面讨论的哑巴外部看门狗定时器。智能看门狗会由哑巴看门狗的定时器,使其从被重置的状况下生成心跳;另一个选择是让应用处理器的行为就像个看门狗。这里须小心思考,给予最佳的方式以确保两个处理器如预期地保持正常状态。
简单设计确保看门狗可行性
智能看门狗的目的是监测系统和主微控制器,以确保它们依预期运作。在系统设计中,看门狗可允许其所支持的非常多功能,开发者需要牢记,增加智能看门狗复杂度的可能性,且看门狗本身须包含潜在的故障模式和错误。更重要的是,看门狗的设计应保持简单与采用最小的必要功能集,将可确保其可被彻底测试和验证。