jicheng0622

【原创】Kinetis的"喂狗"时间不能太短了

1
阅读(5016)

        我最近有点标题党了,老是喜欢起这种赤裸裸的标题,呵呵,不过相信点进来的博友应该懂此“喂狗”的意思,下面咱们好好聊聊Kinetis“喂狗”的问题,走着…

        看门狗功能大家都耳熟能详了,产品在最后量产之前,为了保证系统可靠性我们一般会把看门狗功能加进去,防止代码在某些意外情况下进入死锁状态从而导致整个系统的瘫痪(看门狗超时产生复位信号将系统重启),甚至有些对可靠性要求更严格的领域,都需要加入外部看门狗来保证产品稳定性。Kinetis系列的看门狗使用起来是比较简单的,具体的配置我这里就不多说了,可以直接参考官方的参考代码配置,本篇文章的目的是需要提醒广大用户在使用Kinetis的时候需要特别注意的问题:

1. 看门狗配置寄存器需要在解锁看门狗之后的256个总线时钟周期时间之内完成,也就是说在这256个总线周期之内我们需要快速完成看门狗功能的初始化,正常来讲这个配置的时间肯定足够了,还是强烈建议在配置看门狗之前把全局中断关掉,配置之后再打开全局中断,老话说的好,不怕一万就怕万一啊,万一就那么赶巧在配置过程中来一个中断把时间耗费掉就完了,是吧,安全重要,安全重要,安全重要啊,重要事情得讲三遍,呵呵;

image

2. 我们喂狗的函数也不能被打断,在往看门狗寄存器连续写入0xA602和0xB480两个数据是需要在20个总线周期内必须完成的,so…在刷狗喂狗的过程中也不能打开中断;

image

3. 第三个问题实际上我写这篇文章的初衷,这个问题我们手册里没有像前两点那样在手册中特别标注,但是对我们用户来说却不能忽视的。很多用户为了简单方便起见,会直接在主程序或者某个专门的任务中while(1)或者for死循环加入一个喂狗程序专门负责不断的喂狗,这样简单明了,但是这样是有潜在风险的,对Kinetis来说,每次喂狗的间隔还需要保证至少4个看门狗时钟以上的时间,这个在软件喂狗的时候需要额外注意的。

       好了,由于问题比较简单,所以就写到这了,大家知道这个事就行了,哈哈。未完待续~