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. Ubuntu挂载samba共享目录

    Ubuntu中现在没有smbfs了,所以smbmount命令也用不了了,现在可以使用mount.cifs命令来挂载. Usage:  mount.cifs <remotetarget> & ...

  2. linux 的命令 -exec 的使用

    linux中的 exec命令,-exec 后面跟的是linux的 command 命令,exec命令以分号结束‘:’, 该分号前面要放 反斜杠转义 . find . -name jquery.js - ...

  3. MySQL中删除数据的两种方法

    转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...

  4. PHP快速入门 如何下载和安装

    1 从该网站下载 http://www.appservnetwork.com/ 2 双击安装,注意安装路径和安装组件 按下面的填写,端口不要和IIS冲突,字符编号为UTF-8 安装完成之后,注意安装文 ...

  5. vscode - 移动端适配(cssrem)

    建议使用Chrome浏览器. 1.第一步,安装扩展以及配置 2.第二步,使用(记得按一下↓)

  6. Ext.encode 与 Ext.decode .

    Ext.encode( Mixed o ) : String: json对象转换json字符串 Ext.decode( String json ) : Object: json字符串转换json对象 ...

  7. 【Django】TemplateDoesNotExist at /login/

    在Django项目中配置一个简单的页面跳转 说明 OliverPro 为项目名称 ProApp 为应用程序 项目文件结构如下: 文件配置如下: 项目中的urls 应用程序urls views.py文件 ...

  8. Appium(JAVA)Windows 7系统搭建及示例运行

    Appium(JAVA)Windows 7系统搭建及示例运行 分类: Appium 2014-11-14 17:44 4323人阅读 评论(2) 收藏 举报 1.搭建Android环境 http:// ...

  9. 定制ADempiere(1)- 会议记录

    本文是<ADempiere 3.6 Cookbook>一书的实例笔记,详细内容请查阅该书完整内容. 1. 登录pgAdmin III,创建表c_mom: CREATE TABLE adem ...

  10. 【微信公众号】微信关于网页授权access_token和普通access_token的区别及两种不同方式授权

    微信官网网址:https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E9.99.84.EF.BC.9A.E6. ...