图解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. 硬件抽象
  • 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.mzph.cn/diannao/73783.shtml

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

相关文章

Linux操作系统应用

Linux操作系统应用 一、用户与用户组管理1.1 管理用户1.1.1 与用户账号相关的文件1.1.2 用户管理命令1.1.3 任务实施 1.2 管理用户组1.2.1 用户组1.2.2 用户组管理命令 1.3 查看用户和用户组状态1.3.1 用户查看命令 id、who、whoami1.3.2 用户身份切换命令 su、sudo 二、文件管…

【大语言模型_5】xinference部署embedding模型和rerank模型

一、安装xinference pip install xinference 二、启动xinference ./xinference-local --host0.0.0.0 --port5544 三、注册本地模型 1、注册embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…

Vector 的模拟实现:从基础到高级

文章目录 1. 引言2. vector的核心设计3. vector的常用接口介绍3.1 构造函数和析构函数3.1.1 默认构造函数3.1.2 带初始容量的构造函数3.1.3 析构函数 3.2 拷贝构造函数和拷贝赋值运算符3.2.1 拷贝构造函数3.2.2 拷贝赋值运算符 3.5 数组长度调整和动态扩容3.5.1 调整大小&#…

深入理解 Linux 的 top 命令:实时监控系统性能

在 Linux 系统管理和性能优化中,top 命令是一个不可或缺的工具。它可以实时显示系统的进程信息和资源使用情况,帮助管理员快速定位性能瓶颈。本文将详细介绍 top 命令的输出内容及其使用方法,帮助你更好地掌握系统性能监控。 一、top 命令简介 top 是一个动态显示系统状态的…

拖拽实现+摇杆实现

拖拽实现 拖拽事件实现: 半透明渐变贴图在ios设备下,使用压缩会造成图片质量损失,所以可以将半透明渐变UI切片单独制作真彩色图集 拖拽事件组 IBeginDragHandler:检测到射线后,当拖拽动作开始时执行一次回调函数 IDragHandler:拖拽开始后&a…

xLua_001 Lua 文件加载

xLua下载 1、HelloWrold 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; // 引入XLua命名空间 public class Helloworld01 : MonoBehaviour {//声明LuaEnv对象 private LuaEnv luaenv;void Start(){//实例化LuaEnv对象…

每天看一篇漏洞报告

前言: 内容来源于乌云漏洞 今日思考xss漏洞, 今天看到一篇文章,里面详细说了xss的绕过技巧,虽然时间久了,没有去尝试,待会有时间去测试一下 以下是整理后的文章,原文在下面 文章链接&#…

【sql靶场】第18-22关-htpp头部注入保姆级教程

目录 【sql靶场】第18-22关-htpp头部注入保姆级教程 1.回顾知识 1.http头部 2.报错注入 2.第十八关 1.尝试 2.爆出数据库名 3.爆出表名 4.爆出字段 5.爆出账号密码 3.第十九关 4.第二十关 5.第二十一关 6.第二十二关 【sql靶场】第18-22关-htpp头部注入保姆级教程…

Python----计算机视觉处理(Opencv:形态学变换)

一、形态学变化 形态学变换(Morphological Transformations)是一种基于形状的图像处理技术,主要处理的对象为二值化图像。 形态学变换有两个输入和一个输出:输入为原始图像和核(即结构化元素),输…

对于memset(b, 1, sizeof b)赋值为16843009情况

memset(b, 1, sizeof b); 的行为看起来可能不符合预期,这是因为 memset 的工作方式和数据类型之间的差异导致的。下面详细解释这个问题。 1. memset 的作用 memset 是 C/C 中的一个标准库函数,用于将一段内存区域的值设置为指定的字节值。它的函数原型如…

【最新版】智慧小区物业管理小程序源码+uniapp全开源

一.系统介绍 智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。 二.搭建环境 系统环…

C++模板进阶

目录 非类型模板参数 类模板的特化 分类 函数模板的特化 模板分离编译 问题 解决方法 1)不对模板定义进行分离或对模板进行特例化; 2)将声明和定义放在同一个文件 总结 关于C模板的使用在《C类和对象》中有介绍,本篇博客…

Ubuntu togo系统读写性能与原生系统测试

我前面把一个Ubuntu环境拷贝到了一个10Gbps的硬盘盒制作了一个Ubuntu togo的系统,帖子在这里,这篇文章主要用于测试使用Ubuntu togo的系统和原生系统的性能差异。 以下是测试Ubuntu togo系统与原系统性能差异的具体方案,结合移动硬盘特性及参…

【css酷炫效果】实现鱼群游动动态效果

【css酷炫效果】实现小鱼游动动态效果 缘创作背景css代码创建div容器引入jquery引入鱼群js完整代码效果图成品资源下载链接:点击下载 缘 在开发系统功能的时候,无意间看到了小鱼游动特效,感觉很有意思,就在网上找了相关教程,分享给大家。 创作背景 刚看到csdn出活动了…

停车场停车位数据集,标注停车位上是否有车,平均正确识别率99.5%,支持yolov5-11, coco json,darknet,xml格式标注

停车场停车位数据集,标注停车位上是否有车,平均正确识别率98.0%,支持yolov5-11, coco json,darknet,xml格式标注 数据集-识别停车场所有车辆的数据集 数据集分割 一共184张图片 训练组 89&am…

结合基于标签置信度的特征选择方法用于部分多标签学习-简介版

假设 部分多标签学习(PML)假设:假设样本的标签集合中存在伪正标签,即某些标签可能是错误的。目标是从候选标签集中识别出真实标签。特征与标签的关系假设:假设不同的标签对应的特征子空间可能是不同的,而不…

Lora微LLAMA模型实战

引言 本文介绍如何复现Alpaca-lora,即基于alpaca数据集用lora方法微调Llama模型。 环境准备 实验环境用的是lanyun,新用户点击注册可以送算力。 下载huggingface上的模型是一个令人头疼的问题,但在lanyun上可以通过在终端运行source /etc…

Maven常见问题汇总

Maven刷新,本地仓库无法更新 现象 This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced原因 因为上一次尝试下载,发现对应的仓库没有这个maven配置…

什么是站群服务器?站群服务器应该怎么选?

站群服务器是专门用于托管和管理多个网站的服务器。通常用于SEO优化、内容分发、广告推广等场景,用户可以通过一个服务器管理多个站点,提升效率并降低成本。选择站群服务器时,需根据业务需求、性能要求、IP资源等因素进行综合考虑。 什么是站…

分享一个项目中遇到的一个算法题

需求背景: 需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期&…