1. 芯片内部看门狗

内部看门狗通常为芯片内部某个特殊定时器,用户可以通过手动初始化、设置timeout、使能、失能该看门狗,然后在线程中定时去喂狗,从而达到检测应用程序跑飞、跑死的情况。

在Linux系统中,可以在uboot中打开看么狗,把喂狗时间设置长度超过kernel启动时间,从而当kernel正常启动后,喂狗任务由uboot交给了应用程序,这样达到了监控kernel启动bootsup和应用程序的双重功效。

2. 芯片外部看门狗

外部看门狗具有独立性,可以更加安全的确保芯片的正常运行。

外部看门狗如何工作?

外部看门狗非常简单,没有所谓的初始化、使能等等,就是电源、地、WDI喂狗引脚、RESET引脚,当WDI每次检测到边沿跳变,则重新置位看门狗计数,如果在超出timeout,则拉低RESET引脚一段时间,周而复始。

那外部看门狗的使用也带来一些问题:

  • 在超长启动时间的系统中,如何确保外部看门狗的喂狗

    • 在Uboot中将内部看门狗设置1~3min喂狗时间以确保kernel启动过程出现问题,在系统启动完成后,重新交由应用程序喂狗,且喂狗周期根据线程时长决定
    • 不做特殊喂狗处理,uboot命令行期间将会出现看门狗超时
    • 外部看门狗,则可以在硬件电路中将具有pwm功能的IO口接至WDI引脚,在uboot中使能IO口的pwm功能,在kernel加载驱动期间,可以不再对此IO进行操作,也可以重新再kernel中使能该IO脚的PWM功能,但是必须在驱动probe阶段,如果交由应用程序,中间时间可能无法喂狗,导致重启。
  • 在ICT、FCT、程序烧录阶段中,如何确保这些动作不被外部看门狗打断,循环复位

解决思路

在电路设计中,针对第二个问题,可以设计电路的JTAG中Reset的优先级最高,当Jtag插上,程序不运行,Reset也就失效了。

增加跳线,在生产阶段,将跳线跳开,完毕后,将跳线跳上,但是此法增加Factory阶段的复杂度。

ISP:In-system programing 在线系统编程; IAP: In-application programing 在应用编程; ICP: In-circuit programing 在电路编程。ISP和IAP都是在板进行编程,也就是不用拆除芯片。ISP的意思就是应用程序本身有和PC上位机之间的接口,当上位机有更新程序的需求时,应用程序会进入更新程序的逻辑,知道更新结束。而IAP则是BootLoader+Application的结构,在Boot阶段,如果接收到上位机的更新需求,则进行更新,更新结束跳到application。

Warm Reset:

Code Reset:

[WDT]内部看门狗和外部看门狗的更多相关文章

  1. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  2. stm8的独立看门狗与窗口看门狗

    STM8拥有两个硬件看门狗,分别叫做独立看门狗和窗口看门狗 独立看门狗的框图如下 我们可以看到,独立看门狗的时钟来自于LSI内部低速振荡器,经过二分频到达看门狗外设单元,在经过一个七位的预分频到达计数 ...

  3. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

  4. STM8S103之独立看门狗和窗口看门狗

    独立看门狗时钟来源为LSI:窗口看门狗时钟来源为CPU: 窗口看门狗窗口的含义是:喂狗必须在一定的窗口期内完成,不能过早也不能过晚. 总结:防止程序复位,用独立看门狗. 独立看门狗使用的流程:参见库函 ...

  5. 普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎。。。。。 测试。。测试。。。没刷过微博。屯里来的。看看啥效果

    普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎..... 测试..测试...没刷过微博.屯里来的.看看啥效果

  6. Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问

    类似于Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问,也可以隔绝外部黑客的入侵等.直接暴露外部是非常不安全的,特别是没有什么安全验证,容易被别人入侵做一些非法的事情! 所以,希望 ...

  7. NESTED内部事务异常会回滚 外部事务不会回滚 ;内部事务没有异常,外部事务有异常 则整体事务都回滚

    NESTED内部事务异常会回滚 外部事务不会回滚 :内部事务没有异常,外部事务有异常 则整体事务都回滚

  8. centos linux安装telnet 过程及问题(源于内部tomcat网站,外部无法访问)

    首先本地没有telnet客户端及服务器 root权限下安装 yum install telnet yum install telnet-server vi /etc/xinetd.d/telnet 这 ...

  9. Swift - 28 - 内部参数名和外部参数名

    //: Playground - noun: a place where people can play import UIKit // 外部参数的作用是为了让程序员调用代码的时候能清晰的看出所传参数 ...

随机推荐

  1. 走进C++程序世界------异常处理

    一. 概述 C++自身有着很强的纠错能力,发展到现在,已经建立了比較完好的异常处理机制. C++的异常情况无非两种,一种是语法错误.即程序中出现了错误的语句,函数.结构和类,致使编译程序无法进行.还有 ...

  2. STL - 算法 - 普通拷贝

    list<, , , , , , , , }; vector<int> coll2; cout << "** collection 1: **" &l ...

  3. mysql基础知识之-数据库的创建、查看等常用操作

    命令创建mysql数据库: 先启动mysql数据库,连接数据库: mysql -uroot -p123456         (语法:mysql -u登录名 -p密码) 创建表: create dat ...

  4. FastDFS简易概括

    FastDFS是一个文件系统,可以部署在Linux上. 该文件系统具备高可用和负载均衡特性,还可以动态扩充容量. 此文件系统有两个服务组成:跟踪服务和存储服务,也就是说你必须部署了这两种服务,这个文件 ...

  5. js处理url

    需求:用js获得url的电话号码和状态 针对url地址:http://www.deikang.com/index.php?tel=15811296111&status=1&id=100 ...

  6. webqq协议分析之~~~~验证是否需要验证码

    对于小黄鸡我想大家(喜欢在群里bb的人...)肯定一点都不陌生,那段时间大家在群里对小鸡是各种调戏啊,都有点不忍直视.那时我便想能不能自己也做个呢,后来想想还是算了吧,自己技术太渣渣,然后就不了了之. ...

  7. C#:DataGridView控件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  8. Oracle开发者守则

    下面为Oracle大师级语录: Oracle Database developers should follow is to do everything they can in SQL. What t ...

  9. windows上通过secureCRT和putty创建密钥登录

    前面介绍了linux的ssh远程登录协议和ssh无password登录方式.这里在windows下通过secureCRT和putty登录linux来看一下详细的密钥创建,配置和登录.也算做个备忘录吧. ...

  10. IntelliJ IDEA 学习(一):IntelliJ IDEA15 破解方法(已验证)

    新的破解方法: 1.进到文件夹中:C:\Windows\System32\drivers\etc ,找到hosts文件,用记事本编辑 2.如果没有找到hosts文件,可在查看设置中勾选“显示隐藏的项目 ...