简单看门狗

watch dog
设计原因:为了在系统异常的时候可以让系统重启复位
看门狗实际上是个定时器,系统正常的时候会定时给定时器复位,当系统异常的时候定时器没有复位,到点了就发送reset信号然后把整个系统给reset了。

为什么要关掉watch dog?

为什么要关看门狗?
一般CPU设计,在CPU启动后看门狗默认是工作的(为什么默认不关闭而要工作?我猜测是因为怕你的程序在启动代码前端就死机了或者跑飞了没人管),好处就是没有空当和漏洞,坏处就是在启动代码段我们不方便去喂狗(或者说懒得去喂狗)时看门狗会复位,所以为了偷懒我们就在启动代码前端先去关闭看门狗,然后在后面系统启动起来之后再根据需要决定是否要打开看门狗(一旦打开就必须同时提供喂狗)。

课程笔记讲的很清楚了。

怎么关?
启动代码段还没跟c语言勾搭起来,所以只能用汇编写。
在这里插入图片描述
在这里插入图片描述

ldr r0 = 0xE270_0000 //把watchdog时间控制器的地址放在寄存器r0里面
ldr r1 = 0x0 //把寄存器r1都置零
str r1,[r0] //把r1的值保存在r0里面

关掉看门狗的使能位是第5位,置零就行,反正关掉了,所以其他位置置零也没所谓,还粗暴快捷。

发布了38 篇原创文章 · 获赞 1 · 访问量 1033

猜你喜欢

转载自blog.csdn.net/qq_40897531/article/details/104288693