Watchdog是什么?为什么要在系统初始化时候关闭什么是 watchdog?

简介: Watchdog是什么?为什么要在系统初始化时候关闭什么是 watchdog?

前言

关于 Uboot 初始化阶段,在 start.S 中,为何要去关闭 watchdog,下面解释具体的原因:

1、什么是 watchdog

watchdog 一般是一个硬件模块,其作用是,在嵌入式操作系统中,很多应用情况是系统长期运行且无人看守,所以难免或者怕万一出现系统死机,那就杯具了,这时,watchdog 就会自动帮你重启系统。

那么其是如何实现此功能的呢?那么就要简单解释一下其实现原理了。

watchdog 硬件的逻辑就是,其硬件上有个记录超时功能,然后要求用户需要每隔一段时间(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗称“喂狗”,那么我发现超时了,即过了这么长时间你还不给偶喂食,那么偶就认为你系统是死机了,出问题了,偶就帮你重启系统。说白了就是弄个看家狗 dog,你要定期给其喂食,如果超时不喂食,那么狗就认为你,他的主人,你的系统,死机了,就帮你 reset 重启系统。

1。概述:

WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,WATCHDOG能够让系统重启。WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。

2。WATCHDOG模块

在比较高档的嵌入式硬件。片虫:都有一个.WATCHDOG模块.如果在MCUMPU史没有集成WATCHDOG,一般会在此嵌入式系统中加一个专门的 WATCHDOG芯片来实现WATCHDOG机制。此模块主要的功能包括:

  • 1 提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。
  • 2 提供一接口,使应用软件能够定时给WATCHDOG“喂狗”。
  • 3 提供WATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。

3。WATCHDOG的实现方式:

对于WATCHDOG模块的实现,不同的硬件芯片有不同的方式,这里介绍2中工作方式:

1 利用系统操作系统时钟来实现WATCHDOG

在Intel XScale系列中,利用了操作系统时钟的比较寄存器3(OSMR3)做为WATCHDOG的运行主体,当系统的WATCHDOG激活后,软件就必须在一定时间内从OSMR3读出当前的计数,然后加上一定的计数值(下一次到期的计数值),再写回到OSMR3中,软件一直周期性的重复这个过程,如果软件没有重新写入新的计数使定时器到期,此OSMR3会利用一个GPIO触发系统复位。

2 芯片的专门WATCHDOG模块

对于现在的很多芯片,已经集成了专门的WATCHDOG模块,比如 ARMl1的芯片,WATCHDOG模块中,提供了比较灵活的配置和控制机制:

  • A。宽范围设置过期时间间隔,从0.5秒到128秒可以用户配置
  • B。可以灵活配置在低功耗下,使用或者停止WATCHDOG功能
  • C。可以灵活配置在DEBUG等状态下,使用或者停止WATCHDOG 功能

根据不同的系统,设置好相应的寄存器,激活WATCHDOG后,需要应用程序周期性的服务WATCHDOG,即我们所说的“喂狗”,对于WATCHDOG模块,需要定时向Watchdog ServiceRegister按顺序写入0x5555,0xaaaa.一般在WATCHDOG模块中还会提供Watchdog ResetStatus Register,从中可以找到复位的具体原因。

3。单片机的WATCHDOG实现

许多单片机片内自带看门狗电路,单片机复位时将片内自带看门狗电路禁止,只有当程序访问该电路时,电路启动。如51系列单片机对SFR中的0A6H地址顺序写入#01EH、#0E1H;而96系列单片机则对SFR中的0A6H地址顺序写入#1EH、#0E1H;工控主机板上看门狗电路本身并不要求复位后重新启动,但BIOS在复位后将板上看门狗禁止,启动和喂狗方法与单片机相同。如研祥的FSC-1713主板,在WatchDog编程状态,只要执行如下两条指令:

outportb(Ox2e,0xf6);
outportb(Ox2f,TIME-OUT-VALUE);

可实现WatchDog 的启停,其中TIME-OUT-VALUE0启动; TIME-OUT-VALUE=0停止[2]。能够用指令禁止看门狗是为了适应用户程序开发阶段的需要,这同时给看门狗启动和运行失败留下了后门,在看门狗启动时或启动前遇干扰而使程序跑飞,则看门狗启动失败,无法行使监控职能。

4。结论

WATCHDOG在嵌入式系统中发挥着非常重要的作用,其实现方式也千差万别,根据不同的硬件设计,可以选用不同的WATCHDOG,但它们的作用是一样的:保证系统在出现不可恢复错误时,能够自动让系统重启。

2、为何在要系统初始化的时候关闭 watchdog

了解了watchdog的原理后,此问题就很容易理解了。

如果不禁用watchdog,那么就要单独写程序去定期“喂狗”,那多麻烦,多无聊啊。

毕竟咱此处只是去用uboot初始化必要的硬件资源和系统资源而已,完全用不到这个watchdog的机制。 需要用到,那也是你linux内核跑起来了,是你系统关心的事情,和我uboot没啥关系的,所以肯定此处要去关闭watchdog(的reset功能)了。(不错不错前辈优秀)

参考链接

https://wenku.baidu.com/view/e5cd52ff04a1b0717fd5dd27.html?wkts=1676475803755

目录
相关文章
|
9月前
|
存储 安全 数据库
使用 Docker 部署 Clawdbot(官方推荐方式)
Clawdbot 是一款开源、本地运行的个人AI助手,支持 WhatsApp、Telegram、Slack 等十余种通信渠道,兼容 macOS/iOS/Android,可渲染实时 Canvas 界面。本文提供基于 Docker Compose 的生产级部署指南,涵盖安全配置、持久化、备份、监控等关键运维实践(官方无预构建镜像,需源码本地构建)。
3703 7
|
Linux Go SoC
关于S3学习所涉及到的知识(二):Linux设备驱动suspend/resume的顺序
关于S3学习所涉及到的知识(二):Linux设备驱动suspend/resume的顺序
1403 0
|
Shell Linux Android开发
【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
2971 0
|
域名解析 JSON API
【干货满满】如何处理requests库调用API接口时的异常情况
在调用 API 时,网络波动、服务器错误、参数异常等情况难以避免。本文提供一套系统化的异常处理方案,涵盖 requests 库常见异常类型、处理策略、实战代码与最佳实践,通过分类处理、重试机制与兜底策略,提升接口调用的稳定性与可靠性。
|
传感器 编解码 数据挖掘
ASTER 全球数字高程模型 V003
ASTER全球数字高程模型V003(ASTGTM)由NASA与日本METI合作生成,覆盖北纬83°至南纬83°,空间分辨率约30米。基于2000–2013年ASTER立体影像自动处理,融合超188万场景,优化水体与地形精度,提供DEM与场景数量图层,数据无显著空隙,适用于多领域地形分析。
776 7
|
安全 API
获取百炼API-KEY
获取百炼API-KEY
|
数据可视化 数据挖掘 BI
基于烟草零售商订单数据的Quick BI体验报告
Quick BI旨在通过智能的数据分析和可视化能力帮助企业构建高效的分析系统。在我初步了解该产品后,发现它不仅支持创建美观的仪表板、复杂的电子表格以及动态大屏,还能够无缝集成到现有的业务流程中,极大地提升了工作效率。尤其对于需要频繁展示数据分析结果给管理层或客户的场景来说,Quick BI提供了一个便捷且专业的解决方案。
|
弹性计算 对象存储 CDN
2023年阿里云流量计费标准价格表
2023年阿里云流量计费标准价格表,阿里云服务器公网带宽计费模式按固定带宽和按使用流量哪个划算?阿里云百科以北京地域为例,按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些
6417 0
2023年阿里云流量计费标准价格表
|
存储 安全 芯片
内存卡无法格式化怎么办?这5个办法可以帮你
在日常生活中,我们常常使用内存卡来存储照片、视频、文档等重要数据。然而,有时候在尝试格式化内存卡时,我们可能会遇到无法格式化的问题。这种情况令人十分烦恼,因为这不仅影响了内存卡的使用,还可能导致数据丢失。那么,当内存卡无法格式化时,我们应该怎么办呢?本文将为您提供一些实用的解决方案,帮助您解决内存卡无法格式化的问题。
内存卡无法格式化怎么办?这5个办法可以帮你
|
Linux

热门文章

最新文章