背景
上篇文章简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置Dcm模块,并实现客户的需求。
Dcm模块配置
1.Dcm模块总体配置
上图是Dcm模块整体配置框图,其中包括以下五个配置容器:
DcmDsd:该容器配置诊断服务调度的所有参数
DcmDsl:该容器配置诊断会话层的所有参数
DcmDsp:该容器配置诊断服务处理的所有参数
DcmGeneral: 该容器配置Dcm模块的通用参数
DcmPageBufferCfg:该容器配置Dcm模块的缓存区参数
2.Dcm通用配置(DcmGeneral)
上图是Dcm模块通用配置容器参数,以下是对这些参数的详细介绍。
DcmBswApiVersion:指定BSW堆栈API的AUTOSAR版本。若参数为空,使用V4.XX.XX AUTOSAR版本
DcmCalibrationOfObdIdsEnabled:是否支持标准OBD ID。
DcmCalibrationOfObdIdsMemoryType:标准OBD ID数据的存储类型。VOLATILE:生成RAM表。NON_VOLATILE:生成const区域表。默认使用NON_VOLATILE类型。
DcmDtrDataProvisionViaDemEnabled:Dem是否处理OBD MID DTR数据采集。若设置enable,Dcm请求OBD MID DTR(Sid 0x06 or Did 0xF600)时与Dem数据交互;若设置disable,Dcm使用BSWMD文件定义OBD MID配置来获取DTR数据。
DcmDefensiveBehaviorEnabled:指定Dcm是都监控API输入输出和内部行为,不通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
DcmDemApiVersion:指定Dem API的AOTOSAR版本。若参数为空,使用V4.03.00 AUTOSAR版本
DcmDevErrorDetect:指定Dcm是都监控API输入输出和内部行为,并通知DET BSW。若设置enable,Dcm监控代码的正常功能,避免不可预知情况(空指针、越界、不可预期的参数)。
DcmDspDataDefaultEndianness:DSP层数据默认字节序
DcmFinalResponseToFblEnabled:是否支持FBL最终的响应传输。若设置enable,Dcm调用“Dcm_GetProgConditions”函数决定是否发送最终响应。
DcmForeignDiagnosticRequestDetectionEnabled:指定是否监听其他ECU的诊断请求。若设置enable,Dcm花费资源来处理这些诊断请求。
DcmKeepAliveTime:指定处理每个诊断请求后 Dcm 将保持 ComM 中的 Diag-Active 用户注册的时间(以秒为单位)。
DcmMainFunctionWorkerTaskTime:配置诊断服务处理任务的周期时间。若设置为空,同时DcmSplitTasksEnabled为true,诊断服务处理任务周期会直接调用DcmTaskTime时间。
DcmMaxNumberIterationsPerTask:每个Dcm_MainFunction任务的最大迭代次数。若设置为空,不限制次数;若设置大于0,对于比较复杂的诊断服务会造成运行时间增加。
DcmRequestManufacturerNotificationEnabled:为制造商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。必须配置DcmDslServiceRequestManufacturerNotification参数。
DcmRequestSupplierNotificationEnabled:为供应商提供诊断服务通知功能。若设置为enable,Dcm接收到诊断请求后会先处理配置函数。同时必须配置DcmDslServiceRequestSupplierNotification参数。
DcmResetToFblAfterSessionFinalResposeEnabled:配置诊断会话切换肯定响应之前还是之后复位带FBL。若设置enable,Dcm会先回复肯定响应,再复位到FBL;若设置为disable,Dcm会先根据配置跳转到FBL,之后FBL会回复肯定响应。
DcmRespondAllRequest:是否处理接收到的安全诊断请求。若设置enable,Dcm会接收并处理所有的诊断请求;若设置为disable,Dcm会接收所有请求,但是不处理[0x40,0x7F]U[0xC0, 0xFF]范围内的诊断请求。
DcmSafeBswChecks:是否配置SafeBSW模式。若设置enable,Dcm不支持某些特定的功能(待深入理解);反之Dcm则支持全功能。
DcmSecurityLevelChangeNotificationEnabled:安全等级改变时是否通知SWC。若设置enable,Dcm会在安全等级发生改变时调用RTE的接口。
DcmSplitTasksEnabled:main-function任务是否分裂成worker+timer任务。若设置enable,Dcm会由Dcm_MainFunctionTimer和Dcm_MainFunctionWorker组成;反之Dcm只有一个Dcm_MainFunction任务。
DcmStateRecoveryAfterResetEnabled:是否通过重置ECU保留一些Dcm内部状态。若设置enable,Dcm在Dcm_Init之后读取信息或者默认信息。反之Dcm不恢复信息直接启动。
DcmSupportedIDCalculationSuppressionEnabled:是否抑制SupportedIDs的计算(待深入理解)。
DcmSuppressResponseOnCanTpFuncMixedAddrRequests:是否抑制由MixedAddressing CanTp连接的功能寻址的任何响应。
DcmTaskTime:Dcm主任务的周期时间。
DcmUserConfigFile:用户配置文件的路径。
DcmVersionInfoApi:是否提供版本信息。若设置enable,Dcm提供“Dcm_GetVersionInfo”API接口来读取版本信息。
DcmVirtualRequestEnabled:是否支持虚拟请求。
总结
以上是Dcm模块通用容器配置,我们仅仅用到其中一部分配置,很多配置还需具体实践。