关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识。

刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧。

    看门狗定时器会在由于噪声或者系统错误造成的问题中恢复机器正常操作,它可以产生复位信号。当定时器计数达到0的时候,如果一直没有程序给它重新填装数(没有喂狗),它就会产生复位信号并复位。看门狗定时器支持等级触发的中断机制,有优先级先后之分,不过你打开了这个定时器之后你不喂狗的话那你早晚会被复位。

   看门狗控制寄存器里指定预分频的值和分频要素,有效的预分频值在0到(2^8-1)之间,分频要素可以为16,32,64或128.这个等式可以计算看门狗定时器的频率和每周期持续的时间: t_watchdog  = 1/( PCLK / (Prescaler value(预分频值) + 1) / Division_factor ) 

    一旦看门狗定时器启动了之后,看门狗数据寄存器就没办法再给它重新定值了,所以在看门狗定时器启动之前最好给它一个初值。(补充:当定时器处于一种调试模式时,看门狗定时器取决于CPU的调试信号(应答信号),如果有调试信号应答,则看门狗定时器到期的时候则不会产生复位输出)

    看门狗定时器控制器决定了你是不是要开启它,看门狗定时器的作用是重启S5PV210来恢复它的功能,如果你不需要它自动重启,那你应该先关上它。

    本节只介绍如何关闭看门狗,至于里面别的设置,等以后遇到的时候再说。

      关闭看门狗的步骤:

      #define WTCON    0xE2700000

      ldr r0, =WTCON

      ldr r1, =0x0  //全都填充0,因为别的位一旦关闭,

                //看门狗也都没有作用了,所以都归零算了

      str r1, [r0]  //指令的意思是:把r1寄存器中的值放到

                //以r2寄存器中的值为地址的内存空间里去