硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2032|回复: 2
收起左侧

[embOS] 【解读】SEGGER新一期博文《看门狗定时器在RTOS中的重要性和使用》

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2017-8-11 18:17:11 | 显示全部楼层 |阅读模式
说明:
1.  我们这两年发布的RTX,FreeRTOS,uCOS-II和uCOS-III的例子都有配套看门狗的例子,实现方法也比较简单,所有的任务都定时的给最高优先级任务机发事件标志,表示此任务正常运行,接收到所有任务都正常运行的消息,将进行喂狗,如果有一个任务不能在规定的时间发送事件标志,会导致不能及时喂狗,从而芯片会复位。
2.  SEEGER的这个稍复杂些,专门为他们的embOS配套了一组API函数,用于看门狗功能:
QQ截图20170811181342.png
3.  embOS手册: UM01001_embOS.pdf (2.26 MB, 下载次数: 94)
4.  官方消息地址:https://blog.segger.com/using-a- ... k-rtos-environment/
=================================
一、前言
举了一个美国宇航局发射卫星的经典案例。
Clementine是美国航空航天局在1994年1月25日发射的卫星。由于缺乏几条看门狗代码,她的任务于1994年5月7日失效。
Clementine在已经连续两个月进行了月球测绘后,离开月球轨道并连续前往她的下一个目标 - 近地球小行星Geographos时发生了Clementine电脑故障,有效地切断了NASA操作航天器,并导致其中一个推进器不受控制地发射。NASA花了20分钟试图使系统恢复,但无济于事。硬件复位命令终于使Clementine重新上线,但是已经太晚了,她已经耗尽了所有的燃料,从而后续的任务必须被取消。随后,负责Clementine软件的开发团队希望他们使用硬件看门狗定时器,显然他们实施的软件超时不行。
260px-Clementine_lunar.jpg


二、看门狗定时器是如何发挥作用的
当前大部分主流的MCU都自带看门狗定时器的,没有自带的可以采用外置硬件看门狗。使用的时候设置一个初始值,开始进行递减计数,递减计数到0的时候会触发硬件复位,所以要在递减到0之前重新赋初值,独立看门狗基本都是这种流程。


三、如何喂狗
正确使用看门狗定时器并不像重新启动计数器那样简单,需要开发人员必须仔细选择看门狗的超时时间,以便看门狗可以在发生故障的系统执行任何不可逆转的操作之前进行干预。
在简单的应用中,特别是没有使用RTOS,开发人员通常会在主循环喂狗。这种方法仅需要配置适当的初始计数器值,并且计数值大于整个主循环的最坏情况执行时间即可。这通常是一个简单易行的方法,虽然一些系统将需要立即恢复,但大部分系统只需要确保它们不会被无限期地挂起即可。


四、RTOS环境中喂狗
然而,在更复杂的系统中,特别是多任务系统,各种任务可能会因为各种原因被挂起。系统开发人员面临的主要挑战是寻找一个可以定期喂狗,同时确保系统每个不同的过程都处于健康状态的方法。那么就需要关注以下几个问题:
(1)操作系统是否正常执行。
(2)高优先级任务是否长期霸占CPU,导致低优先级任务无法运行。
(3)是否发生了阻止一个或多个任务执行的死锁。
(4)任务程序是否正确执行。
开发人员还需要确保对其源代码执行的任何修改,无论是看门狗监测任务还是受监测任务,都必须最小而且要进行优化,不能加了检测机制后,反而影响了系统运行。


五、RTOS中增加看门狗支持
SEGGER的embOS为客户提供综合的看门狗解决方案,以简化看门狗处理,从而减少任何开发过程的时间花费。
这些解决方案应用对于不同的RTOS会有所不同。为了保证加入看门狗机制后,内存使用和执行时间都达到最优,显然需要一套全面的API函数来实现:
(1)可以检查各个任务,定时器组,甚至中断服务程序的状态
(2)在上下文的任何地方都可以检测看门狗状态。
embOS当前实现了五个API函数,但功能足以满足任何预期的目的。使用这些API函数,一个任务可以简单地将其自身注册到embOS看门狗模块,并可以单独配置其超时时间。然后,任务可以通过调用一个简单的embOS API函数来定期发出正确执行信号。所有被监视的任务是否在指定的超时时间内发出正确的执行信号,随后通过另一个单独的embOS API调用进行检查,该调用可以在专门创建的看门狗检测任务,空闲任务内,甚至系统时钟节拍中断服务程序或任何其他中断服务器程序中执行。
对于用户来说,只需要提供和注册两个功能:第一个实现看门狗的底层接口函数,而另一个则在看门狗计数器达到零时指定进一步的动作。例如,这可以将系统日志文件存储到非易失性存储器中,在执行硬件复位或执行任何其他操作之前,包含有关系统状态的进一步信息。
下面是embOS实现看门狗检测的简单事例:
QQ截图20170811195655.png


六、总结

当开始设计和开发具有看门狗的应用程序时,要提前决定如何使用它 ,并考虑可以帮助大家更快地实现的可用工具。
回复

使用道具 举报

0

主题

18

回帖

18

积分

新手上路

积分
18
发表于 2017-8-11 22:56:25 | 显示全部楼层
不错,干货
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2017-8-12 01:49:03 | 显示全部楼层
[s:151] [s:151]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-24 22:52 , Processed in 0.233324 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表