[CP_AUTOSAR]_通信服务_DCM模块(一)


  在前面 《分层软件架构_内容详解》文中,简要介绍了CP_AUTOSAR 通讯服务(Communication Services)所包含的内容块,本文将对通信服务中的DCM(诊断通信模块)的功能、接口函数(API)和 Dcm 配置进行展开介绍。

1、DCM 功能介绍

  DCM (Diagnostic Communication Manager,诊断通信管理)模块在 AUTOSAR软件分层架构中处于通信服务层(Communication Services),在 PDU Router 模块的上方,具体位置见下图中黄框部分。
  DCM 模块不依赖于网络,所有的网络相关功能都在 DCM 模块之外处理完成,而 PduR 模块可以提供不依赖于网络的一些接口给 DCM 模块。DCM 模块的主要功能如下:
  1、负责处理来自于诊断工具的诊断报文(遵循 UDS 服务和 OBD服务协议规范);
  2、处理诊断会话、管理诊断服务的安全等级;
  3、OTA功能;
在这里插入图片描述
  在软件开发过程、ECU 制造过程以及售后服务中,用户可借助于外部诊断工具通过 DCM 模块实现一些指定的诊断服务,DCM 模块支持UDS(Unified Diagnostic Services)和 OBD(On-Board Diagnostics)协议。外部诊断工具和 AUTOSAR 应用程序之间的通信见下图。
在这里插入图片描述

2、DCM 模块交互图

  DCM 模块与底层软件模块、SW-Cs之间的交互图,如下图所示:
在这里插入图片描述
  与 DEM 模块之间的关系:DEM 模块提供获取/清除故障的函数(UDS中0x19服务/0x14服务),DCM 模块对上位机的请求进行响应;
  与 PduR 模块之间的关系:PduR 模块提供发送和接收诊断数据的函数;
  与 ComM 模块之间的关系:ComM 模块提供给 DCM 模块显示诊断通信状态(active/inactive)的函数,DCM 模块提供处理通信请求(Full-/ Silent-/ No-Communication)的功能。而且,ComM 模块请求开启和关闭诊断通信,DCM 模块应提供对应的功能;
  与 SW-C和RTE 模块之间的关系:DCM 模块分析接收到的诊断请求数据,处理与诊断通信相关的功能(如诊断协议和时序)。基于对请求数据流的分析,DCM 模块将例程或者 IO 控制执行交给 SW-Cs;
  与 BswM 模块之间的关系:如果 DCM 模块初始化为从 bootloader 中跳转的顺序,那么 DCM 模块需要通知 BswM 模块应用程序已经被更新了。DCM 模块通知 BswM 模块通讯模式的改变。
  与 Crypto Service Manager(Csm) 模块之间的关系:Csm(加密服务模块)提供加密算法,保证授权类的计算;
  与 Key Manager (KeyM) 模块之间的关系:KeyM 管理模块支持证书处理和APIs,来实现一些诊断所需要的证书;

3、功能详述

3.1、Security Events

  [SWS_Dcm_01589]:如果安全事件汇报功能(DcmEnableSecurityEventReporting = true)开启,相应的安全事件应该通过定义在 AUTOSAR_SWS_BSWGeneral 中的接口函数来汇报给 IdsM。
  [SWS_Dcm_01589],DCM 模块的安全事件,在下表中出现的UDS 诊断服务的介绍可以参考文档《UDS诊断服务总列表》

Name描述ID
DIAG_SEV_WRITE_INVALID_DATA上位机使用 0x2E 服务写入无效信息;23
DIAG_SEV_SECURITY_ACCESS_DENIED上位机发送了没有满足ECU安全等级需求的服务,应该应答 NRC 0x33(securityAccessDenied);24
DIAG_SEV_COMMUNICATION_CONTROL_SWITCHED_OFF上位机使用 0x28 (通讯控制服务)关闭了 ECU 通讯;25
DIAG_SEV_SERVICE_NOT_SUPPORTED诊断服务请求不支持(NRC 0x11 serviceNotSupported),或者是在当前会话下不支持(NRC 0x7F serviceNotSupportedInActiveSession);26
DIAG_SEV_SUBFUNCTION_NOT_SUPPORTED诊断服务不支持所请求的子函数(subfunction);27
DIAG_SEV_INCORRECT_MESSAGE_LENGTH_OR_FORMAT请求消息不满足指定的长度或者参数格式(NRC 0x13 incorrectMessageLengthOrInvalidFormat);28
DIAG_SEV_REQUEST_SEQUENCE_ERROR接收的诊断服务顺序错误(NRC 0x24 incorrectMessageLengthOrInvalidFormat);29
DIAG_SEV_REQUEST_OUT_OF_RANGE诊断请求的参数超出允许范围(NRC 0x31 requestOutOfRange)30
DIAG_SEV_REQUESTED_ACTIONS_REQUIRES_AUTHENTICATION收到诊断请求,但未给出执行此服务所需的身份验证。NRC 0x34 authenticationRequired31
DIAG_SEV_SECURITY_ACCESS_NUMBER_OF_ATTEMPTS_EXCEEDED安全访问失败并且无效的访问次数超出了范围(NRC 0x36 exceedNumberOfAttempts)32
DIAG_SEV_SECURITY_ACCESS_INVALID_KEY由于上位机发送了无效的密钥给 ECU 导致安全访问失败(NRC 0x35 invalidKey)33
DIAG_SEV_SECURITY_ACCESS_REQUIRED_TIME_DELAY_NOT_EXPIRED在延时时间过期之前,尝试解锁ECU(NRC 0x37 requiredTimeDelayNotExpired)34
DIAG_SEV_NUMBER_OF_FAILED_AUTHENTICATION_ATTEMPTS_EXCEEDED授权尝试的次数35
DIAG_SEV_CERTIFICATE_FAILURE上位机尝试使用无效的证书进行身份验证36
DIAG_SEV_ECU_UNLOCK_SUCCESSFUL成功解锁 ECU(通过 0x27 服务)37
DIAG_SEV_AUTHENTICATION_SUCCESSFUL成功授权(0x29 服务)38
DIAG_SEV_CLEAR_DTC_SUCCESSFUL0x14 服务清除 DTC 信息39
DIAG_SEV_ECU_RESET0x11 服务重启 ECU40
DIAG_SEV_WRITE_DATA0x2E 服务清除 DTC 信息41
DIAG_SEV_REQUEST_DOWNLOAD0x14 服务清除 DTC 信息42
DIAG_SEV_DTC_SETTING_SWITCHED_OFF0x14 服务清除 DTC 信息43

3.2、Error Classification

   该部分描述了 DCM 模块如何处理在生命周期内发生的错误类别。
   [SWS_Dcm_00044]:所有的错误类型的值都应该是独一无二的。
   [SWS_Dcm_00040]:

3.2.1、Development Errors

   DCM 模块可以检测出以下这些错误和异常,其取决于编译版本(开发/生产模式);

错误类型相关的错误码错误值
DCM 模块正在被一个带有无效输入参数值调用,或者是DCM 模块被一个函数调用并且这个函数返回了无效的输出参数值;DCM_E_INVALID_VALUE0x02
接口返回值超出范围DCM_E_INVALID_VALUE0x02
内部:DCM 模块未初始化DCM_E_INVALID_VALUE0x05
DCM 模块 API 函数带有无效的输入参数DCM_E_INVALID_VALUE0x06
DCM 模块 API 服务使用空指针作为参数DCM_E_INVALID_VALUE0x07
DCM 模块安装失效DCM_E_INVALID_VALUE0x08
存储 ProgConditions 失效DCM_E_INVALID_VALUE0x09

3.2.2、Runtime Errors

   DCM 模块可以检测出以下这些错误和异常,其取决于编译版本(开发/生产模式);

错误类型相关的错误码错误值
接口:与另一个模块交互过程中发生超时;DCM_E_INTERFACE_TIMEOUT0x01
接口:与另一个模块(APP/DEM/PduR等)交互过程中,DCM 模块检测缓存的边界失败了;DCM_E_INTERFACE_BUFFER_OVERFLOW0x03

   更多内容可点击返回参考 CP_AUTOSAR_总目录

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: my_autosar_project-master是指一个名为my_autosar_project的Autosar项目的主文件夹(也称为主分支),其托管在Github代码托管平台上。Autosar是一种面向电子控制单元(ECU)的开放式软件架构,用于高级驾驶辅助系统(ADAS)和自动驾驶(AV)系统。my_autosar_project是一个使用Autosar软件开发的项目,目的是创建一个可在汽车行业中使用的可靠软件。 据我所知,该项目具有良好的文档,可以通过Github页面查看和下载。在该页面上还可以找到包含项目所有代码和分类版本的README文件,以及一些有关如何使用代码、如何贡献代码和如何提出问题的说明。此外,该项目似乎已被开源社区广泛接受,并且有很多开发者已经为该项目做出了贡献。 总的来说,my_autosar_project-master是一个基于Autosar架构的开源项目,旨在为汽车行业提供一种可靠的软件解决方案。该项目有很好的文档,并且收到了广泛的开源社区支持,已经吸引了众多开发者的贡献。 ### 回答2: my_autosar_project-master是一个基于AUTOSARAutomotive Open System Architecture)标准的项目,旨在提高汽车系统软件的可靠性、可复用性和可维护性。该项目使用C编程语言实现,包含了许多AUTOSAR规范中的接口和功能。它可以帮助汽车制造商、供应商和开发人员在设计、开发和测试汽车电子控制系统时更好地遵循AUTOSAR标准,同时提高他们的工作效率。项目中还包含了一些示例代码和说明文档,可以帮助开发者更快地理解和使用该项目。该项目需要在AUTOSAR的开发环境中运行,例如Vector CANoe或dSPACE SystemDesk。总之,my_autosar_project-master是一个优秀的汽车软件开发项目,有助于提高汽车控制系统的质量和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值