全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com)
前面看了TC275的WDT(看门狗定时器)的简单介绍,了解了这个MCU上的几个看门狗以及看门狗的分类与异同。这一次,针对WDT的基本特性以及前面看到的保护机制做一个简单的内容整理。
1. 看门狗的定时器是16bit的。
2. 从描述看,时钟源也是固定的,就是SPB时钟,后面针对这个时钟还得去了解下,或许得了解整个MCU的时钟树。
3. 访问看门狗的一些寄存器需要用到密码,而这个密码也是可以由用户自行定义的。
4. 错误的访问信息会报到SMU模块。
5. 看门狗定时器可以提供时序监控以及执行时间的监控。
6. 定时器以及触发机制的模块跟监控的模块看起来是独立的。
7. 可配置的安全机制可以保证出现的所有的异常都会以alarm的形式报到SMU。
8. 可以通过外部的心跳信号来观察看门狗是否处于工作状态。
9. 作为引用描述,这里学到了另一个知识点:管理员模式以及访问保护机制都是可以提供一定的写入保护的。
10. WDT的关键寄存器的写入只有ENDINIT为0且开了管理员模式的时候是允许的。
1. 又看到了一个新的词汇,BCU,这个加入到学习计划中以后确认一下。
2. 每一个WDT都有ENDINIT的机制。
3. ENDINIT操作后的允许操作时间,一直没有看到一个量化的信息。
4. 操作寄存器前可以先读一下ENDINIT确保有正确的操作条件。
1. 不同CPU的WDT访问密码可以是不同的。
2. CPU的WDT不能够跨核喂狗,否则会产生异常错误。
3. 只要有异常,全都会报给SMU不会被忽略。
4. 中间提到了一个密码写入的错误操作,其实在解锁的条件下再输入密码是没啥意义的。
5. 所有的异常全都会汇集到SMU中,看起来这个是AURIX芯片的一个独特设计。
6. 程序流的监控可能是通过不同的WDT密码来实现,这样会保证一定顺序的合理性。看起来,这个功能还是跟软件有一定的关系。不过,我一直存在的一个疑问多少是知道了大概的答案了。
1. 这个描述又让我迷糊了,如果密码自动修改,如何去判断下一个密码呢?
2. 密码的读写都有保护的机制。
3. 有自动变化密码的功能,这个应该主要是为了支持程序流的监控的。
4. 密码变化有一定的推导规则,这样只要知道了初始的密码,接下来的每一个密码都是可以计算出来的。
时间监控不是一个百分百准确的监控,可以有一定的时间容忍度。看这样的描述,感觉这个有一种窗口看门狗的感觉。
1. 检查访问其实也是查密码,但是这个时候WDT是锁定的。
2. 检查可以检查任务顺序、程序流以及运行时间。
3. 控制寄存器0的修改前提是密码正确。
4. 修改控制寄存器的时候,有些地方对bit格式有一定的要求。
1. 关于外部的心跳监控,感觉上可以结合看门狗的程序软件或者计数器,直接用户自己设计。但是,看后面的资料的时候可以看出来,其实这个PIN是一种直接路由的模式,是有专门的PIN脚的。
2. 控制寄存器0解锁之后,WDT会启动切换到TimeOut的模式。
WDT有一个调试模式,可以允许控制寄存器被覆盖修改用来支持调试的功能。
以上就是WDT的基本功能特性以及保护机制的简单梳理,可以看得出来AURIX TC275的WDT配合SMU是可以提供一个非常强大且功能复杂的看门狗功能的。这个跟我之前接触的简单的超时类型的看门狗相比,功能细节上复杂得多。