看门狗电路

系统应该具有一定的自恢复功能,以防止意外发生时程序跑飞或者进入死循环。意外有很多,比如硬件的EMI干扰以及软件的内存泄露、程序健壮性等问题。看门狗,英文叫做watchdog,本质上是一个定时器电路,一般有一个输入(喂狗端,kicking the dog或service the dog)和一个输出(一般连接至另一部分的复位端,比如DSP的复位端)。

CPU正常工作时,程序会定期喂狗,使得看门狗计数器清零,如果超过一定时间没有喂狗操作,一般就认为程序运行发生意外,此时看门狗电路就会给出一个复位信号到CPU的复位端,使CPU强制复位,从而使得程序能够从跑飞或者死循环的状态跳出。

喂狗操作不能太过频繁,这样会造成资源浪费,此外,在系统设计之初,不建议使用看门狗,因为此时发生意外的可能性较大,且有些意外是必须要处理的。

F2812以及F2806x和F28335的看门狗计数器都是8位的,当其计数达到最大值时,看门狗模块会产生一个输出脉冲,为了防止看门狗计数器达到最大值,通常可以采用两种办法:一是禁止看门狗计数器;另一种方法就是定期喂狗,通过软件周期性地向负责复位看门狗计数器的看门狗密钥寄存器(WDKEY)写入0x55+0xAA,即紧跟着0x55写入0xAA,这样就可以使得看门狗计数器清零。

作者注1:如果采用定期喂狗的方式来防止看门狗计数器达到最大值,假如意外发生造成程序进入死循环,使得喂狗的代码段得不到执行,这样一来,看门狗计数器一旦溢出,便会造成CPU的复位。如果是单纯地禁止看门狗计数器,便无法通过看门狗计数器溢出来复位CPU。因而上述两种防止看门狗计数器达到最大值的方法是有本质区别的。

作者注2:可以利用看门狗计数器溢出来复位CPU,比如在DSP程序中增加如下死循环,使得定期喂狗的代码段得不到执行,从而通过看门狗计数器溢出来复位DSP。

while(1)
{
  asm(" NOP ");
}

参考文献:
1. 《手把手教你DSP:基于TMS320F28335》,北京:北京航空航天大学出版社,2015.1
2. 《手把手教你DSP:基于TMS320X281x》,北京:北京航空航天大学出版社,2011.4
3. TMS320x2806x Piccolo Technical Reference Manual

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬件看门狗电路(Hardware Watchdog)的设置通常需要涉及以下几个方面: 1. 看门狗定时器配置:硬件看门狗电路通常由一个定时器和一个计数器组成。您需要根据硬件平台的要求,在系统初始化期间配置看门狗定时器的时钟源、计数器的初始值和定时器的工作模式等参数。 2. 看门狗喂狗操作:在系统运行过程中,您需要定期喂狗来防止看门狗定时器超时触发复位。这通常可以通过向看门狗计数器写入特定的数值来实现,从而重置定时器的计数值。 3. 看门狗超时处理:当看门狗定时器超时未被重置时,硬件看门狗电路会触发复位信号,导致系统重新启动。您可以在系统中添加特定的处理程序,以便在看门狗超时发生时进行相应的处理,例如记录日志、执行特定操作或进行故障恢复。 请注意,硬件看门狗电路的具体设置方式会因硬件平台的不同而有所差异。因此,您需要参考硬件供应商提供的文档或参考设计手册来了解具体的设置方法和参数配置。 另外,为了确保系统的稳定和可靠性,在设置硬件看门狗电路时,请务必注意以下几点: - 设置合适的看门狗定时器超时时间,以保证系统可以在正常运行过程中及时喂狗,避免误触发复位。 - 在系统初始化期间,确保正确地配置和启动看门狗定时器,以防止出现意外复位或系统死锁的情况。 - 在系统运行过程中,定期喂狗,确保看门狗定时器不会超时触发复位。 - 在系统设计中,合理考虑看门狗超时处理的策略和操作,以便及时发现和处理系统故障情况。 希望以上信息对您有所帮助。如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值