首页 > 其他分享 >AUTOSAR_SWS_DiagnosticCommunicationManager-1

AUTOSAR_SWS_DiagnosticCommunicationManager-1

时间:2024-06-01 11:54:28浏览次数:25  
标签:AUTOSAR DCM -- 配置 UINT8 DiagnosticCommunicationManager Dcm SWS USE

目录

7 Functional specification

7.1 Error Classification

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

7.1.1 Development Errors

错误类型 错误码 值[hex]
模块间交互出现超时 DCM_E_INTERFACE_TIMEOUT 0x01
返回值超出范围 DCM_E_INTERFACE_RETURN_VALUE 0x02
模块间交互时,Dcm检查到buffer溢出 DCM_E_INTERFACE_BUFFER_OVERFLOW 0x03
Dcm未初始化 DCM_E_UNINIT 0x05
Dcm的API函数的参数无效 DCM_E_PARAM 0x06
Dcm的API函数的参数有NULL指针 DCM_E_PARAM_POINTER 0x07
Dcm初始化失败 DCM_E_INIT_FAILED 0x08
编程条件储存失败
※Dcm_SetProgConditions相关
DCM_E_SET_PROG_CONDITIONS_FAIL 0x09

7.1.2 Runtime Errors

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

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] 错误类型 注释
0x10 General Reject 请求被一般性拒绝,可能是由于服务无法在当前条件下执行。
0x11 Service Not Supported 请求的服务不被支持。
0x12 Sub-Function Not Supported 请求的子功能不被支持。
0x13 Incorrect Message Length or Invalid Format 消息长度不正确或格式无效。
0x22 Conditions Not Correct 当前条件不允许执行请求的操作。
0x31 Request Out of Range 请求超出范围。
0x33 Security Access Denied 安全访问被拒绝。
0x7E Sub-Function Not Supported in Active Session 当前会话中不支持请求的子功能。
0x7F Service 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 size 1(字节对齐) 8 16 32 8 16 32
DcmDspDidDataType BOOLEAN UINT8 UINT16 UINT32 SINT8 SINT16 SINT32
DcmDspDataEndianness N/A N/A LE,BE LE,BE N/A LE,BE LE,BE
DcmDspDataUsePort S/R, I/O
Resulting ImplType boolean UINT8 UINT16 UINT32 SINT8 SINT16 SINT32

7.2.4.2 Data array types overview

数组类型一览

Field(Static)
Date bit size 8-8*N 16-16*N 32-32*N 8-8*N
DcmDspDataByteSize Any Any 必须为2的倍数 必须为2的倍数 必须为4的倍数 必须为4的倍数 Any
DcmDspDidDataType UINT8_N UINT16_N UINT32_N UINT8_DYN
DcmDspDataEndianness N/A LE,BE N/A
DcmDspDataUsePort S/R, C/S, FNC, NVM S/R C/S, FNC
Resulting ImplType DataArrayTypeUint8_(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_RECEIVERUSE_DATA_SENDER_RECEIVER_AS_SERVICE
USE_BLOCK_ID
USE_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则是在这个过程中传递给操作的一个参数,用来指示上一次操作执行的结果,并且根据这个结果决定本次操作如何进行。

graph TD; Start((Start)) FirstCall("首次调用<br>Dcm_OpStatusType") SetInitial("设置<br>设置参数OpStatus = DCM_INITIAL") CheckReturn("检查返回值") ForceRCRRP("DCM_E_FORCE_RCRRP") Pending("DCM_E_PENDING") SendRCRRP("发送RCR-RP请求<br>(NRC 0x78)") WaitForConfirm("等待发送成功确认") PendingLoop("在每次<br>Dcm_MainFunction中调用Dcm_OpStatusType<br>设置参数OpStatus = DCM_PENDING") ConfirmReceived("收到RCR-RP发送成功的确认") RetryWithForceRCRRPOK("在Dcm_MainFunction中<br>再次调用Dcm_OpStatusTypede<br>设置参数OpStatus = DCM_FORCE_RCRRP_OK") End((End)) Start --> FirstCall FirstCall --> SetInitial SetInitial --> CheckReturn CheckReturn -->|DCM_E_FORCE_RCRRP| ForceRCRRP CheckReturn -->|DCM_E_PENDING| Pending ForceRCRRP --> SendRCRRP SendRCRRP --> WaitForConfirm WaitForConfirm --> ConfirmReceived ConfirmReceived --> RetryWithForceRCRRPOK Pending --> PendingLoop PendingLoop --> CheckReturn RetryWithForceRCRRPOK --> End PendingLoop -->|不再返回<br>DCM_E_PENDING| End

7.2.4.5 Dcm_SesCtrlType

标签:AUTOSAR,DCM,--,配置,UINT8,DiagnosticCommunicationManager,Dcm,SWS,USE
From: https://www.cnblogs.com/yuanzinanzheng/p/18225814

相关文章

  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
    目录关键词平台说明背景一、implicitsynchronization1.1Writerequests流程(NvM_WriteBlock)1.2Readrequests流程(NvM_ReadBlock)1.3Restoredefaultrequests流程(NvM_RestoreBlockDefaults)1.4Multiblockreadrequests流程(NvM_ReadAll)1.5Multibloc......
  • Autosar-BswM 配置详解(免费)-2
    上表配置内容的意思是,BswM初始化过程中会先走到“BswM_AR_InitBlockTwo”这个步骤,如果条件满足的话,会执行这个步骤所有的动作。执行完后“BswM_AR_InitBlockTwo”,会切换到“BswM_AR_ReadAllComplete”这个步骤,如果条件满足的话,执行完该步骤的所有动作。之后再次切换到run的......
  • 详解Assertion desc failed at src/libswscale/swscale_internal.h:668
    目录详解Assertiondescfailedatsrc/libswscale/swscale_internal.h:668错误原因解决方案1.检查输入参数2.升级FFmpeg版本3.检查编译选项4.优化代码5.寻求帮助结论详解Assertiondescfailedatsrc/libswscale/swscale_internal.h:668在使用FFmpeg进行视......
  • 如何用autosar工具链搭建代码 点亮一个小灯
    一、搭建Mcal用EB软件1、新建工程2、配置Resource3、配置MCU4、配置Port5、配置Dio6、输出Arxml二、DavinciConfiguration配置前准备1、新建工程2、导入通信文件3、导入Mcal文件三、配置OS1、顺手配置Det2、配置EcuC3、配置OS四、解决ERROR1、修改CAN波特......
  • AUTOSAR MCAL基础配置(实操)
    一、用EB配置工程操作流程:1、在EBTresos配置工具中新建MCAL配置工程,添加MCU和PORT模块,分别对其进行配置。2、对MCU时钟进行配置,时钟源为外部8M晶振,经过40倍倍频,再经过二分频得到160MHz的PLL输出时钟。最终得到80M内核时钟,40M总线时钟,20M的flash时钟3、在EBTresos配置......
  • Autosar-CanNm、Nm配置详解(免费)-1
    3.1由DBC创建Nm、CanNMETAS工具可根据DBC文件,自动配置生成Nm、CanNm模块。但是关键的一点是要生成NM、CanNM模块DBC文件中必须有NM类型的报文。还有一点,即使DBC文件中有Nm的报文,但是因为报文的类型在导入时没有设置成Nm,那也不会生成Nm模块。最后一点,如果已经导入过DBC文......
  • Autosar-CanNm、Nm配置详解(免费)-2
    3.5NM配置项3.5.1NmGlobalConstantsNmNumberOfChannelsNm管理几个Can通信,通信我们只有智能进入网需要网络管理,因此一般这里只需要填1。NmNumberOfClusters如果NM需要与几个CanNm进行协同处理的话,那需要把这些配置为Cluster,即组合在一起。到时就可以同时休眠,同时唤醒......
  • ISOLAR Autosar BSW 配置 之 SoAd
    6.SoAd6.1SoAdGeneralSoAdBestMatchRxHeaderldCheck  RX头最佳匹配算法使能SoAdChangeParameterEnabled  SoAd是否可以修改连接参数,函数调用:SoAd_ChangeParameterSoAdDHCPFQDNEnabled  FQDN(完全限定域名)SoAdDevErrorDetect  开发错误检测和通知......
  • ISOLAR Autosar BSW 配置 之 TcpIp
    5.TcpIp5.1TcpIpGeneralTcplpDevErrorDetect  开发错误检测和通知;TcplpGetAndResetMeasurementDataApi  允许应用程序获取以太网接口当前的测量数据,并将这些数据重置为初始值。TcplpMainFunctionPeriod  任务调度周期TcplpScalabilityClass  协议栈......
  • Autosar Application设计
    设计需求用个实例来讲解会比较好理解,我们要设计这个车灯控制部件,需求是这样的,靠两个门和一个开关控制最后的灯,左门右门当中只要有一个门打开,DoorContact就会把信号传给Dimmer,同时根据开关的状态控制灯光的开关和亮度。关上所有的门,灯就会灭。需求分析下图每一个灰色的框就......