【车载开发系列】Autosar DCM模块配置

【车载开发系列】Autosar DCM模块配置

一.DCM的概念

DCM是Diagnostic Communication Manager的缩写。它是Autosar基本的软件模块,它提供了用于诊断服务的通用API。
DCM模块负责接收并响应诊断仪的数据请求。
总体来说DCM模块主要是实现UDS和OBD诊断服务的实现,但是DCM跟其他模块的交互比较频繁,需要了解诊断服务的机制需要其他模块配合,比如BswM、DEM、EcuM以及SWC等

二.DCM模块组成

DCM模块由三个子模块组成:DSL DSD DSP组成。
DSL:Diagnostic Session Layer,DSL模块负责确认诊断数据流的请求与响应。确保诊断计时以及诊断状态的切换。
DSD: Diagnostic Service Dispatcher,DSD负责接收网络上的诊断请求,并转发到对应的数据处理模块。接收响应数据并将数据传递给DSL模块,在由DSL模块发送到网路。
DSP:Diagnostic Service Processing,DSP负责处理诊断服务请求。

三.DCM模块的作用

DCM模块负责诊断数据流以及诊断状态的管理。并且检查请求的服务是否在当前的会话和安全等级中支持,尤其是诊断会话和安全状态。
此外,Dcm模块还会根据诊断状态检查是否支持诊断服务请求以及是否可以在当前会话中执行该服务。

四.OBD与UDS区别

DCM是服务的形式响应诊断仪的数据请求的。DCM支持UDS(14229-1)和OBD-II(15765-4)的全部服务。
说到OBD总会要问OBD与UDS的关联。OBD是在15031-5中定义的排放相关的服务,UDS是14229-1中定义的通用服务。两者都依赖15765-2中定义的网络层和14229-2中定义的会话层,因此在一个ECU中是可以共存OBD与UDS的,两者各司其职。

五.DSL模块介绍

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()两个函数分别用于获取当前的安全等级和设置安全等级。

六.DSD模块介绍

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。最后检查数据的长度。

2.汇总响应数据

当DSP模块完成诊断请求处理后,DSD负责将整理响应数据。并发送至DSL。
DSD模块将服务标识符(SID)(如果是负反馈,则为0x7F)和响应的数据流添加至“Dcm_MsgContextType”。然后DSD将其传送至缓冲区,并在缓冲区的第一个字节添加SID。
对于配置而言,DSD主要是配置所需要实现的服务,以及服务所支持的session以及服执行的安全等级。

七.DSP模块介绍

DSP的全称是Diagnostic Service Processing诊断服务处理进程。DSP用于实现不同服务的处理,当接收到DSD请求处理诊断服务,然后在DSP当中进行处理。

1.DSP的处理过程

1、分析接收的请求信息,调用不同的诊断服务实现函数
2、检查格式以及是否支持所寻址的子功能;3、获取数据或者调用DEM、SWC或者其他BSW模块的接口。比如0x22和0x2E服务需要调用SWC的数据接口进行读写;0x28需要调用BswM的逻辑实现关闭不同的CAN报文;0x19服务需要调用DEM模块获取快照数据和扩展数据。
4、汇总响应数据。

2.DSP的配置项

DSP模块配置项包括了DID的实现和安全等级的实现,以及Session的实现。
1.DID的实现,包括DcmDspData用于配置DID的数据类型,数据长度,以及接口类型;DcmDspDidInfo用于配置DID的读写功能;DcmDspDids用于汇总DcmDspDidInfo和DcmDspData,并且添加DID value。
2.安全等级的实现,包括种子和秘钥的位数、最大的错误访问次数,以及时间参数。
3.Session的配置,包括Session的等级,Session是否支持跳转至Boot,以及时间参数P2 ServeMax和P2* ServeMax。

猜你喜欢

转载自blog.csdn.net/Last_Impression/article/details/130936731
DCM