背景
之前简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置DSL子模块,并实现客户的需求。
DSL子模块配置
1.DSL子模块总体配置
DcmDslBuffer:配置诊断缓存区的容器
DcmDslCallbackDCMRequestServices:StartProtocol通知函数的SWC名称容器
DcmDslServiceRequestManufacturerNotifications: 对制造商允许启用或禁用请求通知机制.
DcmDslServiceRequestSupplierNotifications: 对供应商允许启用或禁用请求通知机制。
DcmDslDiagResp:配置Pending响应处理容器
DcmDslProtocol:协议配置容器
2. DcmDslBuffer
DcmDslBufferSize:配置诊断缓存区大小
3. DcmDslCallbackDCMRequestServices
每个容器使用接口定义一个Port, 使用接口向Dcm模块请求Protocol更改的权限。一般不用这个配置
DcmDslCallbackDCMRequestServiceStartFnc:StartProtocol的回调函数名称
DcmDslCallbackDCMRequestServiceUsePort:访问应用程序的接口类型
4.DcmDslServiceRequestManufacturerNotifications
DcmDslServiceRequestSupplierNotifications
这两个可以一起看,用于定义Dcm访问的ServiceRequestNotification接口。任何进入Dcm的数据会先调用这个接口,一般用于实现功能寻址、NRC22条件、抑制响应等功能。
DcmDslServiceRequestSupplierNotificationConfirmationFnc:接收诊断时通知的回调函数
DcmDslServiceRequestSupplierNotificationIndicationFnc:接收诊断时通知的回调函数
DcmDslServiceRequestSupplierNotificationUsePort:访问APP的接口,需要在RTE中实现相关接口函数
5.DcmDslDiagResp
DcmDslDiagRespMaxNumOfDeclinedRequests:拒绝请求(当前无法处理)的最大响应数量。
DcmDslDiagRespMaxNumRespPend:每次请求最大的0x78响应(Pending)数量。
若设置等于0,每次请求发送的Pending将不受限制,直到完成处理。
若设置大于0,每次请求发送的Pending数量大于该值时,Dcm会取消诊断服务的处理并响应NRC10。
DcmDslDiagRespOnSecondDeclinedRequest:拒绝请求(当前无法处理)的响应。
若设置enable,Dcm无法处理该请求时直接响应NRC21(BusyRepeatRequest)。
DcmDslDiagRespPeriodicMsgPaddingPattern:未使用数据的填充值。
若该参数不存在,按照数据的长度发送
若该参数填充数据,每次都会发送8个字节,未使用的数据填充该值。
6.DcmDslProtocolRow
DemClientRef:在Dem配置中引用DemClient。由Dem用于区分不同的客户端调用。默认配置。
DcmDslProtocolID:正在配置的DSL协议的诊断协议类型。一般都是基于UDS的CAN诊断。
DcmDslProtocolIsParallelExecutable:设置OBD协议是否并行处理服务请求。
DcmDslProtocolMaximumResponseSize:定义响应消息的最大长度。
DcmDslProtocolPriority:协议抢占时使用的协议优先级。高优先级的协议可能会抢占低优先级的协议。数值越低表示协议优先级越高。
DcmDslProtocolRxBufferID:引用已配置的诊断缓冲区,该缓冲区用于接收协议的诊断请求。默认配置。
DcmDslProtocolSIDTable:对用于此协议的诊断请求处理的服务表的引用。默认配置。
DcmDslProtocolTxBufferRef:引用已配置的诊断缓冲区,用于传输协议的诊断响应。默认配置。
SendRespPendOnTransToBoot:指定ECU在转换到Boot之前是否应该发送RCR-RP response(Pending帧)。
TimStrP2ServerAdjust:表示由DCM发起传输到消息实际传输到总线的通信延迟时间,配置后实际的P2Time就是(P2Time - TimStrP2ServerAdjust)。
TimStrP2StarServerAdjust:表示由DCM发起传输到消息实际传输到总线的通信延迟时间,配置后实际的P2*Time就是(P2*Time - TimStrP2ServerAdjust)。
7.DcmDslConnection
这个容器包含一个特定协议的通信通道配置。注意,它允许与多个Tester通信,因此可以为一个协议配置多个连接。
DcmDslProtocolRxs:这个容器包含诊断连接中接收通道的配置参数。一般设置功能寻址和物理寻址
DcmDslProtocolRxAddrType:指定请求的寻址类型,一般在导入新DBC后需要检查一下,如果没有自动更新,需要手动区分出功能寻址与物理寻址,不然可能会导致诊断报文无法接收。
DcmDslProtocolRxPduId:指定具体Dcm接受PDU。一般也会自动更新,但是也需要检查,不然也会导致诊断报文无法接收。
DcmDslProtocolTx:此容器包含诊断连接中发送通道的配置参数。
注意:上面两个配置一般会在导入DBC之后自动更新,用于将Dcm与PDU进行连接。
总结
以上是DSL子模块通用容器配置,我们仅仅用到其中一部分配置,很多配置还需具体实践。