天天看点

1472_TC275的看门狗简介以及安全看门狗及CPU看门狗的区分

全部学习汇总: ​​GreyZhang/g_TC275: happy hacking for TC275! (github.com)​​

看基础的例程的时候看到了一个看门狗的操作接口,因此顺着来了解一下TC275的看门狗。而按照我之前了解到的信息,似乎也没有看到过谁在软件设计中把这个看门狗的功能充分利用起来。

之前看基础的例程,首先看到了一个看门狗的处理接口。

1472_TC275的看门狗简介以及安全看门狗及CPU看门狗的区分

这个是代码中的相关的接口操作,从接口的含义来看,先是禁用了CPU的看门狗接着禁用了安全看门狗。如此,这里面其实是对应着两种看门狗功能。另外,在core1以及core2的代码中没有这样的操作,相应的代码状态我这里不做展示了。那么,这个CPU的看门狗与安全看门狗是什么关系呢?后面,借助于文档来确认一下。

1472_TC275的看门狗简介以及安全看门狗及CPU看门狗的区分

这里面的信息还是很多的,主要的知识点或者注意事项简单列一下:

1. 如同代码中看到的,在TC275的MCU中的确是有安全看门狗以及CPU看门狗两类。安全看门狗是整个MCU系统级别的,而CPU的看门狗隶属于每一个内核。

2. 每一个看门狗都有一个ENDINIT的机制,可以防止关键的寄存器被意外修改。

3. 在系统异常的时候不能够喂狗也不能够操作ENDINIT,如果必须操作需要通过确认密码以及保护位来进行相应的操作。

4. 如果密码的操作都是正确的也不意味着修改可以一直修改,有一个限制的时间,如果想要延长时间需要通过操作ENDINIT来实现。

5. 如果密码等信息错误,会直接产生一个alarm报给SMU。其实,一定程度上这种方式可以用来提供多一种复位实现手段。

6. 程序流以及程序执行时间的监控都是可选的,从相关的描述看这样的功能似乎是硬件本身的一种机制而不是依赖于软件策略实现。

7. 任何WDT的超时都会报到SMU,SMU产生中断或者NMI。

1472_TC275的看门狗简介以及安全看门狗及CPU看门狗的区分

主要的知识点信息:

1. 如果有的系统中只用了一个看门狗的话,看起来最好是安全看门狗。这个需要选择一个CPU来对这个看门狗进行喂狗服务操作。

2. CPU看门狗应该在独立的core中各自独立操作使用。

3. 安全看门狗的超时时间配置不是在看门狗模块本身,而是在SMU中。

4. 这里提出来一个SE的概念,其实就是下面的Safety ENDINIT的缩写。

5. CPU的看门狗有些功能看起来跟安全看门狗是类似的。

6. CPU的看门狗超时参数配置也是在SMU中。

7. 复位之后,CPU0的看门狗定时器是默认启动的,其他的CPU的看门狗不是默认启动的。其实,根据前面的描述来看,即使是定时器超时似乎也不见得会直接触发reset,因为还有一个SMU做最终的动作抉择。另外,最后面这段描述直接解释了为什么看到的代码中,只有core0的软件中有看门狗的操作,因为其他的core中的看门狗默认是不启动的。

1472_TC275的看门狗简介以及安全看门狗及CPU看门狗的区分

继续阅读