Part5.3 关闭看门狗

不一定工作在没有干扰的情况下,添加了看门狗防止死机,让系统在死机的时候自动重启。

 

看门狗工作方式:

在硬件上实现一种定时器功能。当计时结束时就默认为系统死机,进行重启。

程序必须在计时结束前重新开始计时,俗称 喂狗

 

这是看门狗的原理图

 

 

关闭看门狗是因为我们BootLoader是比较简单的,基本上不会死机,所以如果不关闭反而需要不断喂狗

控制看门狗的寄存器是WTCON

 

 

关闭看门狗依旧在reset里面实现

 

reset:  

  bl set_svc

  bl disable_watchdog

 

set_svc:

  mrs r0,cpsr

  bic r0,r0,#0x1f

  orr r0,r0,#0x13   //uboot里面是0xd3,转化为二进制11010011,后五位一样,他屏蔽了中断和快速中断,我们也可以照它的来

  msr cpsr,r0

  mov pc,lr    //LR(R14)保存了返回地址,PC(R15)保存了当前地址,这句话意思就是从子程序返回

 

#define pWTCON 0x7e004000    //这里定义的是看门狗控制器的地址,实现对里面值的操作

disable_watchdog:

  ldr r0, =pWTCON     //这个伪指令把常量转载到r0里面

  mov r1,#0x0     //为了方便直接把寄存器所有位  置零

  str r1,[r0]      //不直接把立即数0放到r0里面  是因为mov指令只能访问通用寄存器

  mov pc,lr

posted @ 2017-06-11 15:53  郁兴力  阅读(908)  评论(0)    收藏  举报