图解AUTOSAR_CP_WatchdogDriver
AUTOSAR WatchdogDriver模块详解
目录
- 1. 模块概述
- 2. 架构位置
- 2.1. 组件架构
- 3. 主要功能
- 4. API接口
- 5. 配置参数
- 5.1. 配置模型
- 6. 错误代码
- 7. 状态管理
- 7.1. 状态机
- 8. 处理流程
- 8.1. 活动流程
- 9. 操作序列
- 9.1. 典型操作序列
- 10. 硬件抽象
- 11. 安全考虑
- 12. 与其他模块的关系
1. 模块概述
WatchdogDriver (Wdg) 是AUTOSAR标准中的一个MCAL层模块,负责管理和控制微控制器的看门狗硬件。看门狗是一种安全机制,用于在软件异常时重置系统,确保系统能够从故障状态恢复。
2. 架构位置
- 层级:MCAL (微控制器抽象层)
- 上层接口:通过WdgIf (看门狗接口) 与上层模块通信
- 主要调用者:WdgM (看门狗管理器)
- 依赖模块:Det (开发错误跟踪),Dem (诊断事件管理器)
2.1. 组件架构
WatchdogDriver在AUTOSAR架构中的位置及其与其他模块的关系如下图所示:

从上图可以看出,WatchdogDriver模块位于MCAL层,通过WdgIf与上层的WdgM模块进行交互。该模块主要包含以下组件关系:
-
上层关系:
- 应用软件组件通过WdgM调用看门狗功能
- WdgM通过WdgIf调用WatchdogDriver的API
-
同层关系:
- 与Det模块交互,用于报告开发错误
- 与Dem模块交互,用于报告诊断事件
-
下层关系:
- 内部看门狗驱动直接访问微控制器内部的看门狗硬件
- 外部看门狗驱动通过SPI或DIO接口访问外部看门狗芯片
3. 主要功能
WatchdogDriver模块提供以下主要功能:
-
初始化看门狗硬件:
- 配置默认模式和超时设置
- 设置初始触发条件
-
模式管理:
- 支持多种运行模式:快速模式、慢速模式、关闭模式
- 根据模式切换看门狗的超时周期和刷新频率
-
触发条件设置:
- 设置看门狗的超时周期
- 处理看门狗的触发机制
-
错误处理:
- 检测和报告开发错误
- 处理看门狗相关的诊断事件
4. API接口
WatchdogDriver模块提供以下API接口:
-
Wdg_Init(const Wdg_ConfigType* ConfigPtr)- 功能:初始化看门狗模块和硬件
- 参数:配置数据指针
- 返回:无
-
Wdg_SetMode(WdgIf_ModeType Mode)- 功能:切换看门狗模式
- 参数:目标模式
- 返回:
E_OK(成功) 或E_NOT_OK(失败)
-
Wdg_SetTriggerCondition(uint16 Timeout)- 功能:设置看门狗触发条件
- 参数:超时值
- 返回:无
-
Wdg_GetVersionInfo(Std_VersionInfoType* VersionInfo)- 功能:获取模块版本信息
- 参数:版本信息结构体指针
- 返回:无
5. 配置参数
WatchdogDriver模块的主要配置参数包括:
-
通用配置:
WdgDevErrorDetect:开启/关闭开发错误检测WdgDisableAllowed:是否允许运行时禁用看门狗WdgIndex:模块实例IDWdgInitialTimeout:初始化时的超时设置WdgMaxTimeout:最大允许的超时设置WdgVersionInfoApi:是否启用版本信息APIWdgRunArea:执行区域(RAM/ROM)
-
模式配置:
WdgDefaultMode:默认模式设置WdgSettingsFast:快速模式配置WdgSettingsSlow:慢速模式配置WdgSettingsOff:关闭模式配置
-
外部看门狗配置:
WdgExternalConfiguration:外部看门狗硬件配置WdgExternalContainerRef:外部接口引用(SPI/DIO)
5.1. 配置模型
WatchdogDriver的配置模型如下图所示:

配置模型主要包含以下几个部分:
-
Wdg:
- 顶层配置容器,包含所有看门狗驱动的配置参数
- 包含WdgGeneral、WdgPublishedInformation、WdgSettingsConfig和WdgDemEventParameterRefs子容器
-
WdgGeneral:
- 包含通用配置参数,如错误检测开关、禁用允许标志等
- 定义了看门狗的基本行为和特性
-
WdgSettingsConfig:
- 包含不同模式的配置参数
- 定义了快速模式、慢速模式和关闭模式的具体设置
- 可能包含外部看门狗的配置引用
-
WdgDemEventParameterRefs:
- 包含诊断事件的引用配置
- 定义了看门狗相关的诊断事件处理方式
6. 错误代码
WatchdogDriver模块定义了以下错误代码:
-
开发错误:
WDG_E_DRIVER_STATE(0x10):驱动状态错误WDG_E_PARAM_MODE(0x11):模式参数错误WDG_E_PARAM_CONFIG(0x12):配置参数错误WDG_E_PARAM_TIMEOUT(0x13):超时参数错误WDG_E_PARAM_POINTER(0x14):指针参数错误WDG_E_INIT_FAILED(0x15):初始化失败
-
诊断事件:
WDG_E_DISABLE_REJECTED:禁用看门狗被拒绝WDG_E_MODE_FAILED:模式切换失败
7. 状态管理
WatchdogDriver模块维护以下状态:
-
模块状态:
- 未初始化:模块尚未初始化
- 已初始化:模块已初始化并可操作
-
运行状态:
WDG_IDLE:空闲状态,可接受新请求WDG_BUSY:忙状态,正在处理模式切换
-
模式状态:
- 快速模式:较短的超时周期,较高的刷新频率
- 慢速模式:较长的超时周期,较低的刷新频率
- 关闭模式:看门狗功能禁用(仅当允许时)
7.1. 状态机
WatchdogDriver的状态转换如下图所示:

状态机主要包含以下几个部分:
-
初始化状态转换:
- 系统上电后,模块处于未初始化状态
- 调用
Wdg_Init()成功后,模块进入已初始化状态 - 如果初始化失败,模块保持在未初始化状态
-
运行状态转换:
- 在已初始化状态下,模块默认处于
WDG_IDLE状态 - 调用
Wdg_SetMode()时,模块进入WDG_BUSY状态 - 模式切换完成后,模块返回
WDG_IDLE状态
- 在已初始化状态下,模块默认处于
-
模式状态转换:
- 模块可以在快速模式、慢速模式和关闭模式之间切换
- 只有当
WdgDisableAllowed为TRUE时,才能切换到关闭模式 - 模式切换通过
Wdg_SetMode()函数实现
8. 处理流程
8.1. 活动流程
WatchdogDriver的主要处理流程如下图所示:

活动流程主要包含以下几个部分:
-
Wdg_Init流程:- 接收配置指针并进行参数检查
- 如果开发错误检测开启且配置指针为
NULL,报告错误并退出 - 设置默认模式,如果默认模式为
OFF且禁用不允许,报告错误并返回E_NOT_OK - 初始化看门狗硬件,设置模块状态为已初始化,返回
E_OK
-
Wdg_SetMode流程:- 接收模式参数并进行参数检查
- 如果开发错误检测开启,检查模块状态和模式参数的有效性
- 如果模式为
OFF且禁用不允许,报告错误并返回E_NOT_OK - 设置模块状态为
WDG_BUSY,根据模式参数设置看门狗硬件 - 设置模块状态为
WDG_IDLE,返回E_OK
-
Wdg_SetTriggerCondition流程:- 接收超时参数并进行参数检查
- 如果开发错误检测开启,检查模块状态和超时参数的有效性
- 计算触发条件,如果触发计数器为0,不执行任何操作
- 否则,更新激活码并触发看门狗硬件
9. 操作序列
9.1. 典型操作序列
WatchdogDriver的典型操作序列如下图所示:

操作序列主要包含以下几个部分:
-
看门狗初始化序列:
- WdgM调用
WdgIf_Init(),WdgIf调用Wdg_Init() - Wdg检查配置指针,如果为
NULL且开发错误检测开启,报告错误 - Wdg设置默认模式,如果默认模式为
OFF且禁用不允许,报告错误并返回E_NOT_OK - 否则,初始化看门狗硬件并返回
E_OK
- WdgM调用
-
看门狗模式切换序列:
- WdgM调用
WdgIf_SetMode(),WdgIf调用Wdg_SetMode() - Wdg检查模式参数,如果无效且开发错误检测开启,报告错误
- 如果模式为
OFF且禁用不允许,报告错误并返回E_NOT_OK - 否则,设置看门狗硬件模式并返回
E_OK
- WdgM调用
-
触发条件设置序列:
- WdgM调用
WdgIf_SetTriggerCondition(),WdgIf调用Wdg_SetTriggerCondition() - Wdg检查超时参数,如果超出范围且开发错误检测开启,报告错误
- Wdg设置看门狗硬件的触发条件
- WdgM调用
10. 硬件抽象
WatchdogDriver模块支持两种类型的看门狗硬件:
-
内部看门狗:
- 直接访问微控制器内部的看门狗硬件
- 通常通过寄存器操作实现
-
外部看门狗:
- 通过SPI或DIO接口访问外部看门狗芯片
- 需要额外的驱动支持
11. 安全考虑
WatchdogDriver模块包含以下安全机制:
-
禁用保护:
- 通过
WdgDisableAllowed参数控制是否允许禁用看门狗 - 安全关键应用通常不允许禁用看门狗
- 通过
-
错误检测:
- 开发错误检测和报告
- 诊断事件管理和报告
-
状态检查:
- 在API调用前检查模块状态
- 防止在不适当的状态下执行操作
12. 与其他模块的关系
WatchdogDriver模块与以下模块有交互:
-
WdgIf (看门狗接口):
- 提供统一的接口给上层模块
- 支持多个看门狗实例的管理
-
WdgM (看门狗管理器):
- 使用WdgIf调用WatchdogDriver的功能
- 实现更高级的看门狗监控策略
-
Det (开发错误跟踪):
- 报告开发错误
- 用于调试和开发阶段
-
Dem (诊断事件管理器):
- 报告诊断事件
- 用于运行时监控和诊断
相关文章:
图解AUTOSAR_CP_WatchdogDriver
AUTOSAR WatchdogDriver模块详解 AUTOSAR MCAL层看门狗驱动模块详细解析 目录 1. 模块概述2. 架构位置 2.1. 组件架构 3. 主要功能4. API接口5. 配置参数 5.1. 配置模型 6. 错误代码7. 状态管理 7.1. 状态机 8. 处理流程 8.1. 活动流程 9. 操作序列 9.1. 典型操作序列 10. 硬件…...
大数据学习(65)- Hue详解
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Maven 的核心包
由于前端项目不是核心,阅读 nexus-public 源代码似乎绕远路了。nexus-oss 社区版主要就是集成 maven 的上传包、认证、包解析、包存储这几个核心功能,前端实现重新可以使用新的现代前端工具来提高生产力。故重新疏理一下 maven 的核心机制,即…...
C语言学习笔记(第三部份)
说明:由于所有内容放在一个md文件中会非常卡顿,本文件将接续C_1.md文件的第三部分 整型存储和大小端 引例: int main(void) {// printf("%d\n", SnAdda(2, 5));// PrintDaffodilNum(10000);// PrintRhombus(3);int i 0;int arr[…...
C语言经典代码题
1.输入一个4位数:输出这个输的个位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("输入一个4位数:");scanf("%d",&a);printf("个位:%d\n"…...
深入理解蒸馏、Function Call、React、Prompt 与 Agent
AI基础概念与实操 一、什么是蒸馏二、如何理解Function Call、React、Prompt与Agent(一)Function Call与Agent(二)Agent中的React概念(三)Prompt与Agent的关联 实操演练function callprompt 一、什么是蒸馏…...
CVPR2025自动驾驶端到端前沿论文汇总
自动驾驶 文章目录 自动驾驶前言自动驾驶的轨迹预测论文端到端自动驾驶论文 前言 汇总CVPR2025自动驾驶前沿论文 自动驾驶的轨迹预测论文 Leveraging SD Map to Augment HD Map-based Trajectory PredictionModeSeq: Taming Sparse Multimodal Motion Prediction with Seque…...
Qt6.8实现麦克风音频输入音频采集保存wav文件
一.本文目的 实现在Qt中接收麦克风数据并保存为WAV文件,使用QAudioInput来录音,并使用QFile来保存数据到WAV文件。 开发环境:QT6.8 本文用极简代码实现,核心代码只需不到100行。 二.代码实现...
记录一个SQL自动执行的html页面
在实际工作场景中,需要运用到大量SQL语句更新业务逻辑,对程序员本身,写好的sql语句执行没有多大问题(图1),但是对于普通用户来说还是有操作难度的。因此我们需要构建一个HTML页面(图2࿰…...
分布式唯一ID
微服务 分布式唯一主键ID生成方案_微服务主键生成-CSDN博客 uid-generator-spring-boot-starter 教程-CSDN博客 https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md GitCode - 全球开发者的开源社区,开源代码托管平台...
在图像/视频中裁剪出人脸区域
1. 在图像中裁剪人脸区域 import face_alignment import skimage.io import numpy from argparse import ArgumentParser from skimage import img_as_ubyte from skimage.transform import resize from tqdm import tqdm import os import numpy as np import warnings warni…...
LuaJIT 学习(5)—— string.buffer 库
文章目录 Using the String Buffer LibraryBuffer ObjectsBuffer Method Overview Buffer Creation and Managementlocal buf buffer.new([size [,options]]) local buf buffer.new([options])buf buf:reset()buf buf:free() Buffer Writersbuf buf:put([str|num|obj] [,……...
qt介绍图表 charts 一
qt chartsj基于Q的Graphics View框架,其核心组件是QChartView和QChart.QChartView是一个显示图表的独立部件,基类为QGraphicsView.QChar类管理图表的序列,图例和轴示意图。 绘制一个cos和sin曲线图,效果如下 实现代码 #include…...
Transformer:GPT背后的造脑工程全解析(含手搓过程)
Transformer:GPT背后的"造脑工程"全解析(含手搓过程) Transformer 是人工智能领域的革命性架构,通过自注意力机制让模型像人类一样"全局理解"上下文关系。它摒弃传统循环结构,采用并行计算实现高…...
S32K144入门笔记(十):TRGMUX的初始化
目录 1. 概述 2. 代码配置 1. 概述 书接上回,TRGMUX本质上是一个多路选择开关,根据用户手册中的描述,它可以实现多个输入的选择输出,本篇文章将验证如何通过配置工具来生成初始化配置代码。 2. 代码配置 笔者通过配置TRGMUX实现…...
有了大模型为何还需要Agent智能体
一、什么是Agent? Agent(智能体) 是一种能感知环境、自主决策、执行动作的智能实体,当它与大语言模型(如通义千问QWen、GPT)结合时,形成一种**“增强型AI系统”**。其核心架构如下:…...
DNS主从服务器
1.1环境准备 作用系统IP主机名web 服务器redhat9.5192.168.33.8webDNS 主服务器redhat9.5192.168.33.18dns1DNS 从服务器redhat9.5192.168.33.28dns2客户端redhat9.5192.168.33.7client 1.2修改主机名和IP地址 web服务器 [rootweb-8 ~]# hostnamectl hostname web [rootweb-8…...
Flume详解——介绍、部署与使用
1. Flume 简介 Apache Flume 是一个专门用于高效地 收集、聚合、传输 大量日志数据的 分布式、可靠 的系统。它特别擅长将数据从各种数据源(如日志文件、消息队列等)传输到 HDFS、HBase、Kafka 等大数据存储系统。 特点: 可扩展࿱…...
一个简单的 **猜数字游戏** 的 C 语言例程
一个简单的 猜数字游戏 的 C 语言例程,代码包含详细注释,适合学习和练习基础语法: #include <stdio.h> #include <stdlib.h> #include <time.h> // 用于生成随机数种子int main() {int target, guess, attempts 0;srand…...
解决diffusers加载stablediffusion模型,输入prompt总是报错token数超出clip最大长度限制
1. StableDiffusion1.5 在加载huggingface中的扩散模型时,输入prompt总是会被报错超过clip的最大长度限制。 解决方案:使用compel库 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…...
mysql-查看binlog日志
mysql目前binlog_format默认是row格式, 找到binlog日志文件,通过命令查看 >mysqlbinlog binlog日志路径内容大致如下: /*!*/; # at 1163 #250317 14:13:43 server id 1 end_log_pos 1194 CRC32 0x09c8bcfd Xid 14 COMMIT/*!*…...
【Linux系列】文件压缩
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
微服务架构中10个常用的设计模式
在当今的微服务架构中,常见的十种设计模式,分别是服务发现模式、API网关模式、断路器模式、边车模式、负载均衡模式、Saga事务模式、CQRS模式、分片模式、分布式日志跟踪模式、熔断与降级模式 。其中,服务发现模式十分关键,通过…...
Vue3组件+leaflet,实现重叠marker的Popup切换显示
一、前言 GIS开发过程中,经常需要绘制marker,这些marker很大概率会有坐标相同导致的叠加问题,这种情况下会降低使用体验感。所以我们可以将叠加的marker的popup做一个分页效果,可以切换显示的marker。 二、技术要点 我们以leaf…...
将COCO格式的物体检测数据集划分训练集、验证集和测试集
目录 导入所需库 定义数据集路径 创建输出目录 读取JSON注释文件 随机打乱图像列表 计算划分大小 复制图像到相应文件夹 完整代码 导入所需库 我们需要以下Python库: os:处理文件路径。 json:读取和写入JSON文件。 numpyÿ…...
机器学习之距离度量方法
常见的距离度量方法及相关函数、图示如下: 1. 欧几里得距离(Euclidean Distance) 函数公式:对于两个 ( n ) 维向量 ( x = ( x 1 , x 2 , ⋯ ,...
3.1 在VisionPro脚本中添加CogGraphicLabel
本案例需要实现如下功能: 1.加载toolBlock 2.加载图片, 3.运行Block 4.VisionPro中添加脚本显示数值。 见下图:详细代码(C#以及visionPro)见下面链接: https://download.csdn.net/download/qq_340474…...
自动化APP测试APPium的元素等待
在使用Appium进行移动应用自动化测试时,有三种等待。 隐式等待driver.implicitly_wait() 显式等待(常用) time.sleep() 隐式等待(Implicit Wait) 应用场景: 当你希望对所有元素定位操作设置统一的超时…...
AI:Machine Learning Data Science
机器学习与数据科学 左侧 机器学习 Machine Learning 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知…...
软件需求分类、需求获取(高软46)
系列文章目录 软件需求分类,需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记,大佬请略过!...
