AUTOSAR_SWS_DiagnosticCommunicationManager-1

7 Functional specification

7.1 Error Classification

本节描述了Dcm模块如何处理在生命周期中可能发生的几类错误。
诊断通信错误通过NRCs直接在ISO协议实现中处理。
所有的错误码都由DCM模块定义,并且具有唯一性。

7.1.1 Development Errors

错误类型错误码值[hex]
模块间交互出现超时DCM_E_INTERFACE_TIMEOUT0x01
返回值超出范围DCM_E_INTERFACE_RETURN_VALUE0x02
模块间交互时,Dcm检查到buffer溢出DCM_E_INTERFACE_BUFFER_OVERFLOW0x03
Dcm未初始化DCM_E_UNINIT0x05
Dcm的API函数的参数无效DCM_E_PARAM0x06
Dcm的API函数的参数有NULL指针DCM_E_PARAM_POINTER0x07
Dcm初始化失败DCM_E_INIT_FAILED0x08
编程条件储存失败
※Dcm_SetProgConditions相关
DCM_E_SET_PROG_CONDITIONS_FAIL0x09

7.1.2 Runtime Errors

错误类型错误码值[hex]
Dcm正在调用的函数的参数值无效
或者Dcm调用的函数返回的返回值无效或者指针参数值无效
DCM_E_INTERFACE_TIMEOUT0x01

7.2 General design elements

7.2.1 Submodules within the Dcm module

  • Dcm包含以下几个子模块:
    • Diagnostic Session Layer (DSL) submodule:
      DSL模块负责管理诊断请求和响应的数据流,监控和管理协议的timing,同时管理诊断状态,如会话控制和安全等级。
      主要交互模块有:PduRDcm—DSDDcm—DSPComM
    • Diagnostic Service Dispatcher (DSD) submodule:
      • DSD子模块从网络上接收到一个新的诊断请求,并将其转发给数据处理器。数据处理器通常是诊断服务处理(DSP)子模块,它负责实际的诊断服务处理。
      • 当数据处理器(例如DSP子模块)触发时,DSD子模块会在网络上传输诊断响应。这意味着,DSP子模块完成诊断请求的处理后,会通知DSD子模块发送响应消息 。
    • Diagnostic Service Processing (DSP) submodule:
      DSP模块负责执行实际的诊断服务和子服务。
      Alt

7.2.2 Negative Response Code (NRC)

  1. UDS服务和OBD服务的标准协议定义的负响应代码(NRCs),用在Dcm与其他BSW模块以及SW-Cs的接口交互的过程中。
  2. 这些NRCs在数据类型Dcm_NegativeResponseCodeType中定义。
  3. NRC的传输顺序应符合ISO14229-1 [2]中描述的顺序。

常见的NRC定义如下:

值[hex]错误类型注释
0x10General Reject请求被一般性拒绝,可能是由于服务无法在当前条件下执行。
0x11Service Not Supported请求的服务不被支持。
0x12Sub-Function Not Supported请求的子功能不被支持。
0x13Incorrect Message Length or Invalid Format消息长度不正确或格式无效。
0x22Conditions Not Correct当前条件不允许执行请求的操作。
0x31Request Out of Range请求超出范围。
0x33Security Access Denied安全访问被拒绝。
0x7ESub-Function Not Supported in Active Session当前会话中不支持请求的子功能。
0x7FService Not Supported in Active Session当前会话中不支持请求的服务。

7.2.3 Non-volatile information

  1. DCM应检查非易失性存储管理模块 (NvM) 的读取是否正确。如果非易失性信息未能正确读取,DCM应执行默认操作。默认操作的内容在非易失性数据的章节中记载。
  2. 如果DCM取消了一个需要访问非易失性存储的服务,则应调用 NvM_CancelJobs()
    ※服务的取消可能是由于达到最大RCRRP NRC(0x78)的数量或协议抢占。

7.2.4 Types

Dcm模块支持的数据类型:
boolean
uint8
uint16
uint32
sint8
sint16
sint32
uint8[n]
※uint8[n]类型(在不同的实现中)可以映射为固定长度或可变长度的数据类型。
DcmDspData
DCM应当将非整型数据类型(例如uint8[n])处理为与其大小匹配的整型数据类型,或者在DcmDspDataEndianness配置为OPAQUE时,仅将其当成n个字节处理。
例:有一个数据uint8[2]的数据内容为{ 0x12, 0x34 },在DcmDspDataEndianness没有配置为OPAQUE时,Dcm将按照大小端的配置对其进行储存,如果配置为BIG_ENDIAN,数据将被转化为一个uint16的数据0x1234储存,如果配置为LITTLE_ENDIAN,则数据将被转化为一个uint16的数据0x3412储存;反之,如果被配置为OPAQUE,那个Dcm在处理时会严格保证其数据格式,将其当作uint8[2]的数组储存,不转换其中的数据。

DcmDspDataEndianness的配置对于有符号的数据依然有效(地址由低向高增长,低地址在前):

  • 大端模式下最高有效字节(包含符号位)仍然存储在最低内存地址处。符号位不变;
  • 小端模式下将最低有效字节存储在最低内存地址处,符号位保持在最高有效字节中。

DcmDspDataEndianness

7.2.4.1 Atomic types overview

基本数据类型一览

ATOMIC
Date bit size1(字节对齐)8163281632
DcmDspDidDataTypeBOOLEANUINT8UINT16UINT32SINT8SINT16SINT32
DcmDspDataEndiannessN/AN/ALE,BELE,BEN/ALE,BELE,BE
DcmDspDataUsePortS/R, I/O
Resulting ImplTypebooleanUINT8UINT16UINT32SINT8SINT16SINT32
7.2.4.2 Data array types overview

数组类型一览

Field(Static)
Date bit size8-8*N16-16*N32-32*N8-8*N
DcmDspDataByteSizeAnyAny必须为2的倍数必须为2的倍数必须为4的倍数必须为4的倍数Any
DcmDspDidDataTypeUINT8_NUINT16_NUINT32_NUINT8_DYN
DcmDspDataEndiannessN/ALE,BEN/A
DcmDspDataUsePortS/R, C/S, FNC, NVMS/RC/S, FNC
Resulting ImplTypeDataArrayTypeUint8_(Data)DataArrayTypeSint8_(Data)DataArrayTypeUint16_(Data)DataArrayTypeSint16_(Data)DataArrayTypeUint32_(Data)DataArrayTypeSint32_(Data)DataArrayTypeUint8_(Data)
7.2.4.3 Data types constraints

如果存在7.2.4.2中所记的数组类型DcmDspDataType(UINT8_N等),则应配置DcmDspDataByteSize(参考数组类型表格)。
DcmDspDataType配置为UINT16_N或者SINT16时,DcmDspDataByteSize如果超过2则只能只能是2倍数;
DcmDspDataType配置为UINT32_N或者SINT32时,DcmDspDataByteSize如果超过4则只能只能是4倍数;
DcmDspDataType
DcmDspDataByteSize
如果DcmDspDataUsePort被配置为USE_DATA_SYNCH_CLIENT_SERVERUSE_DATA_ASYNCH_CLIENT_SERVERUSE_DATA_ASYNCH_CLIENT_SERVER_ERROR时,则DcmDspDataType应该被配置为UINT8_N或者UINT8_DYN
如果DcmDspDataUsePort被配置为USE_DATA_ASYNCH_FNC_ERRORUSE_DATA_SYNCH_FNCUSE_DATA_ASYNCH_FNC中任一种,则DcmDspDataType应该被配置为UINT8_N或者UINT8_DYN
如果DcmDspDataUsePort被配置为USE_BLOCK_ID,则DcmDspDataType应该被配置为UINT8_N或者UINT8_DYN
如果DcmDspDataUsePort被配置为USE_DATA_SENDER_RECEIVER**、USE_DATA_SENDER_RECEIVER_AS_SERVICE
USE_BLOCK_IDUSE_ECU_SIGNAL时,DcmDspDataType不允许设置为UINT8_DYN
DcmDspDataUsePort
DcmDspDataUsePort
DcmDspDataUsePort

如果配置数组类型DcmDspRoutineSignalType(UINT8_N等),则应配置DcmDspRoutineParameterSize(数组类型的具体大小)。
在配置RID的接受参数时,只有最后一个参数可以被配置为可变长度。
DcmDspRoutineSignalType
DcmDspRoutineSignalType
DcmDspRoutineParameterSize

如果配置了DcmDspPidDataType(排放协议的DID)的类型为数组类型,则需要配置DcmDspPidDataByteSize
DcmDspPidDataType配置为UINT16_N或者SINT16时,DcmDspPidDataByteSize如果超过2则只能只能是2倍数;
DcmDspPidDataType配置为UINT32_N或者SINT32时,DcmDspPidDataByteSize如果超过4则只能只能是4倍数;
DcmDspPidDataType
atp.Status=obsoleteatp.StatusRevisionBegin=4.3.1 代表该项在AUTOSAR的4.3.1版本后将不再使用。

如果DcmDspPidDataUsePort被配置为USE_DATA_SYNCH_FNC,则DcmDspPidDataType应该被配置为UINT8_N;
如果DcmDspPidDataUsePort被配置为USE_DATA_SYNCH_FNC,则DcmDspPidDataType应该被配置为UINT8_N;
DcmDspPidDataUsePort

7.2.4.4 Dcm_OpStatusType

Dcm_MainFunction作为一个主要的控制循环或调度函数,负责管理和执行诊断通信的各种操作,而Dcm_OpStatusType则是在这个过程中传递给操作的一个参数,用来指示上一次操作执行的结果,并且根据这个结果决定本次操作如何进行。

DCM_E_FORCE_RCRRP
DCM_E_PENDING
不再返回
DCM_E_PENDING
Start
首次调用
Dcm_OpStatusType
设置
设置参数OpStatus = DCM_INITIAL
检查返回值
DCM_E_FORCE_RCRRP
DCM_E_PENDING
发送RCR-RP请求
(NRC 0x78)
等待发送成功确认
在每次
Dcm_MainFunction中调用Dcm_OpStatusType
设置参数OpStatus = DCM_PENDING
收到RCR-RP发送成功的确认
在Dcm_MainFunction中
再次调用Dcm_OpStatusTypede
设置参数OpStatus = DCM_FORCE_RCRRP_OK
End
7.2.4.5 Dcm_SesCtrlType

autosar_sws_timesyncovercan是AUTOSAR标准中定义的基于CAN总线的时间同步服务。 在汽车电子系统中,不同的控制单元(ECU)需要按照统一的时间基准进行操作,以确保各个控制单元之间的协调和同步。autosar_sws_timesyncovercan就是为了满足这个需求而被定义的。 autosar_sws_timesyncovercan使用了CAN总线作为通信的介质,通过CAN总线将时间同步消息发送到各个控制单元。通过时间同步消息,各个控制单元可以获取精确的时间信息,并根据这个时间信息进行各种操作,例如数据传输、事件触发等。 autosar_sws_timesyncovercan实现了基于Master-Slave架构的时间同步机制。其中,Master节点负责发送时间同步消息,而Slave节点则负责接收并进行时间同步。Master-Slave架构确保了整个系统中所有控制单元之间的时间保持一致。 autosar_sws_timesyncovercan定义了不同的时间同步模式,包括周期同步模式和非周期同步模式。周期同步模式适用于需要周期性执行任务的应用场景,而非周期同步模式适用于一次性任务的应用场景。 autosar_sws_timesyncovercan还规定了时间同步消息的格式和传输方式,确保消息的可靠性和准确性。同时,还定义了时间同步相关的接口和API,方便控制单元的开发和集成。 总之,autosar_sws_timesyncovercan是一种以CAN总线为基础的时间同步服务,通过统一的时间基准来协调和同步汽车电子系统中的各个控制单元,实现系统的高效运行和协作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值