Autosar DCM配置 27服务

📅 2026/7/11 12:46:54
Autosar DCM配置 27服务
本文将介绍基于ETAS Autosar工具链实现UDS 27 服务以及实际使用展示1.进行服务配置这里配置了两个安全等级LV1和LV2 27解锁等级LV1对应27 01(请求种子)和27 02响应秘钥。27解锁等级LV2对应27 03和27 042.针对安全等级进行对应的详细配置。下面的DealyTime该项目设置的10s有些项目可能是20s等。这个时间的作用是当27服务解锁失败达到最大次数时比如该项目是3次那么就开启一个10s的定时器如果10s内还继续访问27服务就回复NRC37。10s内即使种子正确也是回复NRC37。3.上面BSW部分已经全部配置完接下来还需要再ASW里面去配置相关的函数调用。并生成RTE。添加底层生成的服务函数添加实际代码调用的函数Event进行关联4.添加完之后要进去映射5.最后需要抽象提取一下抽象点进去以后有一些选项可以不勾只勾第一个ignore comspec conflicts。然后再生成RTE。6.抽象完就点击对应的生成按钮去生成就好了。这里就不截图展示了。 目前我这边的项目用ETAS生成RTE和BSW。 OS的生成需要用到ETAS一个专门的OS工具。每次生成完RTE需要将相关的OS文件替换到OS路径下然后用OS工具加载目标工程OS文件再生成一遍OS。如果你的版本可以直接用ETAS工具生成不需要专门的OS工具。可以忽略OS工具步骤。7.部分代码展示FUNC(Std_ReturnType, TestDiag_CODE) Swc_DSP_SEC_LEV_L2_GS_func( VAR(Dcm_OpStatusType, AUTOMATIC) OpStatus, CONSTP2VAR(uint8, AUTOMATIC, RTE_APPL_DATA) Seed, CONSTP2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_APPL_DATA) ErrorCode) { /*这里可以写获取种子的算法*/ } FUNC(Std_ReturnType, TestDiag_CODE) Swc_DSP_SEC_LEV_L2_CK_func( P2CONST(uint8, AUTOMATIC, RTE_APPL_DATA) Key, VAR(Dcm_OpStatusType, AUTOMATIC) OpStatus, CONSTP2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_APPL_DATA) ErrorCode) { /*这里进行秘钥对比可以写秘钥算法然后和上位机传回来的秘钥进行对比*/ }避坑27服务的流程算是教复杂的实际开发过程中需要和客户确认好需求。比如连续请求种子时即只请求种子不进行秘钥对比这个时候是正常回复种子还是回复NRC。连续请求种子时是回复相同的种子还是不同的种子。 有些需求需要详细看客户规范然后再到对应的标准的规范里面去找。总结27解锁流程按照最大失败次数3延时时间10s来归纳。对应的失败次数是会存储到EE的。当第三次失败时会开启10s定时器且会回复NRC36。连续四次解锁失败就是依次回复NRC35,NRC35,NRC36,NRC37。 10s之后才可以再次进行解锁。10s内解锁都是回复NRC37。后面会出一版27高阶版比如算法NRC响应机制详细交互流程等