背景

之前简单介绍了Autosar Dcm模块,接下来我们直接切入主题,如何通过Vector Configurator Pro工具配置DSD子模块,并实现客户的需求。


DSP子模块配置

1.DSP子模块整体配置

Dsp配置可以说是Dcm的核心,大部分的需求开发都是在这个子模块中进行。

DcmDspDidLookUpFilterEnabled:是否支持外部DID查找过滤。若支持,Dcm可以调用应用函数。

DcmDspDDDidCheckConditionReadPerSourceDid:Dcm在接收到0xF200-0xF3FF范围内的0x22和0x2A服务时会调用“CheckConditionRead”接口。

DcmDspDDDidCheckPerSourceDid:Dcm在接收到0xF200-0xF3FF范围内的0x22和0x2A服务时会执行DIDs和内存块检查等预条件检查。

DcmDspDDDidClearOnStateChange:Dcm在改变会话/安全权限改变时清除DID状态,条件不满足时不允许访问。

DcmDspMaxDidToRead: 在单个22服务中允许读取的最大DID数量。若读取的DID数量大于该值,发送否定响应。

DcmDspMaxPeriodicDidToRead: 在单个2A服务中允许读取的最大DID数量。若读取的DID数量大于该值,发送否定响应。

DcmDspPowerDownTime:指定在下点过程中待机的最短时间。若该值存在,在11 04服务肯定响应时回复该值;反之,在11 04服务肯定响应时回复0xFF。

DcmDspReadDIDReportsNODIByte:在读取OBD DID(0xF801-0xF8FF)时报告OBD VID的NODI字节。若该值存在,Dcm将完全镜像 OBD2 VID数据;反之,Dcm将省略NODI字节

DcmDspReadPagedDataPageSize:读操作时每页Buffer的大小

DcmDspRidLookUpFilterEnabled:是否支持外部RID查找过滤。若支持,Dcm可以调用应用函数

DcmDspRteImplicitComEnabled:建立一个专门的Buffer,用来拷贝RTE的数据。

2. DcmDspDataInfos

这个容器包含一个Data的配置

DcmDspDataFixedLength:如果设置为TRUE,Dcm 将直接从配置中使用数据长度参数值。一般都会勾上。

DcmDspDataScalingInfoSize:数据伸缩信息的长度。Dcm接收到0x24请求时输出该值。

3. DcmDspDatas

这个容器包含属于DID的Data的配置。

DcmDspDataBlockIdRef:DCM直接访问Nvm block。

DcmDspDataConditionCheckReadFnc:Did读取检测条件的函数名。若不为空,DCM接收到Did的读取会调用该函数;反之则不检测。

DcmDspDataConditionCheckReadFncUsed:决定是否使用条件检测

DcmDspDataEcuSignal:指定 Dcm 对某个 ECU 信号的控制访问的函数名称

DcmDspDataEndianness:定义DID的字节序

DcmDspDataFreezeCurrentStateFnc:指定Dcm冻结当前IO状态的函数名。一般用于0x2F服务(IOControlByDataIdentifier)。

DcmDspDataGetScalingInfoFnc:指定Dcm读取缩放信息的函数名。一般用于0x24服务(ReadScalingDataByIdentifier)。

DcmDspDataInfoRef:对DcmDspDataInfo的引用

DcmDspDataReadDataLengthFnc:指定Dcm读取DID数据的长度的函数名

DcmDspDataReadEcuSignal:指定Dcm读取某个ECU 信号的函数名

DcmDspDataReadFnc:指定Dcm读取数据内容的函数名

DcmDspDataResetToDefaultFnc:指定Dcm复位当前IO默认状态的函数名

DcmDspDataReturnControlToEcuFnc:指定Dcm返回IO状态给APP的函数名

DcmDspDataShortTermAdjustmentFnc:指定Dcm调整IO状态的函数名

DcmDspDataSize:DID数据的长度。若数据长度可变,该参数就是最大的数据长度

DcmDspDataSystemTemplateDiagnosticDataElementRef:定义被DcmDspData引用的诊断数据

DcmDspDataType:指定数据类型

DcmDspDataUsePort:访问数据的接口类型。

'USE_DATA_ASYNCH_CLIENT_SERVER' or 'USE_DATA_SYNCH_CLIENT_SERVER':Dcm调用RTE接口;

'USE_DATA_SYNCH_FNC' or 'USE_DATA_ASYNCH_FNC':Dcm会调用专用的接口(自己实现的接口)

DcmDspDataWriteFnc:指定Dcm写数据内容的函数名

4.DcmDspDidInfos

这个容器包含DID的Info的配置,是配置DID的会话、解锁等级。

DcmDspDidReadModeRuleRef:配置DID读取模式规则。

DcmDspDidReadSecurityLevelRef: 配置DID读写的安全解锁等级。一个服务允许多个引用。

DcmDspDidReadSeesionLevelRef: 配置DID读写的会话等级。一个服务允许多个引用。

5.DcmDspDids

这个容器包含DID的配置

DcmDspDidIdentifier:配置DID的ID号。

DcmDspDidInfoRef:指定DID的配置信息

DcmDspDidRef:

DcmDspDidRoeQueueEnabled:

DcmDspDidSystemTemplateDiagnosticDataIdentifierRef:

DcmDspDidUsePort:DID 的信号组合成一个 struct 数据类型。

USE_DATA_ELEMENT_SPECIFIC_INTERFACES:根据DspData配置,创建单独的Port。

USE_ATOMIC_SENDER_RECEIVER_INTERFACE:

USE_ATOMIC_NV_DATA_INTERFACE:

DcmDspDidUsed: 配置是否激活DID的使用,项目开发阶段可以使用,不用重复添加删除DID。

以上在配置Diagnostic->Diagnostic Data Identifiers时都会自动对应生成,所以在配置一个DID的时候关注最外层的配置界面即可。

6.DcmDspRoutineInfos

这个容器包含RID的Info的配置,与DID配置不同,配置RID例程没有最外层的配置界面,只能在Basic Editor中进行配置。

DcmDspRoutineAuthorization:例程权限设置,设置规则、安全访问等级、会话权限。

DcmDspStartRoutineIn:启动例程的参数输入容器

DcmDspStartRoutineOut:启动例程的参数输出容器

DcmDspRoutineStopIn:结束例程的参数输入容器

DcmDspRoutineStopOut:结束例程的参数输出容器

DcmDspRoutineRequestRspIn:请求例程结果的参数输入容器

DcmDspRoutineRequestRspOut:请求例程结果的参数输出容器

DcmDspRoutineSignalEndianness:例程信号的字节序

DcmDspRoutineSignalLength:例程信号数据的长度(bit)

DcmDspRoutineSignalPos:例程信号数据的位置(偏移量)(bit)

DcmDspRoutineSignalType:例程信号数据的类型

7.DcmDspRoutines

这个容器包含RID的配置

DcmDspRequestResultsRoutineFnc:指定例程请求结果的函数名。若不为空,Dcm会调用该接口,反之Dcm会调用RTE接口。

DcmDspRequestResultsRoutineSupported:该例程是否支持STOP操作。若设置false,Dcm接收例程请求结果(3103)操作时会返回NRC12。

DcmDspRoutineFixedLength:例程是否固定长度

DcmDspRoutineIdentifier:例程ID

DcmDspRoutineInfoByte:

DcmDspRoutineInfoRef:指定的例程信息

DcmDspRoutineSystemTemplateDiagnosticRoutineRef:

DcmDspRoutineUsePort:Dcm使用“RoutineServices_<ROUTINENAME>”函数端口

DcmDspRoutineUsed:是否使用该例程。若禁用,例程将不使用Dcm生成的代码

DcmDspStartRoutineFnc:启动例程时调用的函数名。若不为空,Dcm在启动例程时会调用该函数

DcmDspStopRoutineFnc:结束例程时调用的函数名。若不为空,Dcm在结束例程时会调用该函数

DcmDspStopRoutineSupported:该例程是否支持STOP操作。若设置false,Dcm接收stop操作(3102)时会返回NRC12。

8.ComControl

这个容器包含通信控制的配置

DcmDspAllComMChannelRef:配置引用CAN通道,根据需求,可配置多个通道。

(1)接下来我们介绍下DCM如何通知BSWM模块的通信控制的。

Autosar代码中有这12中通道配置。控制应用报文、网络管理,以及RX和TX。

Bswm模块制定相应的规则来控制CAN的收发功能。

举例:

上图中CANA应用报文的TX规则:接收到“DCM_DISABLE_RX_TX_NORMAL”和“DCM_DISABLE_RX_TX_NORM_NM”就关闭CANA应用报文的TX功能,反之开启CANA应用报文的TX功能。

9. DcmDspControlDTCSetting

这个容器包含DTC开关控制的配置

DcmDspControlDTCSettingReEnableModeRuleRef:控制重启DTC设置的规则。如果设置,Dcm会在DisableDTCSetting请求开始的时候监控,如果不满足规则,Dcm会自动启动DTC。

DcmSupportDTCSettingControlOptionRecord:指定是否支持DTC group参数。若设置false,Dcm接收带有DTC group参数的请求时直接拒绝;反之,Dcm接收85服务时可带DTC group参数。

例如IFC项目中默认配置下也可以支持85 01/02, 但是IDC项目中就必须加上DTC Group,所以IDC就需要将配置勾选取消。

10.DcmDspSecurity

这个容器包含安全访问的配置

DcmDspSecurityBypassEnabled:安全访问是否支持Bypass模式。

DcmDspSecurityResetAttemptCounterOnTimeout:延时计时器到期时Dcm是否复位安全尝试计数器。

DcmDspSecuritySingleInstanceAttemptMonitor:安全访问是否使用同一个尝试计数器。若位置true,所有的DcmDspSecurityRows共用一个安全尝试计数器;反之,每个DcmDspSecurityRows都单独使用一个安全尝试计数器。

DcmDspSecuritySingleInstanceDelayTimer:安全访问是否使用同一个计时器。同上。

DcmDspSecurityADRSize

DcmDspSecurityAttemptCounterEnabled:安全尝试计数是否支持外部存储。若设置true,Dcm调用读写尝试计数器的API接口;反之,Dcm在初始化的时候清空这个安全访问等级的尝试计数器

DcmDspSecurityCompareKeyFnc:秘钥比较函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。

DcmDspSecurityDelayTime:安全访问延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。Dcm只有在失败尝试次数达到设置次数之后才会配置该时间。

DcmDspSecurityDelayTimeOnBoot:Dcm在上电周期内的延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。若设置非0,Dcm从初始化后的这段时间会拒绝任何安全访问请求。

DcmDspSecurityDelayTimeOnFailedGetAttemptCounter:设置获取尝试次数失败后的延迟时间。

若不设置,Dcm获取失败后直接将计数清0,接收安全访问请求;

若设置为0,Dcm会一直等待获取尝试次数的结果,在此期间拒绝任何安全访问请求;

若设置不为0,Dcm会在这段时间内等待获取尝试次数的结果,在此期间拒绝任何安全访问请求,若超时,回复NRC响应(商榷)。

DcmDspSecurityGetAttemptCounterFnc:获取尝试次数的函数名。Dcm初始化时重载尝试计数器。

DcmDspSecurityGetSeedFnc:获取种子函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。

DcmDspSecurityKeySize:安全访问密钥长度。

DcmDspSecurityLevel:安全访问等级。

DcmDspSecurityNumAttDelay:安全访问尝试次数。若设置大于0,尝试失败的次数超过该值时返回NRC36;若设置等于0,不限失败尝试次数。

DcmDspSecuritySeedSize:安全访问种子长度。

DcmDspSecuritySetAttemptCounterFnc:修改安全访问尝试次数的函数。

DcmDspSecurityUsePort:安全访问类型。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 = (<sub-function id> + 1) / 2

比如内部安全解锁等级为27 61,那Subfunction Id为0x61(Hex), DcmDspSecurityLevel为49(Dec)。

11.DcmDspSession

这个容器包含会话控制的配置

DcmDspSessionForBoot:定义切换会话是否跳转到Boot。DCM_NO_BOOT:不跳转Boot;

DCM_SYS_BOOT:xxx; DCM_SYS_BOOT:xxx (有何区别)。

DcmDspSessionLevel:指定相应诊断会话的值

DcmDspSessionP2ServerMax:指定诊断会话的 P2 时间(以秒为单位)。

DcmDspSessionP2StarServerMax指定诊断会话的 P2* 时间(以秒为单位)。

总结

以上是DSP子模块通用容器配置,我们仅仅用到其中一部分配置,很多配置还需具体实践。

Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)相关推荐

  1. Autosar Dcm模块介绍

    DCM模块介绍 诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话. ...

  2. AUTOSAR工具DaVinci Configurator Pro介绍

    一.说明 有条件的童鞋直接看vector的视频比较好,由于众所周知的问题,某些童鞋上不去 https://www.youtube.com/watch?v=YotM7g3M77Q&t=3s 二. ...

  3. Xbee Pro 900HP模块的API模式组网配置

    为使无人机编队个体间实现组网通信,需要选用合适的通信模块构建通信网络.前期曾试用ZIGBEE模块(DRF1605),但其传输速度不能令人满意--每秒最快只能接收10个数据包,320个字节,将近2.4K ...

  4. Davinci Configurator Pro -- Davinci Developer

    Developer 用于设计SWC (AUTOSR CP) Configurator 用于配置生成BSW/RTE (AUTOSAR CP) Vector's DaVinci Developer too ...

  5. 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...

  6. 【资源共享】DaVinci Developer DaVinci Configurator Pro 加密狗复制

    DaVinci Developer & DaVinci Configurator Pro 正式版授权KEY 加密狗复制模拟破解QQ1253749188 1.HighlightsDesign f ...

  7. autosar中com模块_详细介绍AUTOSAR各个模块作用PART1(OS,SYS)

    这片文章中我们详细讲解下每个模块的功能,上图是vector的autosar方案,每个模块的详细介绍后续会有单独文章进行讲解,请关注.以下是各个模块的简介 1.VHSM hardware Securit ...

  8. fanuc系统ug后处理_UG新版后置post configurator后处理配置器之备刀(预选刀)换刀不输出T问题处理方法...

    那么这个post configurator后处理配置器确实UG出来好几年了,记得当时10.0出来这个功能我第一时间还研究了一下,还做过一个演示视频发论坛里面,记得那是2015年的时候了,不知不觉又过了 ...

  9. AUTOSAR ComM模块介绍

    AUTOSAR ComM模块介绍 Autosar ComM概述 Autosar ComM 全称是 Autosar Communication Manager,顾名思义就是用来管理通讯的,ComM 模块 ...

最新文章

  1. Linux基础:Shell脚本学习
  2. 道路运输车辆卫星定位系统JT/T808服务实现和压测
  3. 220V双向TVS二极管,如何正确选型?
  4. 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
  5. 静态ip和动态ip的区别_动态IP和静态IP有哪些区别?
  6. 一步步学习EF Core(2.事务与日志)
  7. HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线
  8. python rindex()_Python3 rindex()方法
  9. shell编写监控httpd服务80端口脚本.间隔3秒监控端口如果服务关闭自动重启
  10. httpServletRequest中的流只能读取一次的原因
  11. Builder(生成器)
  12. oracle odi 目标数据存储: 临时目标数据存储未与连接关联,ODI知识模块--IKM Oracle Incremental Update...
  13. yum源的三种安装配置方式,总有一款适合你
  14. python tkinter 图片_如何用python tkinter插入显示图片?
  15. pon终端测试仪_JW3313 PON终端状态测试仪
  16. MobTech观察 | CSDN:企业数字化转型如何提升段位?杨冠军畅谈企业数字化前世今生
  17. LabVIEW 通讯与罗克韦尔 AB Allen Bradley PLC通讯 EhernetIP 网口TCP标签通讯 SL500实测通过
  18. 2020年CISP每日一练
  19. 计算机二级试题word,计算机二级考试word试题及答案.doc
  20. 计算机组装实验vr,教你如何组装一台能玩VR及54K游戏的电脑

热门文章

  1. HttpServletRequest请求中获取操作系统,浏览器及浏览器版本信息
  2. 林瑞c语言代码规范,林瑞庆
  3. 友邦人寿发布非一线差异化发展策略,稳步加速中国市场拓展布局
  4. 想成为魅力十足的人的十大习惯
  5. 智能卡 PSAM 卡片文件结构
  6. 长隆大马戏机器人_长隆娱乐登陆
  7. 京东实习生招聘面试小记
  8. unity3D埃及探险游戏源码,支持安卓+IOS双端 unity2019 C#语言开发
  9. 手指计数——长在身上的计算机
  10. hdu 2665 Kth number(划分树模板)