浅析嵌入式系统之uboot详解(3)—看门狗

bootloader详解目录—废铁是怎么产生价值的

浅析嵌入式系统之uboot详解(1)—板子上电后uboot做了什么
浅析嵌入式系统之uboot详解(2)—CPU工作模式
浅析嵌入式系统之uboot详解(3)—看门狗
浅析嵌入式系统之uboot详解(4.1)—内部中断
浅析嵌入式系统之uboot详解(4.2)—外部中断(GPIO)
浅析嵌入式系统之uboot详解(4.3)—异常和异常向量
浅析嵌入式系统之uboot详解(5.1)—时钟分频
浅析嵌入式系统之uboot详解(5.2)—省电模式(番外)
浅析嵌入式系统之uboot详解(5.3)—PWM定时器(番外)
浅析嵌入式系统之uboot详解(6)—关闭缓存和mmu
浅析嵌入式系统之uboot详解(7)—初始化SDRAM


uboot详解—看门狗

  • 1. 前言
  • 2. 看门狗的种类
  • 3. 总结

1. 前言

uboot启动时,当将cpu运行模式设置为管理模式后,就要关闭看门狗了,那么看门狗是干什么的呢/p>

狗狗是我们的好朋友,有时候,一条好狗狗能够救主人的性命,”看门狗“是cpu的“好朋友”,它也能够在cpu出状况的时候把它救活。

看门狗其实就是一个可以在一定时间内被复位的计数器,当看门狗启动后,计数器开始自动计数,经过一定时间,cpu就会将这个计数器复位,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启,这个复位的操作就是“喂狗”。

看门狗就这样兢兢业业的守着它的主人cpu,当cpu出状况的时候,就不能喂狗了,看门狗饿了就知道cpu不正常工作了,然后发送复位信号让cpu重新醒过来。

对于一些安装在户外的设备,可以很直接的体现它的价值,比如运营商在荒郊野岭安装了好多基站,如果这里的基站停止工作了,就需要派人去这个基站手动重启了,有了看门狗以后,只要过一段时间没有喂狗,看门狗就将系统重启,节省了不少人力。

2. 看门狗的种类

看门狗主要分三种:

  • 内置在cpu内部的看门狗

    此类看门狗一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,并启动定时器。程序按时对定时器赋初值(或复位),以免它饿了。这种看门狗是可以被禁用的(只要停止这个定时器即可),好比对那只要咬你的狗来个“葵花点穴手”。大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。

    优点: 可以通过程序改变初始时间,也可以随时禁用
    缺点: 需要初始化,如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。

    浅析嵌入式系统之uboot详解(3)—看门狗
    从图中可以看出一下几点:
    1. 看门狗使用的输入时钟是PCLK,关于时钟的知识将在后面进行详细分析

    2. 看门狗的配置涉及到三个寄存器:控制寄存器(WTCON),数据寄存器(WTDAT),计数寄存器(WTCNT)

    3. 看门狗先将PCLK时钟进行预分频 (prescaler),分频的精度为0~255 (2的8次方-1 ,由WTCON的8-15位进行设置),预分频后再除以一个分频因子(division factor,由WTCON的4:3两位进行设置,一共有4中选择——16,32,64,128),有PCLK、prescaler和division factor三个变量以后,就可以计算出看门狗计数器递减时间间隔:

      浅析嵌入式系统之uboot详解(3)—看门狗
      所以刚上电时,PCKL的大小12MHz,WTCON[15:8]设置为74,除数因子选择16,通过上面公式可以计算出,看门狗控制器递减时间间隔0.1毫秒。将WTCNT里的值设置为0x2710(十进制10000),那么看门狗会每过一秒钟产生一次超时。

      我们来看看控制寄存器(WTCON),数据寄存器(WTDAT),计数寄存器(WTCNT)芯片手册:

      浅析嵌入式系统之uboot详解(3)—看门狗
      上图是WTDAT寄存器的芯片手册,默认值是0x800, 十进制是2048
      浅析嵌入式系统之uboot详解(3)—看门狗

      来源:?兔子的先森?

      声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月21日
下一篇 2021年10月21日

相关推荐