[WDT]内部看门狗和外部看门狗
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]内部看门狗和外部看门狗的更多相关文章
- STM32之独立看门狗与窗口看门狗总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- stm8的独立看门狗与窗口看门狗
STM8拥有两个硬件看门狗,分别叫做独立看门狗和窗口看门狗 独立看门狗的框图如下 我们可以看到,独立看门狗的时钟来自于LSI内部低速振荡器,经过二分频到达看门狗外设单元,在经过一个七位的预分频到达计数 ...
- STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料: ...
- STM8S103之独立看门狗和窗口看门狗
独立看门狗时钟来源为LSI:窗口看门狗时钟来源为CPU: 窗口看门狗窗口的含义是:喂狗必须在一定的窗口期内完成,不能过早也不能过晚. 总结:防止程序复位,用独立看门狗. 独立看门狗使用的流程:参见库函 ...
- 普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎。。。。。 测试。。测试。。。没刷过微博。屯里来的。看看啥效果
普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎..... 测试..测试...没刷过微博.屯里来的.看看啥效果
- Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问
类似于Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问,也可以隔绝外部黑客的入侵等.直接暴露外部是非常不安全的,特别是没有什么安全验证,容易被别人入侵做一些非法的事情! 所以,希望 ...
- NESTED内部事务异常会回滚 外部事务不会回滚 ;内部事务没有异常,外部事务有异常 则整体事务都回滚
NESTED内部事务异常会回滚 外部事务不会回滚 :内部事务没有异常,外部事务有异常 则整体事务都回滚
- centos linux安装telnet 过程及问题(源于内部tomcat网站,外部无法访问)
首先本地没有telnet客户端及服务器 root权限下安装 yum install telnet yum install telnet-server vi /etc/xinetd.d/telnet 这 ...
- Swift - 28 - 内部参数名和外部参数名
//: Playground - noun: a place where people can play import UIKit // 外部参数的作用是为了让程序员调用代码的时候能清晰的看出所传参数 ...
随机推荐
- HTML-Html开发之Viewport的使用
近年来随着移动端的快速发展,越来越多传统的web应用需要适配移动终端,下面记录一下如何通过viewport实现简单的不同型号的手机端的适配问题.不过在此之前,介绍一下如何通过Chrome浏览器,调试在 ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
- 从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?
这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { pub ...
- C++ 11 - STL - 函数对象(Function Object) (中)
我们再来看一个复杂的例子 需求: 我们需要对集合内每个元素加上一个特定的值 代码如下: AddInt.h class AddInt { private: int theValue; // the va ...
- 本地计算机上的OracleOraDb11g_home2TNSListener服务启动又停止了。一些服务自动停止,如果他们没有什么可做的 .
一.问题 本地计算机上的OracleOraDb10g_home1TNSListener 服务启动又停止了 二.问题描述 Oracle:本地计算机上的OracleOraDb10g_home1TNSLis ...
- function(window, undefined)的意义
var num = 10000 for (var i = 0; i++; i < num) { eval("pp" + i + "=" + i); } ( ...
- Xcode 打包 ipa 包
原地址:http://zengwu3915.blog.163.com/blog/static/27834897201362831449893/ 上次介绍了木有证书的打包ipa.如果安装证书后,我们还有 ...
- 转 SqlServer中如何实现自动备份数据!
第1种方法: 企业管理器 --管理 --右键数据库维护计划 --新建维护计划 --<下一步> --选择你要备份的数据库 --<下一步>直到"指定数据库备份 ...
- javascript设计模式:构造器模式学习一
javascript 设计模式1.简介javascript是一种弱类型语言,不过类可以通过函数模拟出来最常见的实现方法如下:function Car(model){ this.model = mode ...
- 利用optparse模块解析指令的字符串
optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 使用方法: 生成OptionParser对象,为对象添加option,用parse_args方法解析文字 具体实 ...