《AUTOSAR谱系分解(ETAS工具链)》之Dcm
Dcm
DcmConfigSet
-
DcmDsd
[–DcmDsdServiceTable–]
[—DcmDsdService—]-
DiagnosticSessionControl
-
DcmDsdSidTabFnc
- EXP:ECU Supplier特定组件针对特定服务的回调函数。若未配置此参数,则服务在Dcm内部处理。
-
DcmDsdSidTabServiceId
- 16(0x10)诊断会话控制服务
- EXP:诊断服务ID。
-
DcmDsdSidSubFuncAvail
- EXP:ECU Supplier特定组件针对特定服务的回调函数。若未配置此参数,则服务在Dcm内部处理。
-
DcmDsdSidTabSubfuncAvail
- EXP:诊断服务是否支持子服务。
-
。。。
-
DcmDsdSidTabSecurityLevelRef
- EXP:允许执行服务的安全级别。一个服务允许多个引用。如果没有27服务要求就不选。
-
DcmDsdSidTabSessionLevelRef
- EXP:允许执行服务的会话级别。一个服务允许多个引用。
例如:
DEFAULT_SESSION,PROGRAMMING_SESSION,EXTENDED_DIAGNOSTIC_SESSION,。。。
- EXP:允许执行服务的会话级别。一个服务允许多个引用。
-
EXP:
-
-
DcmDsdService_EcuReset
-
DcmDsdSidTabServiceId
- 17(0x11)控制器复位服务
-
-
DcmDsdService_SecurityAccess
-
DcmDsdSidTabServiceId
- 39(0x27)安全访问服务
-
-
DcmDsdService_CommunicationControl
-
DcmDsdSidTabServiceId
- 40(0x28)通信控制服务
-
-
DcmDsdService_TesterPressent
-
DcmDsdSidTabServiceId
- 62(0x3E)诊断会话保持服务
-
-
DcmDsdService_ControlDTCSetting
-
DcmDsdSidTabServiceId
- 133(0x85)DTC控制服务
-
-
DcmDsdService_ReadyDataByIdentifier
-
DcmDsdSidTabServiceId
- 34(0x22)数据读取服务
-
-
DcmDsdService_WriteDataByIdentifier
-
DcmDsdSidTabServiceId
- 46(0x2E)数据改写服务
-
-
DcmDsdService_ClearDiagnosticInformation
-
DcmDsdSidTabServiceId
- 20(0x14)清除DTC
-
-
DcmDsdService_ReadDTCInformation
-
DcmDsdSidTabServiceId
- 25(0x19)读取DTC
-
-
DcmDsdService_RoutineControl
-
DcmDsdSidTabServiceId
- 49(0x31)例程服务
-
-
EXP:
-
EXP:
-
-
-
DcmDsl
-
DcmDslBuffers
-
EXP:
- EXP:配置诊断缓存区的容器
-
DcmDslBuffer_TX
- EXP:
DcmDslBufferSize:1024,配置诊断缓存区大小
- EXP:
-
DcmDslBuffer_RX
- EXP:
DcmDslBufferSize:1024,配置诊断缓存区大小
- EXP:
-
-
DcmDslCallbackDCMRequestService
-
EXP:
- EXP:StartProtocol通知函数的SWC名称容器
-
DcmDslCallbackDCMRequestService_Safety
-
-
DcmDslDiagResp
-
EXP:
- EXP:配置Pending响应处理容器
-
DcmDslDiagRespMaxNumRespPend
- EXP:
每次请求最大的0x78响应(Pending)数量。
若设置等于0,每次请求发送的Pending将不受限制,直到完成处理。
若设置大于0,每次请求发送的Pending数量大于该值时,Dcm会取消诊断服务的处理并响应NRC10。
- EXP:
-
-
DcmDslProtocol
[–DcmDslProtocolRow–]-
EXP:
- EXP:协议配置容器
-
DcmDslConnection
-
EXP:
DcmDslProtocolRxs:这个容器包含诊断连接中接收通道的配置参数。一般设置功能寻址和物理寻址。
DcmDslProtocolRxAddrType:指定请求的寻址类型,一般在导入新DBC后需要检查一下,如果没有自动更新,需要手动区分出功能寻址与物理寻址,不然可能会导致诊断报文无法接收。
DcmDslProtocolRxPduId:指定具体Dcm接受PDU。一般也会自动更新,但是也需要检查,不然也会导致诊断报文无法接收。
DcmDslProtocolTx:此容器包含诊断连接中发送通道的配置参数。
注意:上面两个配置一般会在导入DBC之后自动更新,用于将Dcm与PDU进行连接。
-
DcmDslProtocolID
- EXP:正在配置的DSL协议的诊断协议类型。一般都是基于UDS的CAN诊断。
-
DcmDslProtocolMaximumResponseSize
- EXP:定义响应消息的最大长度。
-
DcmDslProtocolPriority
- EXP:
协议抢占时使用的协议优先级。高优先级的协议可能会抢占低优先级的协议。数值越低表示协议优先级越高。
- EXP:
-
SendRespPendOnTransToBoot
- EXP:指定ECU在转换到Boot之前是否应该发送RCR-RP response(Pending帧)。
-
TimStrP2ServerAdjust
- EXP:
表示由DCM发起传输到消息实际传输到总线的通信延迟时间,配置后实际的P2Time就是(P2Time - TimStrP2ServerAdjust)。
- EXP:
-
TimStrP2StarServerAdjust
- EXP:
表示由DCM发起传输到消息实际传输到总线的通信延迟时间,配置后实际的P2Time就是(P2Time - TimStrP2ServerAdjust)。
- EXP:
-
DcmDslProtocolRxBufferRef
- EXP:
-
DcmDslProtocolSIDTable
- EXP:
-
DcmDslProtocolTxBufferRef
- EXP:
-
EXP:
-
-
DcmDslCallbackDCMRequestServiceDcmDslServiceRequestManufacturerNotifications
-
DcmDslCallbackDCMRequestService_Safety
- EXP:
-
-
EXP:
-
EXP:
-
-
-
DcmDsp
-
EXP:
-
EXP:
-
-
DcmDspDatas
-
-
DcmDspDataConditionCheckReadFnc
- EXP:Did读取检测条件的函数名。若不为空,DCM接收到Did的读取会调用该函数;反之则不检测。
-
DcmDspDataConditionCheckReadFncUsed
- EXP:决定是否使用条件检测
-
DcmDspDataEndianness
- EXP:定义DID的字节序
-
DcmDspDataFreezeCurrentStateFnc
- EXP:指定Dcm冻结当前IO状态的函数名。一般用于0x2F服务(IOControlByDataIdentifier)。
-
DcmDspDataReadDataLengthFnc
- EXP:指定Dcm读取DID数据的长度的函数名
-
DcmDspDataReadFnc
- EXP:指定Dcm读取数据内容的函数名
-
DcmDspDataResetToDefaultFnc
- EXP:指定Dcm复位当前IO默认状态的函数名
-
DcmDspDataReturnControlToEcuFnc
- EXP:指定Dcm返回IO状态给APP的函数名
-
DcmDspDataShortTermAdjustmentFnc
- EXP:指定Dcm调整IO状态的函数名
-
DcmDspDataSize
- EXP:DID数据的长度。若数据长度可变,该参数就是最大的数据长度
-
DcmDspDataType
- EXP:指定数据类型
-
DcmDspDataUsePort
- EXP:
访问数据的接口类型。
‘USE_DATA_ASYNCH_CLIENT_SERVER’ or ‘USE_DATA_SYNCH_CLIENT_SERVER’:Dcm调用RTE接口;
‘USE_DATA_SYNCH_FNC’ or ‘USE_DATA_ASYNCH_FNC’:Dcm会调用专用的接口(自己实现的接口)
-
DcmDspDataWriteFnc
-
EXP:指定Dcm写数据内容的函数名
-
DcmDspDataBlockIdRef
- EXP:DCM直接访问Nvm block。
-
-
DcmDspDataInfos
-
DcmDspDataFixedLength
- EXP:如果设置为TRUE,Dcm 将直接从配置中使用数据长度参数值。一般都会勾上。
-
DcmDspDataScalingInfoSize
-
EXP:数据伸缩信息的长度。Dcm接收到0x24请求时输出该值。
-
DcmDspDids
-
-
DcmDspDidIdentifier
-
EXP:配置DID的ID号。
-
DcmRbDspIsDIDAvailableFnc
-
EXP:
-
DcmDspDidInfoRef
-
EXP:指定DID的配置信息
-
DcmDspDidInfos
-
DcmDspDidReadModeRuleRef
- EXP:配置DID读取模式规则。
-
DcmDspDidReadSecurityLevelRef
- EXP:配置DID读写的安全解锁等级。一个服务允许多个引用。
-
DcmDspDidReadSeesionLevelRef
- EXP:配置DID读写的会话等级。一个服务允许多个引用。
-
-
DcmDspRoutines
-
EXP:
-
EXP:
-
DcmDspRequestRoutineResults
- EXP:
DcmDspRequestRoutineResultsFnc:指定例程请求结果的函数名。若不为空,Dcm会调用该接口,反之Dcm会调用RTE接口。
- EXP:
-
DcmDspStartRoutine
- EXP:
DcmDspStartRoutineFnc:启动例程时调用的函数名。若不为空,Dcm在启动例程时会调用该函数
- EXP:
-
DcmDspStopRoutine
- EXP:
DcmDspStopRoutineFnc:结束例程时调用的函数名。若不为空,Dcm在结束例程时会调用该函数
- EXP:
-
DcmDspRoutineIdentifier
- EXP:例程ID
-
DcmDspRoutineUsePort
- EXP:
Dcm使用“RoutineServices_”函数端口
- EXP:
-
-
DcmDspRoutineInfos
-
EXP:
- EXP:这个容器包含RID的Info的配置,与DID配置不同,配置RID例程没有最外层的配置界面,只能在Basic Editor中进行配置。
-
EXP:
- EXP:
DcmDspRoutineAuthorization:例程权限设置,设置规则、安全访问等级、会话权限。
DcmDspStartRoutineIn:启动例程的参数输入容器
DcmDspStartRoutineOut:启动例程的参数输出容器
DcmDspRoutineStopIn:结束例程的参数输入容器
DcmDspRoutineStopOut:结束例程的参数输出容器
DcmDspRoutineRequestRspIn:请求例程结果的参数输入容器
DcmDspRoutineRequestRspOut:请求例程结果的参数输出容器
DcmDspRoutineSignalEndianness:例程信号的字节序
DcmDspRoutineSignalLength:例程信号数据的长度(bit)
DcmDspRoutineSignalPos:例程信号数据的位置(偏移量)(bit)
DcmDspRoutineSignalType:例程信号数据的类型
- EXP:
-
-
DcmDspComControl
-
DcmDspComControlAllChannel
- DcmDspAllComMChannelRef:配置引用CAN通道,根据需求,可配置多个通道。
-
DcmDspComControlSpecificChannel
- DcmDspAllComMChannelRef:配置引用CAN通道,根据需求,可配置多个通道。
-
DcmDspComControlSetting
-
EXP:
-
EXP:
Autosar代码中有这12中通道配置。控制应用报文、网络管理,以及RX和TX。
Bswm模块制定相应的规则来控制CAN的收发功能。
-
-
举例:
上图中CANA应用报文的TX规则:接收到“DCM_DISABLE_RX_TX_NORMAL”和“DCM_DISABLE_RX_TX_NORM_NM”就关闭CANA应用报文的TX功能,反之开启CANA应用报文的TX功能。
-
DcmDspControlDTCSetting
-
DcmDspControlDTCSettingReEnableModeRuleRef
- EXP:
-
控制重启DTC设置的规则。如果设置,Dcm会在DisableDTCSetting请求开始的时候监控,如果不满足规则,Dcm会自动启动DTC。
-
DcmSupportDTCSettingControlOptionRecord
- EXP:
指定是否支持DTC group参数。若设置false,Dcm接收带有DTC group参数的请求时直接拒绝;反之,Dcm接收85服务时可带DTC group参数。
-
EXP:
例如IFC项目中默认配置下也可以支持85 01/02, 但是IDC项目中就必须加上DTC Group,所以IDC就需要将配置勾选取消。
-
DcmDspSecurity
-
DcmDspSecurityADRSize
- EXP:
-
DcmDspSecurityAttemptCounterEnabled
- EXP:安全尝试计数是否支持外部存储。若设置true,Dcm调用读写尝试计数器的API接口;反之,Dcm在初始化的时候清空这个安全访问等级的尝试计数器
-
DcmDspSecurityCompareKeyFnc
- EXP:秘钥比较函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。
-
DcmDspSecurityDelayTime
- EXP:安全访问延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。Dcm只有在失败尝试次数达到设置次数之后才会配置该时间。
-
DcmDspSecurityDelayTimeOnBoot
- EXP:Dcm在上电周期内的延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。若设置非0,Dcm从初始化后的这段时间会拒绝任何安全访问请求。
-
DcmDspSecurityDelayTimeOnFailedGetAttemptCounter
- EXP:
设置获取尝试次数失败后的延迟时间。
若不设置,Dcm获取失败后直接将计数清0,接收安全访问请求;
若设置为0,Dcm会一直等待获取尝试次数的结果,在此期间拒绝任何安全访问请求;
若设置不为0,Dcm会在这段时间内等待获取尝试次数的结果,在此期间拒绝任何安全访问请求,若超时,回复NRC响应(商榷)。
-
DcmDspSecurityGetAttemptCounterFnc
- EXP:获取尝试次数的函数名。Dcm初始化时重载尝试计数器。
-
DcmDspSecurityGetSeedFnc
- EXP:获取种子函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。
-
DcmDspSecurityKeySize
- EXP:安全访问密钥长度。
-
DcmDspSecurityLevel
- EXP:安全访问等级。
-
DcmDspSecurityNumAttDelay
- EXP:安全访问尝试次数。若设置大于0,尝试失败的次数超过该值时返回NRC36;若设置等于0,不限失败尝试次数。
-
DcmDspSecuritySeedSize
- EXP:安全访问种子长度。
-
DcmDspSecuritySetAttemptCounterFnc
- EXP:修改安全访问尝试次数的函数。
-
DcmDspSecurityUsePort
- EXP:
安全访问类型。USE_ASYNCH_CLIENT_SERVER:Dcm使用P-port接口(SecurityAccess_{SecurityLevel}函数)访问;USE_ASYNCH_FNC:Dcm直接调用DcmDspSecurityGetSeedFnc和DcmDspSecurityCompareKeyFnc自定义函数访问。
对于每个安全级别,服务 0x27 应始终有一对对应的子服务:
-
一个用于“获取种子”操作,具有奇数的子服务标识符值(例如 0x01);
-
一个用于“发送密钥”操作,其偶数子服务标识符值等于“获取种子”+1(例如 0x02);
参数值应始终与服务 0x27 配置容器的DcmDsdSubServices 中“get seed/send-key”对的Subfunction Id匹配:SecurityLevel = ( + 1) / 2
比如内部安全解锁等级为27 61,那Subfunction Id为0x61(Hex), DcmDspSecurityLevel为49(Dec)。-
DcmDspSession
-
DcmDspSessionForBoot
- EXP:
定义切换会话是否跳转到Boot。DCM_NO_BOOT:不跳转Boot;
DCM_SYS_BOOT:xxx; DCM_SYS_BOOT:xxx (有何区别)。
- EXP:
-
DcmDspSessionLevel
- EXP:指定相应诊断会话的值
-
DcmDspSessionP2ServerMax
- EXP:指定诊断会话的 P2 时间(以秒为单位)。
-
DcmDspSessionP2StarServerMax
- EXP:指定诊断会话的 P2* 时间(以秒为单位)。
-
-
DcmRbDspReadDTC
-
-
DcmDspMaxDidToRead
-
EXP:在单个22服务中允许读取的最大DID数量。若读取的DID数量大于该值,发送否定响应。
-
-
DcmDspMaxPeriodicDidToRead
-
EXP:在单个2A服务中允许读取的最大DID数量。若读取的DID数量大于该值,发送否定响应。
-
-
DcmPageBufferCfg
- DcmPagedBufferEnabled
-
DcmProcessingConditions
DcmGeneral
-
EXP:
-
EXP:
-
EXP:
-
-
-
DcmRbGeneral
-
EXP:
-
EXP:
- EXP:
-
-
-
DcmDevErrorDetect
-
EXP:
-
EXP:
- EXP:
指定Dcm是都监控API输入输出和内部行为,并通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
- EXP:
-
-
-
DcmRespondAllRequest
-
EXP:
-
EXP:
- EXP:
是否处理接收到的安全诊断请求。若设置enable,Dcm会接收并处理所有的诊断请求;若设置为disable,Dcm会接收所有请求,但是不处理[0x40,0x7F]U[0xC0, 0xFF]范围内的诊断请求。
- EXP:
-
-
-
DcmTaskTime
-
EXP:
-
EXP:
- EXP:
Dcm主任务的周期时间。
- EXP:
-
-
-
DcmVersionInfoApi
-
EXP:
-
EXP:
- EXP:
是否提供版本信息。若设置enable,Dcm提供“Dcm_GetVersionInfo”API接口来读取版本信息。
- EXP:
-
-
EXP:DCM的子模块:DSL、DSD和DSP
-
DSL-Diagnostic Session Layer
-
EXP:
-
EXP:
- EXP:
诊断会话层主要有以下三个作用:
- EXP:
-
-
- 处理诊断请求和响应数据流。
- 管理诊断状态(会话状态和安全状态)。
- 管理时间参数。
-
DSD-Diagnostic Service Dispatcher
-
EXP:
-
EXP:
- EXP:
诊断服务调度程序是 DSL 和 DSP 之间的桥梁,
处理 DSL 的诊断请求数据,经过处理后调用 DSP 中的处理程序;
将 DSP 处理完成后发送的响应数据传递给 DSL。
- EXP:
-
-
-
DSP-Diagnostic Service Processor
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_CC.c
- Dcm_DcmCommunicationControl
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Cdi.c
- Dcm_DcmClearDiagnosticInformation
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Cdtcs.c
- Dcm_DcmControlDTCSetting
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Dddi.c
-
Dcm_DcmDDDI
- EXP:UDS service for definition of Dynamical Defined ID.
-
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Dsc.c
- Dcm_DcmDiagnosticSessionControl
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Er.c
- Dcm_DcmEcuReset
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_GetVIN.c
- Dcm_GetVin
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Iocbi.c
- Dcm_DcmInputOutputControlByIdentifier
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rc.c
- Dcm_DcmRoutineControl
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdbi.c
- Dcm_DcmReadDataByIdentifier
- Dcm_GetActiveRDBIDid
- Dcm_GetPagedDIDData
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdpi.c
- Dcm_DcmReadDataByPeriodicIdentifier
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc.c
- Dcm_DcmReadDTCInformation
- Dcm_IsProtocolIPCanFD
-
.\Gen\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_GetFreezeFrameDataByRecord.c
- Dcm_Dsp_GetFreezeFrameDataByRecord
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepDataRecordByDTC.c
- Dcm_Dsp_ReportDataRecordByDTCNumber
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepDTCFaultDetectionCounter.c
- Dcm_Dsp_ReportFaultDetectionCounter
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepFailedDTC.c
- Dcm_Dsp_ReportFailedDTC
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepNumDTCByStatusMask.c
-
Dcm_Dsp_ReportNumberOfDTC
- EXP:
-
-
-
Dcm_Dsp_ReportNumberOfDTC
-
This function is used to implement the RDTC service for the following sub functions:
-
0x01(reportNumberOfDTCByStatusMask),
-
0x07 (reportNumberOfDTCBySeverityMaskRecord),
-
0x11(reportNumberOfMirrorMemoryDTCByStatusMask),
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_ReportDTCBySevMaskRec.c
- Dcm_Dsp_ReportDTCBySeverityMaskRecord
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_ReportDTCSnapshotRecId.c
- Dcm_Dsp_ReportDTCSnapshotRecordIdentification
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepSeverityOfDTC.c
- Dcm_Dsp_ReportSeverityOfDTC
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rdtc_RepSuppDTC.c
- Dcm_Dsp_ReportSupportedDTC
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_RequestDownload.c
- Dcm_DcmRequestDownload
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_RequestTransferExit.c
- Dcm_DcmRequestTransferExit
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_RequestUpload.c
- Dcm_DcmRequestUpload
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Rmba.c
- Dcm_DcmReadMemoryByAddress
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Roe.c
- Dcm_DcmResponseOnEvent
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Seca.c
- Dcm_DcmSecurityAccess
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Tp.c
- Dcm_DcmTesterPresent
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_TransferData.c
- Dcm_DcmTransferData
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Wdbi.c
- Dcm_DcmWriteDataByIdentifier
- Dcm_GetActiveWDBIDid
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Wmba.c
- Dcm_DcmWriteMemoryByAddress
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Roe.c
- 0
-
.\Dcm\src\DcmDsp\DcmDspUds\DcmDspUds_Roe.c
- 0
-
EXP:
-
EXP:
- EXP:诊断服务处理程序,包含每个诊断服务具体的处理函数。如0x10服务、0x11服务的具体实现函数都是在这个模块里。
-
-
EXP:
-
EXP:
-
EXP:
-
EXP:
- EXP:
Diagnostic Communication Manager诊断通信管理,处理和响应UDS服务请求,管理诊断session、Mcu安全等级等。 - EXP:
DCM模块是诊断通讯模块,只要遵循的协议就是ISO 14229-1,包括UDS会话层和应用层,对底层通讯协议没有要求,可以是CAN、Lin或以太网(DoIP)等。
- EXP:
-
-