I.MX6ull 看门狗

news2025/2/23 18:43:54

一、看门狗介绍

        WatchDog是为了能够防止程序跑飞而使用的一种硬件模块。如果你的程序没有跑飞,那么你的程序会 定时的去喂看门狗;如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会 自己生成一个信号来重新reset你的CPU,让程序重新开始。 这是一种在很重要的情况下防止系统跑飞的 一种方法。

二、I.MX6ull Watchdog Timer

        看门狗定时器(WDOG)通过提供一种方法来避免意外事件或编程错误,从
而防止系统故障

        一旦激活了WDOG,就必须由软件定期对其进行服务。如果不进行维修,
计时器将超时。超时时,WDOG向系统复位控制器(SRC)断言内部系统复位
信号WDOG_RESET_B_DEB

Clocks

        看门狗的时钟通常由系统时钟或专门的时钟电路提供。系统时钟是整个计算机系统或电子设备中用于同步各个部件工作的基准时钟信号,它可以为看门狗的时钟提供一个稳定的频率来源。在一些情况下,为了提高看门狗的独立性和可靠性,也会采用独立的时钟电路,如晶体振荡器,来专门为看门狗定时器提供时钟信号。

Timeout event

        WDOG提供0.5秒到128秒的超时周期,时间分辨率为0.5秒。
        用户可以通过写入看门狗控制寄存器(WDOG_WCR)中的WDOG超时字段 WT[7:0])来确定超时周期。必须通过设置看门狗控制寄存器 (WDOG_WCR)的WDE位来启用WDOG,超时计数器才能开始运行。
        启用 WDOG后,计数器被激活,加载超时值并从该编程值开始倒计时。计时器 将在计数器达到零并且WDOG输出系统复位信号时超时, WDOG_RESET_B_DEB并断言WDOG_B(WDT位应在看门狗控制寄存器 ()WDOG_WCR)中设置).
        但是,如果在计数器达到零之前执行服务例程(请参阅服务WDOG以重新 加载计数器),则可以通过使用新的超时值(WDOG_WCR的WT[7:0])重新加载计数器来防止超时条件。

Servicing WDOG to reload the counter

        要将超时值重新加载到计数器,正确的服务序列首先写入0x_5555,然后写入0x_AAAA到看门狗服务寄存器(WDOG_WSR)。两次写入之间可以执行 任意数量的指令。如果WDOG_WSR在写入0x_AAA之前,没有加载0x_5555到 WDOG_WSR ,则不会重新加载计数器。如果在写入0x_5555后,写了 0x_AAAA以外的任何值写入WDOG_WSR,则不会重新加载计数器。此服务序 列将使看门狗控制寄存器(WDOG_WCR)的超时值WT[7:0]重新加载计数 器。超时值可以在任何时候更改;当WDOG由内核提供服务时,它会被重 新加载。        

编程思路:

        设置复位信号产生后以冷启动方式复位
        关闭看门狗控制器
        设置看门狗定时器定时时间
        使能看门狗
        进行喂狗服务,重置看门狗定时器
        不喂狗看门狗定时器超时,产生复位信号,复位开发板

三,代码实现

#include "wdog.h"

void wdog_init()
{
    CCM->CCGR3 |= (0x3<<16);

    WDOG1->WCR &=~(0x1<<2);

    SRC->SCR &=~(0x1<<0);

    WDOG1->WCR &=~(0x1<<2);
    WDOG1->WCR &=~(0xff<<8);
    WDOG1->WCR |=(0x9<<8);
    WDOG1->WCR |=(0x1<<2);

}
void wdog_service()
{
    WDOG1->WSR = 0x5555;
    uart_printf("servering ...\r\n");
    WDOG1->WSR = 0xAAAA;

}
void wdog_test()
{
    wdog_init();
    int i;
    for(i=0;i<10;i++)
    {
        wdog_service();
        uart_printf("%3d",i);
        delay_s(1);
    }
}

        简单来说,看门狗就是一种保护机制,防止程序卡死或者跑飞的一种复位操作.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2299187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; 本次博客内容将聚焦于深度学习的相关知识与实践 &#x1f389;作者简介&#xff1a;⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。 &#x1f4dd;目前更新&#x…

一维差分算法篇:高效处理区间加减

那么在正式介绍我们的一维差分的原理前&#xff0c;我们先来看一下一维差分所应用的一个场景&#xff0c;那么假设我们现在有一个区间为[L,R]的一个数组&#xff0c;那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作&#xff…

【C++】基础入门(详解)

&#x1f31f; Hello&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…

【快速入门】Unity 常用组件(功能块)

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持&#xff01;&#x1f49c;&#x1f49c; 文章目录 Unity 常用组件&#xff08;功能块&#xff09;&#xff1a;Transform - 变换&#xff1a;坐标、朝向、大小Mesh Filter - 加载网格数据Mesh Renderer- 渲染网格Camera - …

Nessus 工具使用全攻略

目录 一、Nessus&#xff1a;网络安全的坚固防线 二、Nessus 安装指南 &#xff08;一&#xff09;获取安装包 &#xff08;二&#xff09;安装流程 三、初次配置&#xff1a;开启 Nessus 的第一步 &#xff08;一&#xff09;账号注册 &#xff08;二&#xff09;激活 …

PHP代驾系统小程序

&#x1f697; 代驾系统 —— 安全、便捷、智能的出行新选择 &#x1f527; 一款基于先进ThinkPHPUniapp技术架构&#xff0c;匠心独运的代驾软件横空出世&#xff0c;微信小程序端率先登场&#xff0c;为您的出行之旅增添前所未有的便捷与安全。它不仅是您贴心的出行助手&…

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识&#xff0c;并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具&#xff08;fping&#xff0c;…

【MySQL数据库】Ubuntu下的mysql

目录 1&#xff0c;安装mysql数据库 2&#xff0c;mysql默认安装路径 3&#xff0c;my.cnf配置文件? 4&#xff0c;mysql运用的相关指令及说明 5&#xff0c;数据库、表的备份和恢复 mysql是一套给我们提供数据存取的&#xff0c;更加有利于管理数据的服务的网络程序。下…

WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程

在当今数字化时代&#xff0c;音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者&#xff0c;正携手为智能硬件的音视频通讯注入强大动力&#xff0c;开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…

基于Ceedling的嵌入式软件单元测试

Ceedling 如果你使用 Ceedling&#xff08;一个针对 C 代码单元测试的构建管理器&#xff09;&#xff0c;可以更方便地管理测试。Ceedling 会自动处理 Unity 和 CMock 的集成&#xff0c;无需手动编写 Makefile。 1.环境搭建 1.1 Ruby环境 sudo apt-get install ruby1.2 安…

一文深入了解DeepSeek-R1:模型架构

本文深入探讨了 DeepSeek-R1 模型架构。让我们从输入到输出追踪 DeepSeek-R1 模型&#xff0c;以找到架构中的新发展和关键部分。DeepSeek-R1 基于 DeepSeek-V3-Base 模型架构。本文旨在涵盖其设计的所有重要方面。 &#x1f4dd; 1. 输入上下文长度 DeepSeek-R1的输入上下文长…

2024年终总结和2025年规划

2024年的主线是AI基础的学习和读书&#xff0c;虽然AI学习花费了更多的时间&#xff0c;但是读书长久看来于我是更重要的事情&#xff0c;哈哈哈&#xff0c;因此先简单回顾一下读书记忆&#xff0c;回顾我的2024&#xff0c;再展望一下我的2025. 我的2024年记忆 读万卷书&am…

5 .TCP传输 文件/数据

文件传输 本质:客户端通过标准IO或者文件IO&#xff0c;读取文件中的信息 然后将读取到的信息&#xff0c;通过套接字发送给服务器 服务器接收到后&#xff0c;立刻通过标准IO或者文件IO写到文件 这个过程&#xff0c;服务器要知道2件事 1&#xff1a;客户端发来的文件名字 …

哈希表(典型算法思想)—— OJ例题算法解析思路

目录 一、1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 问题描述 2. 核心思路 3. 代码实现思路 &#xff08;1&#xff09;初始化哈希表 &#xff08;2&#xff09;遍历数组 &#xff08;3&#xff09;返回结果 4. 时间复杂度分析 …

Next.js【详解】CSS 样式方案

全局样式 Global CSS 默认已创建&#xff0c;即 src\app\globals.css&#xff0c;可根据需要修改 默认在全局布局中导入 src\app\layout.tsx import "./globals.css";组件样式 CSS Modules 新建文件 src\app\test\styles.module.css .red {color: red;}导入目标页面…

HCIA项目实践--RIP相关原理知识面试问题总结回答

9.4 RIP 9.4.1 补充概念 什么是邻居&#xff1f; 邻居指的是在网络拓扑结构中与某一节点&#xff08;如路由器&#xff09;直接相连的其他节点。它们之间可以直接进行通信和数据交互&#xff0c;能互相交换路由信息等&#xff0c;以实现网络中的数据转发和路径选择等功能。&am…

无人机信号调制技术原理

一、调制技术的必要性 频谱搬移&#xff1a;将低频的基带信号搬移到高频的载波上&#xff0c;便于天线辐射和传播。 信道复用&#xff1a; 利用不同的载波频率或调制方式&#xff0c;实现多路信号同时传输&#xff0c;提高信道利用率。 抗干扰&#xff1a; 通过选择合适的调…

leetcode-495.提莫攻击

leetcode-495.提莫攻击 文章目录 leetcode-495.提莫攻击一.题目描述二.代码提交三.解释 一.题目描述 二.代码提交 #include <vector> using namespace std;int findPoisonedDuration(vector<int>& timeSeries, int duration) {int total 0;for (int i 0; i …

Django 创建表时 “__str__ ”方法的使用

在 Django 模型中&#xff0c;__str__ 方法是一个 Python 特殊方法&#xff08;也称为“魔术方法”&#xff09;&#xff0c;用于定义对象的字符串表示形式。它的作用是控制当对象被转换为字符串时&#xff0c;应该返回什么样的内容。 示例&#xff1a; 我在初学ModelForm时尝…

img标签的title和alt

img标签的title和alt 显示上 title:鼠标移入到图片上时候显示的内容&#xff1b; alt:图片无法加载时候显示的内容; <div class"box"><div><!-- title --><h3>title</h3><img src"./image/poster.jpg" title"这是封…