图解AUTOSAR_CP_WatchdogDriver

news2025/3/19 2:23:18

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. 硬件抽象
  • 11. 安全考虑
  • 12. 与其他模块的关系

1. 模块概述

WatchdogDriver (Wdg) 是AUTOSAR标准中的一个MCAL层模块,负责管理和控制微控制器的看门狗硬件。看门狗是一种安全机制,用于在软件异常时重置系统,确保系统能够从故障状态恢复。


2. 架构位置

  • 层级:MCAL (微控制器抽象层)
  • 上层接口:通过WdgIf (看门狗接口) 与上层模块通信
  • 主要调用者WdgM (看门狗管理器)
  • 依赖模块Det (开发错误跟踪),Dem (诊断事件管理器)

2.1. 组件架构

WatchdogDriver在AUTOSAR架构中的位置及其与其他模块的关系如下图所示:
在这里插入图片描述

从上图可以看出,WatchdogDriver模块位于MCAL层,通过WdgIf与上层的WdgM模块进行交互。该模块主要包含以下组件关系:

  1. 上层关系

    • 应用软件组件通过WdgM调用看门狗功能
    • WdgM通过WdgIf调用WatchdogDriver的API
  2. 同层关系

    • Det模块交互,用于报告开发错误
    • Dem模块交互,用于报告诊断事件
  3. 下层关系

    • 内部看门狗驱动直接访问微控制器内部的看门狗硬件
    • 外部看门狗驱动通过SPIDIO接口访问外部看门狗芯片

3. 主要功能

WatchdogDriver模块提供以下主要功能:

  1. 初始化看门狗硬件

    • 配置默认模式和超时设置
    • 设置初始触发条件
  2. 模式管理

    • 支持多种运行模式:快速模式、慢速模式、关闭模式
    • 根据模式切换看门狗的超时周期和刷新频率
  3. 触发条件设置

    • 设置看门狗的超时周期
    • 处理看门狗的触发机制
  4. 错误处理

    • 检测和报告开发错误
    • 处理看门狗相关的诊断事件

4. API接口

WatchdogDriver模块提供以下API接口:

  1. Wdg_Init(const Wdg_ConfigType* ConfigPtr)

    • 功能:初始化看门狗模块和硬件
    • 参数:配置数据指针
    • 返回:无
  2. Wdg_SetMode(WdgIf_ModeType Mode)

    • 功能:切换看门狗模式
    • 参数:目标模式
    • 返回:E_OK (成功) 或 E_NOT_OK (失败)
  3. Wdg_SetTriggerCondition(uint16 Timeout)

    • 功能:设置看门狗触发条件
    • 参数:超时值
    • 返回:无
  4. Wdg_GetVersionInfo(Std_VersionInfoType* VersionInfo)

    • 功能:获取模块版本信息
    • 参数:版本信息结构体指针
    • 返回:无

5. 配置参数

WatchdogDriver模块的主要配置参数包括:

  1. 通用配置

    • WdgDevErrorDetect:开启/关闭开发错误检测
    • WdgDisableAllowed:是否允许运行时禁用看门狗
    • WdgIndex:模块实例ID
    • WdgInitialTimeout:初始化时的超时设置
    • WdgMaxTimeout:最大允许的超时设置
    • WdgVersionInfoApi:是否启用版本信息API
    • WdgRunArea:执行区域(RAM/ROM)
  2. 模式配置

    • WdgDefaultMode:默认模式设置
    • WdgSettingsFast:快速模式配置
    • WdgSettingsSlow:慢速模式配置
    • WdgSettingsOff:关闭模式配置
  3. 外部看门狗配置

    • WdgExternalConfiguration:外部看门狗硬件配置
    • WdgExternalContainerRef:外部接口引用(SPI/DIO)

5.1. 配置模型

WatchdogDriver的配置模型如下图所示:
在这里插入图片描述

配置模型主要包含以下几个部分:

  1. Wdg

    • 顶层配置容器,包含所有看门狗驱动的配置参数
    • 包含WdgGeneralWdgPublishedInformationWdgSettingsConfigWdgDemEventParameterRefs子容器
  2. WdgGeneral

    • 包含通用配置参数,如错误检测开关、禁用允许标志等
    • 定义了看门狗的基本行为和特性
  3. WdgSettingsConfig

    • 包含不同模式的配置参数
    • 定义了快速模式、慢速模式和关闭模式的具体设置
    • 可能包含外部看门狗的配置引用
  4. WdgDemEventParameterRefs

    • 包含诊断事件的引用配置
    • 定义了看门狗相关的诊断事件处理方式

6. 错误代码

WatchdogDriver模块定义了以下错误代码:

  1. 开发错误

    • 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):初始化失败
  2. 诊断事件

    • WDG_E_DISABLE_REJECTED:禁用看门狗被拒绝
    • WDG_E_MODE_FAILED:模式切换失败

7. 状态管理

WatchdogDriver模块维护以下状态:

  1. 模块状态

    • 未初始化:模块尚未初始化
    • 已初始化:模块已初始化并可操作
  2. 运行状态

    • WDG_IDLE:空闲状态,可接受新请求
    • WDG_BUSY:忙状态,正在处理模式切换
  3. 模式状态

    • 快速模式:较短的超时周期,较高的刷新频率
    • 慢速模式:较长的超时周期,较低的刷新频率
    • 关闭模式:看门狗功能禁用(仅当允许时)

7.1. 状态机

WatchdogDriver的状态转换如下图所示:
在这里插入图片描述

状态机主要包含以下几个部分:

  1. 初始化状态转换

    • 系统上电后,模块处于未初始化状态
    • 调用Wdg_Init()成功后,模块进入已初始化状态
    • 如果初始化失败,模块保持在未初始化状态
  2. 运行状态转换

    • 在已初始化状态下,模块默认处于WDG_IDLE状态
    • 调用Wdg_SetMode()时,模块进入WDG_BUSY状态
    • 模式切换完成后,模块返回WDG_IDLE状态
  3. 模式状态转换

    • 模块可以在快速模式、慢速模式和关闭模式之间切换
    • 只有当WdgDisableAllowedTRUE时,才能切换到关闭模式
    • 模式切换通过Wdg_SetMode()函数实现

8. 处理流程

8.1. 活动流程

WatchdogDriver的主要处理流程如下图所示:
在这里插入图片描述

活动流程主要包含以下几个部分:

  1. Wdg_Init流程

    • 接收配置指针并进行参数检查
    • 如果开发错误检测开启且配置指针为NULL,报告错误并退出
    • 设置默认模式,如果默认模式为OFF且禁用不允许,报告错误并返回E_NOT_OK
    • 初始化看门狗硬件,设置模块状态为已初始化,返回E_OK
  2. Wdg_SetMode流程

    • 接收模式参数并进行参数检查
    • 如果开发错误检测开启,检查模块状态和模式参数的有效性
    • 如果模式为OFF且禁用不允许,报告错误并返回E_NOT_OK
    • 设置模块状态为WDG_BUSY,根据模式参数设置看门狗硬件
    • 设置模块状态为WDG_IDLE,返回E_OK
  3. Wdg_SetTriggerCondition流程

    • 接收超时参数并进行参数检查
    • 如果开发错误检测开启,检查模块状态和超时参数的有效性
    • 计算触发条件,如果触发计数器为0,不执行任何操作
    • 否则,更新激活码并触发看门狗硬件

9. 操作序列

9.1. 典型操作序列

WatchdogDriver的典型操作序列如下图所示:
在这里插入图片描述

操作序列主要包含以下几个部分:

  1. 看门狗初始化序列

    • WdgM调用WdgIf_Init()WdgIf调用Wdg_Init()
    • Wdg检查配置指针,如果为NULL且开发错误检测开启,报告错误
    • Wdg设置默认模式,如果默认模式为OFF且禁用不允许,报告错误并返回E_NOT_OK
    • 否则,初始化看门狗硬件并返回E_OK
  2. 看门狗模式切换序列

    • WdgM调用WdgIf_SetMode()WdgIf调用Wdg_SetMode()
    • Wdg检查模式参数,如果无效且开发错误检测开启,报告错误
    • 如果模式为OFF且禁用不允许,报告错误并返回E_NOT_OK
    • 否则,设置看门狗硬件模式并返回E_OK
  3. 触发条件设置序列

    • WdgM调用WdgIf_SetTriggerCondition()WdgIf调用Wdg_SetTriggerCondition()
    • Wdg检查超时参数,如果超出范围且开发错误检测开启,报告错误
    • Wdg设置看门狗硬件的触发条件

10. 硬件抽象

WatchdogDriver模块支持两种类型的看门狗硬件:

  1. 内部看门狗

    • 直接访问微控制器内部的看门狗硬件
    • 通常通过寄存器操作实现
  2. 外部看门狗

    • 通过SPIDIO接口访问外部看门狗芯片
    • 需要额外的驱动支持

11. 安全考虑

WatchdogDriver模块包含以下安全机制:

  1. 禁用保护

    • 通过WdgDisableAllowed参数控制是否允许禁用看门狗
    • 安全关键应用通常不允许禁用看门狗
  2. 错误检测

    • 开发错误检测和报告
    • 诊断事件管理和报告
  3. 状态检查

    • 在API调用前检查模块状态
    • 防止在不适当的状态下执行操作

12. 与其他模块的关系

WatchdogDriver模块与以下模块有交互:

  1. WdgIf (看门狗接口):

    • 提供统一的接口给上层模块
    • 支持多个看门狗实例的管理
  2. WdgM (看门狗管理器):

    • 使用WdgIf调用WatchdogDriver的功能
    • 实现更高级的看门狗监控策略
  3. Det (开发错误跟踪):

    • 报告开发错误
    • 用于调试和开发阶段
  4. Dem (诊断事件管理器):

    • 报告诊断事件
    • 用于运行时监控和诊断

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

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

相关文章

大数据学习(65)- Hue详解

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…

C语言学习笔记(第三部份)

说明:由于所有内容放在一个md文件中会非常卡顿,本文件将接续C_1.md文件的第三部分 整型存储和大小端 引例: int main(void) {// printf("%d\n", SnAdda(2, 5));// PrintDaffodilNum(10000);// PrintRhombus(3);int i 0;int arr[…

深入理解蒸馏、Function Call、React、Prompt 与 Agent

AI基础概念与实操 一、什么是蒸馏二、如何理解Function Call、React、Prompt与Agent(一)Function Call与Agent(二)Agent中的React概念(三)Prompt与Agent的关联 实操演练function callprompt 一、什么是蒸馏…

记录一个SQL自动执行的html页面

在实际工作场景中,需要运用到大量SQL语句更新业务逻辑,对程序员本身,写好的sql语句执行没有多大问题(图1),但是对于普通用户来说还是有操作难度的。因此我们需要构建一个HTML页面(图2&#xff0…

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 等大数据存储系统。 特点: 可扩展&#xff1…

【Linux系列】文件压缩

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

微服务架构中10个常用的设计模式

​在当今的微服务架构中,常见的十种设计模式,分别是服务发现模式、API网关模式、断路器模式、边车模式、负载均衡模式、Saga事务模式、CQRS模式、分片模式、分布式日志跟踪模式、熔断与降级模式 。其中,服务发现模式十分关键,通过…

Vue3组件+leaflet,实现重叠marker的Popup切换显示

一、前言 GIS开发过程中,经常需要绘制marker,这些marker很大概率会有坐标相同导致的叠加问题,这种情况下会降低使用体验感。所以我们可以将叠加的marker的popup做一个分页效果,可以切换显示的marker。 二、技术要点 我们以leaf…

机器学习之距离度量方法

常见的距离度量方法及相关函数、图示如下: 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…

AI:Machine Learning Data Science

机器学习与数据科学 左侧 机器学习 Machine Learning 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知…

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类,需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记,大佬请略过!

嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?

01 什么是 BootLoader 呢? 它是个引导程序,也就是硬件复位以后第一个要执行的程序,它主要工作就是初始化操作系统运行的环境,比如说内存、定时器、缓冲器等,当这个工作做完以后,再把操作系统的代码加载…

函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)

一、函数的概念 •C语⾔中的函数:⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数(更准确) •在C语⾔中我们⼀般会⻅到两类函数:库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…

ImGui 学习笔记(五) —— 字体文件加载问题

ImGui 加载字体文件的函数似乎存在编码问题,这一点可能跟源文件的编码也有关系,我目前源文件编码是 UTF-16。 当参数中包含中文字符时,ImGui 内部将字符转换为宽字符字符集时候,采用的 MultiByteToWideChar API 参数不太对&#…