关于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寄存器中的值为地址的内存空间里去
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。