转载自AUTOSAR DCM 吐血笔记(1)_huihuige092的博客-CSDN博客
1 诊断通信管理器(DCM)概述
DCM模块提供了用于诊断服务的通用API。在开发,制造服务期间,外部诊断工具会使用DCM模块的功能。 DCM模块可确保诊断数据流并管理诊断状态,尤其是诊断会话和安全状态。此外,DCM模块会根据诊断状态检查是否支持诊断服务请求以及该服务是否可以在当前会话中执行。
在AUTOSAR体系结构中,DCM位于通讯中服务(服务层),其处理不同的诊断协议(包含OBD(ISO 15031-5)协议和增强诊断UDS协议(ISO 14229-1)),并为AUTOSAR-RTE提供所有诊断服务(ISO 14229-1和ISO 15031-5)接口。
在通信过程中,DCM从PDUR收到诊断消息。在DCM内部,将对诊断消息进行处理,检查并在处理过程中将其传递到AUTOSAR SW组件。根据诊断服务ID,实现对相应应用程序的调用。 DCM是需要独立于具体的网络总线,这是通过访问PDUR提供的独立于网络的接口实现的(PDUR内部处理处理CAN,LIN,FlexRay等总线类型)。
2 DCM模块组成
DCM模块,由以下3个子模块组成:
D1agnost1c会话层(DSL):
DSL子模块可确保有关诊断请求和响应的数据流,为诊断协议时序提供监督和保证,并管理诊断状态(尤其是诊断会话和安全性访问)。它用于:
->会话处理(如ISO 14229-1 / ISO 15765-3所规定)。
->应用层定时处理(如ISO 14229-1 / ISO 15765-3所规定)。
->处理特定请求的响应行为(ISO 14229-1 / ISO 15765-3中要求)。
诊断服务调度程序(DSD):
DSD子模块处理诊断数据流。子模块通过网络接收新的诊断请求并将其转发到数据处理器,当数据处理器(例如DSP子模块)触发DSD发送时,其通过网络传输诊断响应。 DSD子模块应仅处理有效请求,并拒绝无效请求。
诊断服务处理(DSP):
DSP子模块处理实际的诊断服务(包括各个子服务)请求。当从DSD子模块接收到要求DSP子模块处理诊断服务请求的功能调用时,DSP始终执行以下基本操作:处理步骤。
1)分析收到的请求消息,
2)检查格式以及是否支持所寻址的子功能,
3)在DEM,SW-C上获取数据或执行所需的功能调用
4)组装响应消息
3 诊断会话:
诊断会话是ECU与诊断工具之间进行通信的基础。在测试仪“诊断”期间,正在被分析的ECU处于特定的会话层。上在 下面是常见的诊断会话类型:
1)默认会话。
2)扩展诊断会话。
3)ECU编程会话。
其状态转换图如下:
钥匙点火后,所有ECU将切换到默认诊断会话,然后接收到来自诊断工具的请求后,ECU将切换到扩展诊断会话。此外,在从诊断工具接收到ECU编程会话的请求之后,它将切换到ECU编程会话。