S5PV210开发板如何关闭看门狗
Posted Lewin~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S5PV210开发板如何关闭看门狗相关的知识,希望对你有一定的参考价值。
看门狗是什么?
是SoC内部的一个定时器
为什么需要看门狗?
现实生活中由于一些外部环境因素,例如高温低温信号干扰,运行在电子设备上的程序容易跑飞和死机,在这种情况下,我们希望设备自动复位,而不是人为去手动复位。看门狗就是用来完成这个工作,定好时间后,当时间到了系统就会自动复位。
为什么要关看门狗?
一般CPU设计,默认CPU启动后看门狗是工作的,这么做的原因是因为怕我们自己编写的程序在启动代码阶段就死机了没人管;好处就是没有空档和漏洞,坏处就是需要我们在启动代码阶段不停喂狗,以防止OS未启动就复位了;但实际上为了偷懒我们在启动代码阶段就会先去关闭看门狗,然后在后面OS启动起来之后再根据需要决定是否打开看门狗(一旦打开就必须同时提供喂狗)。
在S5PV210内部的iROM代码(BL0)中,其实已经关过看门狗了。所以我们在启动代码中即使编写了关闭看门狗的汇编程序,运行也不会有任何现象,(没有现象就是正常现象)。
很多CPU内部是没有BL0的,例如2440,因此也没有人事先给你关看门狗,都要在启动代码前段自己写代码关看门狗。
S5PV210怎么关看门狗?
1.物理特性:看门狗其实是个定时器(类似闹钟),硬件上就是SoC内部的一个内部外设。
2.原理图:看门狗属于内部外设,而且外部没有原件与他有关,所以不需要分析原理图,在原理图上根本找不到与看门狗有关的地方。
3.数据手册:在数据手册的Section7.3,找到
可以看到,要关闭看门狗,只需将WTCON(0xE2700000)的bit5置0即可。4.编写代码,以下是关闭看门狗的流水灯代码
#define GPJ0CON 0xE0200240
#define GPJ0DAT 0xE0200244
#define WTCON 0xE2700000
.global _start
_start:
/*关看门狗*/
ldr r0, =0
ldr r1, =WTCON
str r0, [r1]
/*流水灯*/
ldr r0, =0x11111111
ldr r1, =GPJ0CON
str r0, [r1]
led:
ldr r0, =~(1<<3)
ldr r1, =GPJ0DAT
str r0, [r1]
bl delay
ldr r0, =~(1<<4)
ldr r1, =GPJ0DAT
str r0, [r1]
bl delay
ldr r0, =~(1<<5)
ldr r1, =GPJ0DAT
str r0, [r1]
bl delay
b led
// b .
/*延时函数*/
delay:
ldr r2, =3000000
ldr r3, =0
delay_loop:
sub r2, r2, #1
cmp r2, r3
bne delay_loop
mov pc, lr
以上是关于S5PV210开发板如何关闭看门狗的主要内容,如果未能解决你的问题,请参考以下文章