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

目录
相关文章
|
Linux
`grep`命令搜索当前目录及其子目录下的所有文件
`grep`命令搜索当前目录及其子目录下的所有文件
7330 1
|
6月前
|
存储 安全 数据库
使用 Docker 部署 Clawdbot(官方推荐方式)
Clawdbot 是一款开源、本地运行的个人AI助手,支持 WhatsApp、Telegram、Slack 等十余种通信渠道,兼容 macOS/iOS/Android,可渲染实时 Canvas 界面。本文提供基于 Docker Compose 的生产级部署指南,涵盖安全配置、持久化、备份、监控等关键运维实践(官方无预构建镜像,需源码本地构建)。
3552 7
|
存储 人工智能 自然语言处理
基于LLamaIndex构建企业级私有知识库:RAG Workflow工作流详解
【11月更文挑战第12天】随着生成式AI的快速发展,企业对智能化信息检索和生成的需求日益增加。传统的知识库系统往往局限于静态的数据存储和查询,难以满足复杂多变的业务需求。而检索增强生成(RAG, Retrieval-Augmented Generation)技术的出现,为企业级私有知识库的建设提供了新的解决方案。LLamaIndex作为专为LLMs(大型语言模型)设计的私有知识索引工具,结合RAG Workflow工作流,能够构建高效、智能的企业级私有知识库,满足企业对于知识管理和智能问答的多样化需求。
2615 4
|
数据可视化 数据挖掘 BI
基于烟草零售商订单数据的Quick BI体验报告
Quick BI旨在通过智能的数据分析和可视化能力帮助企业构建高效的分析系统。在我初步了解该产品后,发现它不仅支持创建美观的仪表板、复杂的电子表格以及动态大屏,还能够无缝集成到现有的业务流程中,极大地提升了工作效率。尤其对于需要频繁展示数据分析结果给管理层或客户的场景来说,Quick BI提供了一个便捷且专业的解决方案。
|
安全 API
获取百炼API-KEY
获取百炼API-KEY
|
SQL 关系型数据库 数据库
【一文搞懂PGSQL】4.逻辑备份和物理备份 pg_dump/ pg_basebackup
本文介绍了PostgreSQL数据库的备份与恢复方法,包括数据和归档日志的备份,以及使用`pg_dump`和`pg_basebackup`工具进行逻辑备份和物理备份的具体操作。通过示例展示了单库和单表的备份与恢复过程,并提供了错误处理方案。此外,还详细描述了如何利用物理备份工具进行数据损坏修复及特定时间点恢复(PITR)的操作步骤,以应对误操作导致的数据丢失问题。
|
缓存 Linux 编译器
Linux系统中u-boot启动流程分析(详解)
Linux系统中u-boot启动流程分析(详解)
2011 2
STM32:GPIO控制LED闪烁代码部分(内含配置图+代码+代码注释)
STM32:GPIO控制LED闪烁代码部分(内含配置图+代码+代码注释)
1298 0
STM32:GPIO控制LED闪烁代码部分(内含配置图+代码+代码注释)
|
存储 安全 芯片
内存卡无法格式化怎么办?这5个办法可以帮你
在日常生活中,我们常常使用内存卡来存储照片、视频、文档等重要数据。然而,有时候在尝试格式化内存卡时,我们可能会遇到无法格式化的问题。这种情况令人十分烦恼,因为这不仅影响了内存卡的使用,还可能导致数据丢失。那么,当内存卡无法格式化时,我们应该怎么办呢?本文将为您提供一些实用的解决方案,帮助您解决内存卡无法格式化的问题。
内存卡无法格式化怎么办?这5个办法可以帮你