s3c2410 watchdog详解

watchdog 分析 本文分析s3c2410-s3c watchdog linux驱动。 如图, S3C2440的Watchdog模块提供了三个寄存器来对Watchdog进行操作,他们分别是:定时器控制寄存器WTCON、定时器数据寄存器WTDAT和定时器计数寄存器WTCNT。注意:在对定时器数据寄存器WTDAT进行操作时必须在定时器控制寄存器WTCON使能之前写入一个计数目标值,当Watchdog使能 阅读详情

1.什么是watchdog?
watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时 (Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows Timer的作用与方才所讨论的定时器在功能上是相同的,只是windows Timer属于软件定时器,当windows Timer记时超时则引起App向System发送一条消息从而触发某个事件的发生。我们从以上的描述可知不论软件定时器或硬件定时器他们的作用都是在某 个时间点上引起一个事件的发生,对于硬件定时器来说这个事件可能是通过中断的形式得以表现,对于软件定时器,这个事件则可以是以系统消息的形式得以表现。 正如本文开头所讲的,watchdog本质上是一种定时器,那么普通定时器所拥有的特征它也应该具备,是的,当它记时超时时也会引起事件的发生,只是这个 事件除了可以是系统中断外,它也可以是一个系统重起信号(Reset Signal),可以这么说吧,能发送系统重起信号的定时器我们就叫它watchdog.

2.watchdog的工作描述
当一个硬件系统开启了watchdog 功能,那么运行在这个硬件系统之上的软件必须在规定的时间间隔内向watchdog发送一个信号.这个行为简称为"喂狗"(feed dog),以免watchdog记时超时引发系统重起。

3.watchdog存在的意义是什么?
你可能会问watchdog存在的意义是什么?开启了watchdog之后软件必须定时向它发信息,这不是麻烦又耗费资源的行为吗?其实这个行为很重要, 这个行为是软件向硬件报告自身运行状态的一中手法。一个软件运行良好,那么它应该可以在规定的时间间隔内向watchdog发送信息,这等同于软件每隔一 段时间就告诉硬件:“嘿,哥们,我在好好的跑着呢,你放心吧。”,若软件由于某个不当的操作而进入死循环(也就是俗称的死机),则他无法向 watchdog发送信息了,watchdog将发生记时超时,从而引起硬件重起。如果没有watchdog的存在,程序已经死掉了,但我们的用户还一头 雾水,以为系统正在进行大规模的运算而进行耐心的等待。。。这一等可就是天荒地老啊。。。-_-!!

4.s3c2410 watchdog的操作
对于s3c2410的watchdog来说,PCLK是它唯一的时钟信号源。(不知道PCLK的朋友可以上网搜搜或看我下一篇文章)
s3c2410用了3个寄存器对watchdog进行操作,3个寄存器分别为:WTCON,WTDAT,WTCNT。
WTCON:watchdog控制寄存器
WTDAT:watchdog数据寄存器
WTCNT:watchdog记数寄存器
以上各个寄存器的详细信息请参考s3c2410数据手册上关于watchdog部分

5.s3c2410 watchdog 工作描述 :
在开启watchdog之前,我们必需在寄存器WTDAT里面存有一个值,在watchdog开启之后这个值会被自动加载进寄存器WTCNT中,WTCNT的作用将在下面进行讲解,现在你只需要知道WTDAT必须有一个值,这个值将被自动装进WTCNT中(注1 )

Watchdog根据PCLK,Prescaler Value,Clock Select会产生一个watchdog自己的工作周期,我们把这个工作周期记为t_watchdog(注2 ),watchdog在一个 t_watchdog周期结束时会产生一个记数递减信号,每当这个信号产生时,WTCNT中的值便减1,若在WTCNT递减为0(Timer Out)的时候软件层还没有重新往WTCNT中写入数值(这个行为便是我上文提到的喂狗),则watchdog触发Reset Signal,系统重起。
根据上述的描述,我们可以更形象地描述watchdog的工作原理和3个寄存器之间的相互关系:

WTCNT通过WTDAT得到一个值,watchdog在每个t_watchdog周期里向WTCNT发送一个递减信号,当WTCNT的值递减到0的时候则发生time out,重而重起系统。

下面我帖出一段设置watchdog并开启watchdog的程序

代码
  1. void  enable_watchdog()   
  2. {   
  3.               rWTCON=0x7F81;   
  4.               rWTDAT=0x8000;   
  5.               rWTCON|=1<<5;   
  6. }  

rWTCON,rWTDAT分别为寄存器WTCON,WTDAT的地址解引用,我如下定义他们

#define        rWTCON                (*(volatile unsigned int *)0x53000000)
#define        rWTDAT                (*(volatile unsigned int *)0x53000004)

从上面的设置我们可知寄存器WTCON的值为0x7F81,分解出来得:

Prescaler Value               =255
Division_factor                =16(Clock Select=16)
Interrupt Generation       =0(不产生中断)
Reset                            =1(开启Reset Signal)

第4行设置寄存器WTDAT的值为0x8000。
第5行开启watchdog

当调用上面的函数之后,你的系统已经开启了watchdog,所以你必须在WTCNT中的值递减到0之前重新往该寄存器写入一个非0值(feed dog),否则将引起系统重起,以下是feed_dog函数

void feed_dog()
{
        rWTCNT=0x8000;
}

下面是void enable_watchdog()和feed_dog()配合使用的一个例子

void main()
{
        init_system();
        .
        ...
        .....
        enable_watchdog();
        .
        ...
        .....
        while(1)
        {
                feed_dog();         
        }
}
在这个例子中我假设了main函数是系统的主函数,在做完一系列系统初始化之后enable_watchdog()函数被调用,此时watchdog被启 动,下面的while循环则是不断的进行feed_dog,使系统不发生重起。当然在实际应用中不可能采取这种架构来对watchdog进行操作,一般来 说feed_dog函数的调用是被安插在定时器的中断服务例程中,当然,定时器的time out(注意是定时器的time out,不是watchdog的 time out)时间长度必须合适,否则在定时器还没来得及发生中断调用feed_dog函数之前,watchdog已经time out了,那也将引起系统重起.

注1:事实上,WTDAT和WTCNT这两个寄存器在系统上电之后会被硬件自动的填入两个初始值0x8000,开启watchdog之后,WTCNT并没有马上就把WTDAT中的值装入,而是使用初始值0x8000。在发生第一次time out之后,WTDAT寄存器中的值才会被真正的装载进WTCNT寄存器中。

注2:t_watchdog可根据公式对其进行计算:
t_watchdog= 1/ (PCLK / (Prescaler value + 1) / Division_factor)
Prescaler Value位于寄存器WTCON的8至15位,其值为0~255
Division_factor由寄存器WTCON中的3~4位(Clock Select)决定,其值可以为00,01,10,11分别代表Division_factor的值为16,32,64,128

关于各个寄存器的详细信息请参考s3c2410的操作手册

CLOCK WATCHDOG TIMEOUT错误及其解决方法 CLOCK WATCHDOG TIMEOUT错误是一个常见的计算机错误,它通常与多核处理器系统中的处理器负载、处理器故障、过热和驱动程序问题有关。通过降低处理器负载、确保处理器稳定和检查驱动程序,可以尝试解决这个错误。本文提供了一些可能的解决方法,并提供了一个使用Python编写的简单多线程示例代码来测试处理器的稳定性。请注意,在进行任何更改或尝试解决方法之前,务必备份重要数据并小心测试您的系统,以避免可能的问题。请注意,在运行此示例代码之前,请确保您已备份重要数据,并仔细测试您的系统,以避免潜在的问题。 阅读详情

相关推荐

Dark-Souls-III-Cheat-Engine-Guide, 最新CE表和黑暗灵魂指南 3.zip

Dark-Souls-III-Cheat-Engine-Guide, 最新CE表和黑暗灵魂指南 3 黑暗灵魂III欺骗引擎指南简介本文灵感来自暗黑灵魂II和第一个Sin作弊引擎指南来自 Atvaark的Scholar 。你可以随意访问一般的暗黑灵魂 3作弊引擎不协调的大档案。常规作弊引擎我们建议你使用作弊引擎 6.6 。 p

ARM S3C2410 看门狗设置原理及源码

s3c2410 watchdog的操作  对于s3c2410的watchdog来说,PCLK是它唯一的时钟信号源。  s3c2410用了3个寄存器对watchdog进行操作,3个寄存器分别为:WTCON,WTDAT,WTCNT。 WTCON:watchdog控制寄存器  WTDAT:watchdog数据寄存器  WTCNT:watchdog记数寄存器  Watchd

三言两语 2919

黑暗的灵魂,我的母亲皈依。「Dark Souls To My Mom Conversion」-crx插件

用“我妈妈”来代替“黑暗灵魂” 嗨,这个应用程序将“黑暗的灵魂”更改为“我的妈妈” 支持语言:English (United States)

Watchdog机制以及问题分析-学习记录

Android中Watchdog用来看护system_server进程,system_server进程运行着系统最终要的服务,譬如AMS、PKMS、WMS等, 当这些服务不能正常运转时,Watchdog可能会杀掉system_server,让系统重启。Watchdog的实现利用了锁和消息队列机制。当system_server发生死锁或消息队列一直处于忙碌状态时,则认为系统已经没有响应了(System Not Responding)。

探索未知,成就非凡 2053

Dark-Souls-3-PvP-Watchdog:Dark-Souls-3-PvP看门狗

黑暗之魂3 PvP看门狗 此mod已过时。 不要使用它,也不要期望自己做任何进一步的更新(TheSpicyChef)。 我的兴趣已经从开发反作弊工具转移了,我将工作重心放在了我认为将使社区受益的其他领域。 我强烈建议任何以任何身份在线玩Dark Dark Souls 3的人都可以使用Blue Sentinel,因为LukeYui编写了比Watchdog强大得多,功能更强大的工具。

接入 deepseek 实现AI智能问诊

必须包含user角色,用于传递用户输入。system角色可选,用于设置对话背景。多轮对话需要将历史记录添加到messages中。

weixin_51326478的博客 6541

S3C3440看门狗驱动程序

S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的情况下,使计算机重新启动 由于计算机在工作时不可避免的受到各种各样的因素干扰,即使再优秀的计算机程序也可能因为这种干扰使计算机进入一个死循环,更严重的就是导致死机。 有两种办法来处理这种情况

zhanjianshinian的专栏 1445

ALTERA Triple-Speed Ethernet IP核在UDP通信中的实战配置指南

本文详细介绍了在Intel FPGA(原ALTERA)平台上配置Triple-Speed Ethernet IP核以实现UDP通信的实战指南。内容涵盖从IP核选型、QSYS系统搭建、关键参数配置,到UDP数据包组装、NIOS C程序调试及上板验证的全流程,重点解析了如何利用该IP核快速构建稳定的千兆网通信基础,为FPGA网络应用开发提供清晰路径。

m3n5b7v8c9x的博客 512

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

watchdog 一般是一个硬件模块,其作用是,在嵌入式操作系统中,很多应用情况是系统长期运行且无人看守,所以难免或者怕万一出现系统死机,那就杯具了,这时,watchdog 就会自动帮你重启系统。那么其是如何实现此功能的呢?那么就要简单解释一下其实现原理了。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 6322

最新版谷歌浏览器Axure插件(免翻墙)

本文介绍了在Chrome浏览器无法直接打开Axure导出HTML文件的解决方法。由于国内网络限制无法访问Chrome商店,需手动下载安装AxureRP扩展插件(提供百度网盘下载链接)。安装步骤包括:1)启用开发者模式;2)拖拽CRX文件或加载解压文件夹;3)勾选"允许访问文件网址"。同时还提示若浏览器版本过低可能无法正常运行,并给出了浏览器升级方法。该教程详细说明了从插件安装到浏览器升级的完整解决方案。

OldCat先生 2973

八路抢答器____一个作品的制作思路

学习了解到一个产品制作完全由一个人去采购,设计,仿真,画PCB。不光是需求的分析还有实现功能时如何搭建电路,和给出一个简单高效的设计方法也是至关重要的。

weixin_73690807的博客 1522

s3c2410 watch dog

1.什么是watchdog?  watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时 (Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows Timer的作用

wbgxx的专栏 700

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 363

s3c2410 之watchdog

1.什么是watchdog?watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时 (Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows Timer的作用与方才

670

第一讲:halcon模板匹配捆绑测量矩形检测芯片针脚

使用halcon模板匹配捆绑测量矩形,检测位置发生变换的芯片针脚缺陷。

uiopmn1的博客 2995

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2024

linux驱动 看门狗

drivers\watchdog\s3c2410_wdt.c 2.6.24内核自带的驱动,需要在平台资源中配置好相关配置。 platform驱动+misc驱动 /* linux/drivers/char/watchdog/s3c2410_wdt.c * * Copyright (c) 2004 Simtec Electronics * Ben Dooks * * S3C

wuye110的专栏 967

5大步骤!轻松玩转Dorisoy.Rigger:基于.NET Core 6、MAUI和Blazor的多数据库开发框架生成器

各位小伙伴,你们是否厌倦了每次项目启动都要从头配置数据库连接、编写重复的代码?今天,我们就来聊聊如何使用Dorisoy.Rigger这个强大的开发框架生成器,让你的.NET Core 6、MAUI和Blazor项目开发变得简单又高效!准备好迎接开发的新乐趣了吗?让我们一起开始吧!接下来,我们需要定义数据模型。假设我们有一个简单的用户表,包含ID、用户名和密码字段。在项目中创建一个新的类文件,命名为User.csset;set;set;这段代码定义了一个用户模型,其中包含了用户的ID、用户名和密码。

java专栏 1738

s3c2410--watchdog

注:此文章转载自网络 1. 什么是watchdog?watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时 (Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer...

dianmotang8246的博客 144

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

S3C2410系统时钟和定时器

主机环境:UBUNTU10.04LTS+arm-linux-gcc 2.95.3 开发板环境:EdukitIII实验箱+s3c2410子板 问题描述:首先初始化S3C2410系统时钟,然后通过定时器中断来控制LED的点亮、熄灭情况 【1.系统时钟硬件原理】 EdukitIII实验箱上一共有两个时钟,都是通过外接晶振实现,一个是实时时钟RTC,主要为系统计时使用,其晶振X1...

ROF 1529

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

s3c2410_wdt.c

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef S3C_VA_WATCHDOG #define S3C_VA_WATCHDOG (0) #inclu

shangyaowei的专栏 509

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

看门狗watchdog的理解

  1.什么是watchdog?watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时(Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows 

dadalan的专栏 1万+

S3C2440驱动篇—看门狗驱动分析

S3C2440看门狗驱动代码分析,内核Linux-2.6.32.2

Zechin的专栏 1589

Linux查看watchdog超时信息,Linux驱动学习之:WDT(watchdog)驱动

/* linux/drivers/char/watchdog/s3c2410_wdt.c** Copyright (c) 2004 Simtec Electronics* Ben Dooks ** S3C2410 Watchdog Timer Support** Based on, softdog.c by Alan Cox,*(c) Copyright 1996 Alan Cox ** Thi...

weixin_39781326的博客 921
上一篇: FCLK PCLK HCLK
下一篇: SWI 软中断详解
vrix
博客等级 码龄24年 673粉丝 167原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值