Autosar Dcm模块之Vector Configurator Pro配置(DSP子模块)
背景
之前简单介绍了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子模块)相关推荐
- Autosar Dcm模块介绍
DCM模块介绍 诊断通信管理(Diagnostic Communication Manager, DCM)模块作为AutoSar诊断模块的重要组成部分,主要负责诊断数据流和管理诊断状态,包括诊断会话. ...
- AUTOSAR工具DaVinci Configurator Pro介绍
一.说明 有条件的童鞋直接看vector的视频比较好,由于众所周知的问题,某些童鞋上不去 https://www.youtube.com/watch?v=YotM7g3M77Q&t=3s 二. ...
- Xbee Pro 900HP模块的API模式组网配置
为使无人机编队个体间实现组网通信,需要选用合适的通信模块构建通信网络.前期曾试用ZIGBEE模块(DRF1605),但其传输速度不能令人满意--每秒最快只能接收10个数据包,320个字节,将近2.4K ...
- Davinci Configurator Pro -- Davinci Developer
Developer 用于设计SWC (AUTOSR CP) Configurator 用于配置生成BSW/RTE (AUTOSAR CP) Vector's DaVinci Developer too ...
- 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述
前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...
- 【资源共享】DaVinci Developer DaVinci Configurator Pro 加密狗复制
DaVinci Developer & DaVinci Configurator Pro 正式版授权KEY 加密狗复制模拟破解QQ1253749188 1.HighlightsDesign f ...
- autosar中com模块_详细介绍AUTOSAR各个模块作用PART1(OS,SYS)
这片文章中我们详细讲解下每个模块的功能,上图是vector的autosar方案,每个模块的详细介绍后续会有单独文章进行讲解,请关注.以下是各个模块的简介 1.VHSM hardware Securit ...
- fanuc系统ug后处理_UG新版后置post configurator后处理配置器之备刀(预选刀)换刀不输出T问题处理方法...
那么这个post configurator后处理配置器确实UG出来好几年了,记得当时10.0出来这个功能我第一时间还研究了一下,还做过一个演示视频发论坛里面,记得那是2015年的时候了,不知不觉又过了 ...
- AUTOSAR ComM模块介绍
AUTOSAR ComM模块介绍 Autosar ComM概述 Autosar ComM 全称是 Autosar Communication Manager,顾名思义就是用来管理通讯的,ComM 模块 ...
最新文章
- Linux基础:Shell脚本学习
- 道路运输车辆卫星定位系统JT/T808服务实现和压测
- 220V双向TVS二极管,如何正确选型?
- 【邀请函】2021钉钉宜搭·线上沙龙,邀您云上相见!
- 静态ip和动态ip的区别_动态IP和静态IP有哪些区别?
- 一步步学习EF Core(2.事务与日志)
- HDU - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?! 莫队/单调栈 + 线段树/ST表在线
- python rindex()_Python3 rindex()方法
- shell编写监控httpd服务80端口脚本.间隔3秒监控端口如果服务关闭自动重启
- httpServletRequest中的流只能读取一次的原因
- Builder(生成器)
- oracle odi 目标数据存储: 临时目标数据存储未与连接关联,ODI知识模块--IKM Oracle Incremental Update...
- yum源的三种安装配置方式,总有一款适合你
- python tkinter 图片_如何用python tkinter插入显示图片?
- pon终端测试仪_JW3313 PON终端状态测试仪
- MobTech观察 | CSDN:企业数字化转型如何提升段位?杨冠军畅谈企业数字化前世今生
- LabVIEW 通讯与罗克韦尔 AB Allen Bradley PLC通讯 EhernetIP 网口TCP标签通讯 SL500实测通过
- 2020年CISP每日一练
- 计算机二级试题word,计算机二级考试word试题及答案.doc
- 计算机组装实验vr,教你如何组装一台能玩VR及54K游戏的电脑