【车载开发系列】Autosar DCM诊断管理模块

news2024/11/15 11:04:13

【车载开发系列】Autosar DCM诊断管理模块

【车载开发系列】Autosar DCM诊断管理模块

  • 【车载开发系列】Autosar DCM诊断管理模块
    • 一. DCM模块概念
    • 二. DCM模块与Autosar其他模块关系
      • 1)Dcm和PduR的交互
      • 2)Dcm和ComM模块的交互
      • 3)Dcm和Dem的交互
      • 4)SWC通过和RTE接口和Dcm交互
      • 5)BswM和Dcm模块的交互
    • 三. Dcm模块配置
    • 四. Dcm通用配置(DcmGeneral)

一. DCM模块概念

在AUTOSAR架构中,Dcm模块的全称是Diagnostic Communication Manager,它是诊断通信管理用的一个模块,位于通信服务层。
它的主要作用是负责诊断数据流和管理诊断状态,包括诊断会话、安全状态及诊断服务分配等。
从网络分层角度看,DCM模块属于上层模块,主要为应用层提供服务。主要包括5-7层,包括会话层服务及应用层等,会话层包括服务定时及服务分配等,应用层为具体的服务功能实现。
DCM模块相关的标准主要包括三部分:ISO 14229(UDS,DCM遵循的主要标准)、ISO 15031(ISO 15031 (1-7))及SAEJ1939(OBD,与OBD相关的$01 -$0A服务)。

二. DCM模块与Autosar其他模块关系

在这里插入图片描述
Dcm模块是诊断通信管理用的模块,它独立于具体的网络的(不依赖于具体的CAN,Lin,Eth,Flexray等网络来实现)。

1)Dcm和PduR的交互

PduR模块接收和发送诊断数据。PduR为Dcm模块提供一个与具体通信协议无关的接口。
PduR模块为Dcm模块提供独立于具体网络的接口。Dcm模块从PduR模块接收诊断信息,Dcm模块在内部处理和检查诊断消息。

2)Dcm和ComM模块的交互

Dcm模块可以指示状态“活动”和“非活动”用于诊断通信。Dcm模块提供了处理通信需求“完全/静默/无通信”的功能。此外,Dcm模块提供了在ComM模块要求时启用和禁用诊断通信的功能。

3)Dcm和Dem的交互

DEM模块提供了检索与故障内存相关的所有信息的功能,以便Dcm模块能够通过从故障内存中读取数据重新响应测试人员的请求,通俗的讲就是Dcm能够读取Dem记录的DTC信息

4)SWC通过和RTE接口和Dcm交互

Dcm模块在完成诊断功能的时候需要通过RTE接口来读写/函数调用其他SWC的数据/服务。
Dcm将与其他BSW模块或SW-Components(通过RTE)交互,以获取所请求的数据或执行所请求的命令。诊断服务处理与特定的服务请求强绑定(不同的诊断请求依赖于不同的一个或几个模块来实现)。通常,Dcm将汇集收集到的信息,并通过PduR模块发送回消息。

5)BswM和Dcm模块的交互

如果Dcm的初始化是从引导加载程序跳转的结果,则Dcm通知BswM应用程序已更新。Dcm也向BswM指示通信模式的改变。
在这里插入图片描述

三. Dcm模块配置

诊断通信管理(DCM)主要包括三个子模块:诊断服务层(Diagnostic Service Layer,DSL)、诊断服务调度(Diagnostic Service Dispatcher, DSD)、诊断服务处理(Diagnostic Service Processing, DSP)。在Vector Configurator Pro中,Dcm模块由以下五个容器组成。通过Vector Configurator Pro工具配置Dcm模块,并实现客户的需求。
DcmDsd:该容器配置诊断服务调度的所有参数
DcmDsl:该容器配置诊断会话层的所有参数
DcmDsp:该容器配置诊断服务处理的所有参数
DcmGeneral: 该容器配置Dcm模块的通用参数
DcmPageBufferCfg:该容器配置Dcm模块的缓存区参数
在这里插入图片描述
Diagnostic Service Layer:确定诊断数据请求和响应的数据流;监控和确保诊断请求和响应的时序,管理诊断状态(特别是诊断会话和安全状态)
Diagnostic Service Dispatcher:接收到的诊断请求转发给数据处理器;当数据处理器触发时,通过PDUR传输诊断响应。
Diagnostic Service Processing:处理实际的诊断请求。

四. Dcm通用配置(DcmGeneral)

在这里插入图片描述
1)DcmBswApiVersion:
指定BSW堆栈API的AUTOSAR版本。若参数为空,使用V4.XX.XX AUTOSAR版本
2)DcmCalibrationOfObdIdsEnabled:
是否支持标准OBD ID。
3)DcmCalibrationOfObdIdsMemoryType:
标准OBD ID数据的存储类型。
VOLATILE:生成RAM表。NON_VOLATILE:生成const区域表。默认使用NON_VOLATILE类型。
4)DcmDtrDataProvisionViaDemEnabled:
Dem是否处理OBD MID DTR数据采集。若设置enable,Dcm请求OBD MID DTR(Sid 0x06 or Did 0xF600)时与Dem数据交互;若设置disable,Dcm使用BSWMD文件定义OBD MID配置来获取DTR数据。
5)DcmDefensiveBehaviorEnabled:
指定Dcm是都监控API输入输出和内部行为,不通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
6)DcmDemApiVersion:
指定Dem API的AOTOSAR版本。若参数为空,使用V4.03.00 AUTOSAR版本
7)DcmDevErrorDetect:指定Dcm是都监控API输入输出和内部行为,并通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
8)DcmDspDataDefaultEndianness:
DSP层数据默认字节序
9)DcmFinalResponseToFblEnabled:
是否支持FBL最终的响应传输。若设置enable,Dcm调用“Dcm_GetProgConditions”函数决定是否发送最终响应。
10)DcmForeignDiagnosticRequestDetectionEnabled:
指定是否监听其他ECU的诊断请求。若设置enable,Dcm花费资源来处理这些诊断请求。
11)DcmKeepAliveTime
指定处理每个诊断请求后 Dcm 将保持 ComM 中的 Diag-Active 用户注册的时间(以秒为单位)。
12)DcmMainFunctionWorkerTaskTime:
配置诊断服务处理任务的周期时间。若设置为空,同时DcmSplitTasksEnabled为true,诊断服务处理任务周期会直接调用DcmTaskTime时间。
13)DcmMaxNumberIterationsPerTask:
每个Dcm_MainFunction任务的最大迭代次数。若设置为空,不限制次数;若设置大于0,对于比较复杂的诊断服务会造成运行时间增加。
14)DcmRequestManufacturerNotificationEnabled:
为制造商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。必须配置DcmDslServiceRequestManufacturerNotification参数。
15)DcmRequestSupplierNotificationEnabled
为供应商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。同时必须配置DcmDslServiceRequestSupplierNotification参数。
16)DcmResetToFblAfterSessionFinalResposeEnabled:
配置诊断会话切换肯定响应之前还是之后复位带FBL。若设置enable,Dcm会先回复肯定响应,再复位到FBL;若设置为disable,Dcm会先根据配置跳转到FBL,之后FBL会回复肯定响应。
17)DcmRespondAllRequest:
是否处理接收到的安全诊断请求。若设置enable,Dcm会接收并处理所有的诊断请求;若设置为disable,Dcm会接收所有请求,但是不处理[0x40,0x7F]U[0xC0, 0xFF]范围内的诊断请求。
18)DcmSafeBswChecks:
是否配置SafeBSW模式。若设置enable,Dcm不支持某些特定的功能(待深入理解);反之Dcm则支持全功能。
19)DcmSecurityLevelChangeNotificationEnabled:
安全等级改变时是否通知SWC。若设置enable,Dcm会在安全等级发生改变时调用RTE的接口。
20)DcmSplitTasksEnabled:
main-function任务是否分裂成worker+timer任务。若设置enable,Dcm会由Dcm_MainFunctionTimer和Dcm_MainFunctionWorker组成;反之Dcm只有一个Dcm_MainFunction任务。
21)DcmStateRecoveryAfterResetEnabled:
是否通过重置ECU保留一些Dcm内部状态。若设置enable,Dcm在Dcm_Init之后读取信息或者默认信息。反之Dcm不恢复信息直接启动。
22)DcmSupportedIDCalculationSuppressionEnabled:
是否抑制SupportedIDs的计算(待深入理解)。
23)DcmSuppressResponseOnCanTpFuncMixedAddrRequest
是否抑制由MixedAddressing CanTp连接的功能寻址的任何响应
24)DcmTaskTime:
Dcm主任务的周期时间
25)DcmUserConfigFile:
用户配置文件的路径。
26)DcmVersionInfoApi:
是否提供版本信息。若设置enable,Dcm提供“Dcm_GetVersionInfo”API接口来读取版本信息。
27)DcmVirtualRequestEnabled:
是否支持虚拟请求。

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

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

相关文章

Maven(五)如何只打包项目某个模块及其依赖模块?

目录 一、背景二、解决方案三、补充3.1 提出疑问3.2 解答 一、背景 在 SpringCloud 微服务框架下,会存在多个模块。当我们需要对其中某一个服务打包的时候,需要将该服务依赖的模块一起打包更新,如果项目比较小的话我们可以直接将项目中的所有…

C++ memmove 学习

memmove&#xff0c;将num字节的值从源指向的位置复制到目标指向的内存块。 允许目标和源有重叠。 当目标区域与源区域没有重叠则和memcpy函数功能相同。 宽字符版本是wmemmove&#xff0c;安全版本加_s&#xff1b; #include "stdafx.h" #include<iostream&g…

Addressables(2) ResourceLocation和AssetReference

IResourceLocation var op Addressables.LoadResourceLocationsAsync(key); var result op.WaitForCompletion(); 把加载的Key塞进去&#xff0c;不难看出&#xff0c;IResourceLocation可以用来获得资源的详细信息 很适合用于更新分析&#xff0c;或者一些检查工具 AssetR…

three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera</title><script src"ThreeJS/three.js"></script><script src&qu…

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

LLMs之Vanna&#xff1a;Vanna(利用自然语言查询数据库的SQL工具底层基于RAG)的简介、安装、使用方法之详细攻略 目录 Vanna的简介 1、用户界面 2、RAG vs. Fine-Tuning 3、为什么选择Vanna&#xff1f; 4、扩展Vanna Vanna的安装和使用方法 1、安装 2、训练 (1)、使用…

IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)

ACL基本原理 ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成 ACL编号: 在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。 规则: 前面提到了,一个AC…

vectorCast——Probe point 功能实现故障注入,局部变量打印,断点调试。

选择一个测试用例,选择coverage窗口进行查看。点击edit probe point,如图所示绿色的小圆圈。选代码中选择需要打断点的地方进行点击。黑色的小圆点都可以选。点击黑色小圆点,小圆点变绿,表示打断点成功。此时就可以根据自己的需求在打断点的位置编写一些C语言的命令语句。点…

C语言之编译和链接

C语言之编译和链接 文章目录 C语言之编译和链接翻译环境和运行环境1 翻译环境编译1.1.1 预处理&#xff08;预编译&#xff09;1.1.2 编译第一步&#xff1a;词法分析第二步&#xff1a;语法分析第三步&#xff1a;语义分析 1.1.3 汇编 链接 2. 运行环境 翻译环境和运行环境 在…

Autosar信息安全入门系列01-SecOC基础介绍

本文框架 1. 概述2. SecOC基本概念2.1 SecOC是什么&#xff1f;2.2 新鲜度值与MAC值2.3 SecOC报文格式 3. SecOC报文发送及接收逻辑3.1 SecOC报文的发送3.2 SecOC报文的接收 1. 概述 本文为Autosar通信入门系列介绍&#xff0c;如您对AutosarMCAL配置&#xff0c;通信&#xf…

Vue中的日历组件 Calendar 实现 考勤打卡记录

日历组件 Calendar 可以自定义在页面添加内容。 实现效果图 1.由于Calendar没有右上角月份切换的API事件&#xff0c;可以给组件源码添加自定义添加一个事件 2.也可以通过自带的input事件来获取日历 3.vue页面完整代码 注释&#xff1a;this.$m(this.beginTime).format(…

linux C语言socket函数recv

recv 函数是在 Linux C 语言网络编程中用于从已连接的套接字接收数据的函数。它通常与 TCP 连接一起使用&#xff0c;但也可以用于 UDP&#xff08;尽管对于 UDP&#xff0c;更常使用 recvfrom&#xff0c;因为它还可以接收发送方的地址信息&#xff09;。 函数原型 recv 函数…

【漏洞复现】Hikvision SPON IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 Hikvision Intercom Broadcasting System是中国海康威视&#xff08;Hikvision&#xff09;公司的一个对讲广播系统。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter 0. 背景1. 安装 docker-ce2. 安装 NVIDIA Container Toolkit3. 使用 nvidia-ctk 命令配置容器运行4. 通过 docker 运行 nvidia-smi5. 运行 gpu-jupyter6. 访问 gpu-jupyter7. 测试 gpu-jupyter 是否可以访问 cuda 0. 背景 今天突…

每日OJ题_算法_滑动窗口⑤_力扣904水果成篮

目录 力扣904. 水果成篮 解析及代码1&#xff08;使用容器&#xff09; 解析及代码2&#xff08;开数组&#xff09; 力扣904. 水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这…

stable-diffusion-webui 安装与运行

大家好&#xff0c;我是水滴~~ 本文主要介绍在各种显卡环境中&#xff0c;如何安装和运行 stable-diffusion-webui&#xff0c;包括&#xff1a;在 NVIDIA 显卡环境上安装、在 AMD 显卡环境上安装、在集显或小于 4G 显卡环境上安装。 文章目录 在 NVIDIA 显卡环境上安装下载配…

如何在业务代码中优雅使用责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者都包含对另一个接收者…

LLM:RoPE位置编码

论文&#xff1a;https://arxiv.org/pdf/2104.09864.pdf 代码&#xff1a;https://github.com/ZhuiyiTechnology/roformer 发表&#xff1a;2021 绝对位置编码&#xff1a;其常规做法是将位置信息直接加入到输入中&#xff08;在x中注入绝对位置信息&#xff09;。即在计算 q…

mysql原理--锁

1.解决并发事务带来问题的两种基本方式 上一章唠叨了事务并发执行时可能带来的各种问题&#xff0c;并发事务访问相同记录的情况大致可以划分为3种&#xff1a; (1). 读-读 情况&#xff1a;即并发事务相继读取相同的记录。 读取操作本身不会对记录有一毛钱影响&#xff0c;并不…

爬虫笔记(一):实战登录古诗文网站

需求&#xff1a;登录古诗文网站&#xff0c;账号&#xff0b;密码&#xff0b;图形验证码 第一&#xff1a;自己注册一个账号&#xff0b;密码哈 第二&#xff1a;图形验证码&#xff0c;需要一个打码平台&#xff08;充钱&#xff0c;超能力power&#xff01;&#xff09;或…

“GPC爬虫池有用吗?

作为光算科技的独有技术&#xff0c;在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用&#xff0c;就要知道谷歌爬虫这一概念&#xff0c;谷歌作为一个搜索引擎&#xff0c;里面有成百上千亿个网站&#xff0c;对于里面的网站内容&#xff0c;自然不可…