AUTOSAR诊断协议栈:DCM和DEM两个模块

详细信息请参考:AUTOSAR_SWS_DiagnosticCommunicationManager.pdf

DCM:Diagnostic Communication Manager

AUTOSAR基本软件模块Dcm(诊断通信管理器)的功能,API和配置。 Dcm模块提供了用于诊断服务的通用API。 在开发,制造或维修过程中,外部诊断工具会使用Dcm模块的功能。

Dcm模块可确保诊断数据流并管理诊断状态,尤其是诊断会话和安全状态。 此外,Dcm模块还会根据诊断状态检查是否支持诊断服务请求以及是否可以在当前会话中执行该服务。Dcm模块提供下图OSI的第5至7层。

DCM在AUTOSAR架构中的位置:

Position of the Dcm module in AUTOSAR Architecture

DCM模块共3个子模块:

1. DSL:Diagnostic Session Layer (submodule of the Dcm module)

诊断会话层(DSL)子模块:DSL子模块确保有关诊断请求和响应的数据流,监督和保证诊断协议定时并管理诊断状态(尤其是诊断会话和安全性)。

2. DSD:Diagnostic Service Dispatcher (submodule of the Dcm module)

诊断服务调度程序(DSD)子模块:DSD子模块处理诊断数据流。子模块:
–通过网络接收新的诊断请求,并将其转发到数据处理器。
–由数据处理器(例如,DSP子模块)触发时,通过网络传输诊断响应。

3. DSP:Diagnostic Service Processing (submodule of the Dcm module)

诊断服务处理(DSP)子模块:DSP子模块处理实际的诊断服务(分别为子服务)请求。

Possible interaction between the submodules in the DCM

进一步介绍三个子模块:

DSL(Diagnostic Session layer)

DSL用于处理诊断数据请求和响应的数据流;监控和确保诊断请求和响应的时序。

1.处理诊断请求

当收到诊断请求时,PDUR调用Dcm_StartOfReception()和Dcm_CopyRxData()函数将收到的诊断请求数据放置在DCM模块的Buffer中,然后PDUR调用Dcm_TpTxConfirmation()函数通知Dcm模块接收到了新的诊断请求。

2. 处理诊断响应

当需要响应诊断请求时,DSL模块通过调用PduR_DcmTransimit()和Dcm_CopyTxData()将数据传递至PDUR模块,其中PduR_DcmTransimit()函数只是传递长度信息、地址信息,数据是通过Dcm_CopyTxData()函数传递至PDUR模块,当数据传输成功后,PDUR模块通过Dcm_TpTxConfirmation()函数告知DCM数据接收成功。

3. 管理安全等级

DSL提供Dcm_GetSecurityLevel()、DslInternal_SetSecurityLevel()两个函数分别用于获取当前的安全等级和设置安全等级。

对于配置层面而言,DSL菜单主要是配置诊断帧,包括物理寻址和功能寻址,单次通信的最大Buffer,以及时间参数,包括回复0x78的时间和为了防止诊断服务异常,允许0x78的最大次数等。

DSD(Diagnostic Service Dispatcher)

DSD模块负责检查诊断请求的有效性(诊断会话、安全访问级别、应用程序权限的验证),并跟踪服务请求执行的进度。

1.检查诊断服务

当DSL接收到新的诊断请求,DSL通过内部接口通知DSD,如图所示。DSD调用Dcm_GetSesCtrlType()、Dcm_GetSecurityLevel()获取当前的Session和安全等级,DSD模块会在当前Session的“Service Identifier Table”检查诊断请求SID是否在其中,如果不在table中,DSD会发送NRC 0x7F,如果诊断服务支持,但当前Session不支持该子服务,DSD会发送NRC 0x7E;然后检查当前安全等级是否满足条件,如果当前安全等级不支持该诊断请求,DSD会发送NRC 0x33。最后检查数据的长度。

DSL与DSD的交互

2.汇总响应数据

当DSP模块完成诊断请求处理后,DSD负责将整理响应数据。并发送至DSL。

DSD模块将服务标识符(SID)(如果是负反馈,则为0x7F)和响应的数据流添加至“Dcm_MsgContextType”。然后DSD将其传送至缓冲区,并在缓冲区的第一个字节添加SID。

对于配置而言,DSD主要是配置所需要实现的服务,以及服务所支持的session以及服执行的安全等级。

DSP(Diagnostic Service Processing)

DSP用于实现不同服务的处理,当接收到DSD请求处理诊断服务,DSP的处理过程如下:

1、分析接收的请求信息,调用不同的诊断服务实现函数;

2、检查格式以及是否支持所寻址的子功能;

3、获取数据或者调用DEM、SWC或者其他BSW模块的接口。如图4所示。比如0x22和0x2E服务需要调用SWC的数据接口进行读写;0x28需要调用BswM的逻辑实现关闭不同的CAN报文;0x19服务需要调用DEM模块获取快照数据和扩展数据。

4、汇总响应数据。

DSP对外的API

对于配置而言,DSP模块配置项比较杂,比如:

1.DID的实现,包括DcmDspData用于配置DID的数据类型,数据长度,以及接口类型;DcmDspDidInfo用于配置DID的读写功能;DcmDspDids用于汇总DcmDspDidInfo和DcmDspData,并且添加DID value。

2.安全等级的实现,包括种子和秘钥的位数、最大的错误访问次数,以及时间参数。

3.Session的配置,包括Session的等级,Session是否支持跳转至Boot,以及时间参数P2 ServeMax和P2* ServeMax。

总体来讲DCM模块主要是实现UDS和OBD诊断服务的实现,但是DCM跟其他模块的交互比较频繁,需要了解诊断服务的机制需要其他模块配合,比如BswM、DEM、EcuM以及SWC等。

AUTOSAR DCM相关推荐

  1. Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)

    背景 之前简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置DSD子模块,并实现客户的需求. DSP子模块配置 1.DSP子模 ...

  2. Autosar Dcm模块介绍

    DCM模块介绍 诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话. ...

  3. uds下载服务流程图_UDS诊断全集,干货分享

    UDS诊断是Unified Diagnostic Services的全称,其标准是ISO14229,ISO15765,文末可获取链接. 其中: ISO14229-1定义了各诊断服务的格式,以及一些通用 ...

  4. 《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

    目录 0 基础"开胃菜"(共20+篇) 0.1 CANFD和Classic CAN介绍 0.2 UDS/OBD诊断网络层/传输层介绍 0.3 常用UDS诊断服务介绍 0.4 所有O ...

  5. AUTOSAR从入门到精通100讲(四十九)-AUTOSAR 通信服务Dcm篇-Dcm概念及DSL详解与实战案例

    Dcm概念及DSL详解 正文 1. Introduction and functional overview 诊断通信管理(Diagnostic Communication Manager, DCM) ...

  6. 《AUTOSAR谱系分解(ETAS工具链)》之DCM的子模块DSL、DSD和DSP

    <AUTOSAR谱系分解(ETAS工具链)>之DCM的子模块DSL.DSD和DSP 文章目录 <AUTOSAR谱系分解(ETAS工具链)>之DCM的子模块DSL.DSD和DSP ...

  7. AUTOSAR从入门到精通100讲(二十二)-AUTOSAR通信篇—CANTP模块

    1  CANTP的位置和作用 CanTp是PduR和CANIf模块之间的模块,如图1所示.CANTp模块的主要作用是对CAN I-PDU进行分段和重新组装,使得I-PDU的长度不大于8个字节,对CAN ...

  8. AUTOSAR从入门到精通100讲(二十三)-AUTOSAR通信篇—PduR模块

    今天介绍COM的下层模块:PduR-协议数据单元路由. 1   PduR的位置和作用 PDU Router(下文简称"PduR")模块位于AUTOSAR通讯架构的中间位置,其上层主 ...

  9. AUTOSAR从入门到精通100讲(四十四)-AUTOSAR 通信服务-PDU Router

    本文将从PDUR模块功能介绍,关键概念理解,功能详细设计,PDUR模块和其他模块交互,PDUR模块配置五个方面详细介绍PDUR模块功能. 1.PDUR模块功能介绍 PDUR模块在AUTOSAR架构中属 ...

  10. AUTOSAR从入门到精通100讲(三十三)-AutoSar架构中的诊断事件管理

    Dem在AutoSar架构中的角色和位置 Dem(Diagnostic Event Manager)诊断事件管理,属于Autosar BSW(Basic Software)中的系统服务,在整个架构中所 ...

最新文章

  1. VMWare中CentOS7 设置固定IP且能够访问外网
  2. 使用 Python 和 OpenCV 构建 SET 求解器
  3. xunsearch mysql,如何使用xunsearch
  4. Linux 删除文件夹和文件的命令(强制删除包括非空文件)
  5. 被丧心病狂的验证码虐过,来感受一下交互体验很好的十款吧
  6. SAP系统权限管理及参数设置
  7. 数字图像处理——中值滤波及其改进算法
  8. 我们的实践: 400万全行业动态事理图谱Demo
  9. 【LeetCode笔记】399. 除法求值(Java、图)
  10. php $rs1- gt eof,PHP_PHP速成大法,简单介绍一下PHP的语法 1、嵌 - phpStudy
  11. Spark集群资源如何分配
  12. 函数无法识别_Halcon OCR识别
  13. 大数据技术将是传统企业创新的原点
  14. python数独游戏源代码_Python数独游戏源代码
  15. php动态万年历模块,php如何实现万年历的开发(每日一课真是非常有效率)
  16. 斐波那契数列 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
  17. java内存图解_java内存模型及GC原理 和 图解JVM在内存中申请对象及垃圾回收流程...
  18. 点餐APP 冲刺二总结
  19. 常用笔记啊(持续更新)
  20. 2022/11/21-11/26周报

热门文章

  1. 蓝桥杯2020年第十届C/C++省赛A组第4题-迷宫(bfs)
  2. 匿名游走 Anonymous Walk
  3. 浏览器下载集合(最新版本)
  4. 观影笔记 |独行月球
  5. 跟我一起学python3(一)
  6. Entry name AndroidManifest.xml collided
  7. 关于匿名者组织(Anonymous),你都知道哪些?
  8. HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)
  9. Python课程设计《网络爬虫-中国大学排名课程设计》
  10. CANoe如何查看总线负载率?