目录
- 关键词
- 平台说明
- 背景
- 一、DCM所处架构位置
- 二、DCM 与其他模块的交互
- 三、DCM 的功能
- 四、DCM的内部子模块
- 4.1 Diagnostic Session Layer (DSL)
- 4.1 DSL 与其他模块的交互
- 4.2 Diagnostic Service Dispatcher (DSD)
- 4.3 Diagnostic Service Processing (DSP)
- 4.4 小结
关键词
嵌入式、C语言、autosar、OS、BSW、UDS、diagnostic
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector , EB |
芯片厂商 | TI 英飞凌 |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
autosar版本 | 4.3.1 |
参考文档 | TechnicalReference_Dcm.pdf AUTOSAR_SRS_DiagnosticLogAndTrace.pdf AUTOSAR_SWS_DiagnosticCommunicationManager.pdf AUTOSAR_SWS_DiagnosticEventManager.pdf AUTOSAR_SWS_FunctionInhibitionManager.pdf- 【14229-1.2.3】,【15765-1.2.3.4】. 【11898】 |
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
缩写 | 描述 |
---|---|
DEM | Diagnostic Event Manager |
DET | Development Error Tracer |
DDM | Diagnostic Data Modifier |
DCM | Diagnostic Communication Manager |
DID | Data Identifier |
SID | Server Identifier |
DDID | Dynamic DID |
RID | Routine Identifier |
PID | Parameter Identifier |
NRC | Negative Response Code |
OSI | open systems interconnection |
DSD | Diagostic Service Dispatcher (submodule of the DCM module) |
DSL | Diagnostic Session Layer (submodule of the DCM module) |
DSP | Diagnostic Service Processing (submodule of the DCM module) |
DTC | Diagnostic Trouble Codes |
背景
本文仅针对CAN 总线,不包含OBD相关内容。
一、DCM所处架构位置
DCM 处于服务层。
二、DCM 与其他模块的交互
三、DCM 的功能
Diagnostic Communication Manager (DCM),独立与网络层之上,作为诊断服务和车辆网络(CAN,LIN,Flex Ray)之间的中介,为诊断服务提供通用的API。如上面第二节的图所秒速的,与多个其他BSW模块和ASWC都有交互,主要有以下几大功能:
- 1.根据请求的SID,在ASWC中进行相应的代码调用,如0x22,0x2E,0x23等。
- 2.控制诊断会话状态,通过0x10服务。
- 3.控制请求ComM控制通信状态例如在非默认会话时为ComM_DCM_ActiveDiagnostic,默认会话时为ComM_DCM_InactiveDiagnostic.
- 4.控制BswM的状态。例如0x11 请求复位,0x85控制DTC设置,0x86事件响应,
四、DCM的内部子模块
由于DCM干的活儿太杂乱了,于是将DCM的内部分为了三个子模块,分别是DSL,DSD,DSP.
Diagnostic Session Layer (DSL)
DSL子模块确保有关诊断请求和响应的数据流,监督和保证诊断协议定时,管理诊断状态(特别是诊断会话和安全性)。
Diagnostic Service Dispatcher (DSD)
DSD子模块处理诊断数据流:
1.通过网络接收新的诊断请求并将其转发给数据处理器。
2.当数据处理器(如DSP子模块)触发时,通过网络发送诊断响应。
Diagnostic Service Processing (DSP)
DSP子模块处理实际的诊断服务(分别为子服务)请求。
三个子模块之间的关系概览如下图所示:
4.1 Diagnostic Session Layer (DSL)
DSL 的会话处理和与应用层的请求及相应遵循ISO 14229 -1 14229 - 3 的规范。
4.1 DSL 与其他模块的交互
如第三节图中所示:
与PduR模块交互:
PduR向DSL传入诊断请求数据。
DSL向PduR输出诊断响应。
与DSD子模块交互:
DSL通知DSD 数据接入请求,DSL提供数据给DSD。
DSD向DSL输出诊断响应。
与ComM交互:
DSL保证ComM所需的通信行为。
4.2 Diagnostic Service Dispatcher (DSD)
DSD子模块负责检查传入诊断请求的有效性(诊断会话/安全访问级别/应用程序权限的验证),并跟踪服务请求执行的进度。说白了就是子模块用于处理有效的请求,拒绝无效的请求:
- 接收请求消息并发送正响应消息。
- 接收请求消息并抑制正响应。
- 接收请求消息并抑制负面响应.。
- 接收请求消息并发送否定响应消息。
- 当没有相应的请求时,发送一个正响应消息。
- 分段响应
4.3 Diagnostic Service Processing (DSP)
用于在接收到DSD的请求时,分析收到的请求消息,检查消息格式和是否支持该服务,与DEM ASWC或者其他BSW模块交互以完成请求的动作,组织结果并响应。
4.4 小结
日常使用和开发中其实不需要去深究DSL DSD DSP,只需要知道如何实现 诊断服务就行,只有排查一些bug才需要深入了解。
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<