1 概述
TC3xx包含以下看门狗计时器:
.一个安全的看门狗计时器
.每个CPU独立的看门狗计时器
有以下基本功能:
.可编程的时间基础和重新加载值
.可编程的密码保护与可配置的自动密码排序
.可编程的时间戳检查与可编程窗口
.无效或丢失定时器刷新序列导致安全警报
2 安全看门狗
安全监视计时器提供了一个独立于CPU监视计时器的整体CPU监视器,并提供了另一种保护,防止意外写入安全关键系统寄存器。当Safety WDT被启用时,如果它没有在用户可编程的时间段内得到服务,它可能会引起SMU报警请求。
CPU必须在此时间间隔内服务于Safety WDT,以防止其发生。对Safety WDT超时的响应可以在SMU中进行配置。
3 CPU看门狗
单独的CPU监视器计时器提供了监视单独的CPU执行线程的能力,而不需要软件来协调一个共同的监视器的共享使用。
当CPU WDT被启用时,如果在用户可编程的时间段内没有正确地服务,它可能会导致SMU报警请求。CPU必须在此时间间隔内服务其CPU WDT,以防止这种情况发生。
对每个CPUy监视器超时的响应是可以在SMU内配置的。因此,定期维护CPU WDT可以确认相应的CPU正在按预期执行软件序列。
重置后,CPU0运行,CPU0监视器计时器自动启动。其他cpu最初处于HALT状态,因此它们相应的看门狗计时器被禁用。其他CPU监视器没有配置为生成超时重置,但可以启用。CPU监视器只能由其相应的CPU进行配置、启用或禁用。
4 寄存器写保护机制
EndInit的保护有三种:
1)“CE”保护,只有把每一个CPU的ENDINIT设为0后,这个CPU的critical registers保护才被解除(可写)。
2)“E”保护,任意一个CPU的ENDINIT设为0后,所有CPU的system critical registers保护就解除了。
3)“SE”保护,Safety Watchdog的ENDINIT设为0后,Safety EndInit的保护就解除了。
ENDINIT设置为0的操作,需要一套较为复杂的操作序列。
ENDINIT置为0需要一段时间,只有等到ENDINIT真的为0后才能执行往下的操作,不然可能会产生异常。
5 看门狗模式
每个看门狗计时器可以在三种不同的操作模式下操作:
. Time-Out Mode
.Normal Mode
.Disable Mode
复位以后CPU的Watchdog默认是处在Time-Out Mode下的,WDT在Time-Out Mode下就会从0xFFFC开始往上计数,如果计数到0xFFFF就会溢出,如果在计数到0xFFFF之前对WDT_CON0进行了password access后对WDT_CON0进行了Modify access,重新对WDT进了reload value到REL值,这样WDT从Time-Out模式切换到了Normal Mode,这个时候WDT开始从REL值往上计数。
在Noraml Mode下计数到0xFFFF后WDT就溢出了,触发SMU的Timeout的Alarm,这个Alarm会触发SMU里面的一个Recovery time进行计数,Recovery time也timeout后就会产生一个SMU的reset。因此如果开启了watchdog功能,必须在超时之前重新加载REL值。
6 看门狗使用
看门狗模块主要有三类寄存器,保护寄存器WDTCPUyCON0(y=0-5),系统寄存器WDTCPUyCON1 (y=0-5) ,状态寄存器WDTCPUySR(y=0-5)。
6.1 解锁寄存器
在对看门狗寄存器进行操作时,需要输入正确的password才能进行操作,默认password为60.
又有PW位 bit2-bit8进行的翻转,调试器读取出来PW实际为3.
当写入正确的password值后,LCK会自动解锁,再次写入password值,LCK会自动锁住。
6.2 加载超时计数值
当写入正确的password后,可重新加载REL值,定时器会从加载值向上计数,加到FFFF值,后溢出。因此需要在计数值溢出之前, 在中断函数或周期任务里面重新加载REL值。
6.3 使能看门狗功能
通过控制 系统寄存器WDTCPUyCON1中DS位,可以使能看门狗功能。
6.4 观测看门狗状态
通过状态寄存器WDTCPUySR的可以观测看门狗状态。
如DS反映看门狗是否使能,OE反映当前超时状态,TIM位反映计数值。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40462906/article/details/136257068
|