irpas技术客

【UDS】ISO14229之0x27服务_&春风有信_0x27服务

irpas 3047

文章目录 前言一、理论描述二、使用步骤1.总述2.请求3.响应 总结


->返回总目录<-

前言

简称: “SecurityAccess”,安全访问 功能: 由于(保密、排放或安全的原因),安全访问服务提供一种方法以方便访问受限制的数据或诊断服务。


一、理论描述

1,例如,上传/下载程序或数据至 ECU、读取 ECU 特殊位置中内存数据等诊断服务一般需要执行安全访问, 因为下载不恰当的程序或数据 至 ECU 可能破坏电子设备,或影响汽车的排放和功能安全。 (说白了就是防止乱刷程序到ECU)

2,支持安全访问的 ECU 应该实现种子和密钥的合理算法,该算法应在特定文档中(整车厂会给出算法规范)记录, 而只有特定的少数人(软件开发人员)可以访问该文档。

3,当外部测试工具(CANoe等上位机)从 ECU 中请求安全访问类型时,安全访问过程就开始了。 当外部测试工具提供的安全密钥与ECU 计算的安全密钥匹配时,将授予对 ECU 的安全访问权。

二、使用步骤 1.总述

举例子:某整车厂针对0x27服务的需求如下: 请求Seed(种子) 27 01 发送Key(密钥) 27 02 数据长度为4Byte

Step1: 诊断工具发送 “SecurityAccess-RequestSeed” 请求种子报文(27 01 ),ECU会回复一个带Seed数据的报文 (67 01 22 33 44 55 )。注: 此时ECU已经在代码里使用Seed计算出Key了。

Step2: 诊断工具收到ECU回复的Seed(如22 33 44 55),然后根据整车厂给出的算法,计算出Key(如 AA BB CC DD )。然后 发送包含密钥的“SecurityAccess-SendKey” (27 02 AA BB CC DD)服务报文给 ECU 请求比较密钥(Step1中计算的Key)。 如果密钥一致, ECU 使能(解锁)诊断工具对特定服务的使用权限和对特定数据的访问权限, 并通过“SecurityAccess-SendKey” 肯定响应(67 02)报文指出 ECU 和诊断工具认证成功。

Step3: 如果密钥不相符,此访问被认为是一次错误的访问尝试;(ECU回复NRC35:密钥无效) 如果是无效的密钥或者其他原因被 拒绝访问要求诊断工具从头开始重新发送“SecurityAccess-RequestSeed” 请求报文;如果连续密钥无效三次, ECU回复NRC36:超过最大尝试次数。此时需要等待10秒后才可以请求27 01服务,否则ECU回复NRC37:延时要求不满足

2.请求

第一个字节就是SID,后边的一个字节 用于标识将要访问的安全访问类型。下图红色框内是请求Seed的帧格式, 绿色框 是请求对比密钥的帧格式。

3.响应

1)正响应

见CANoe报文数据图中的蓝色框。 Response ID: 67 securityAccessType=requestSeed :01 securitySeed:00 95 00 06

见CANoe报文数据图中的黄色框。 Response ID: 67 securityAccessType=SendKey:02

2)否定响应 支持的否定响应如下,一般工作上根据整车厂给的诊断输入文档来选择要支持的NRC码。

博主平日项目中,常需要支持的是NRC 0x12,0x13,0x22,0x24,0x35,0x36,0x37,0x7F。

NRC12: 子服务不支持(根本没有27 00服务,安全访问类型不支持00) NRC13: 请求报文数据长度有误(请求数据27 01只有两个字节。而下图中请求的是27 01 00) 27前面的03是指发送报文的数据长度:27 01 00. NRC22: 请求条件不满足 (一般整车厂会告诉你NRC22的满足条件,例如:车速>3km/h,电源过欠压时候,请求服务,ECU便回复该NRC)

NRC24: 请求顺序不正确(不按套路出牌,一上来就请求27 02去对比密钥了) NRC35: 密钥对比有误(在请求27 02时候,输入错误的Key并且发送。) NRC36: 超过最大解锁尝试次数(错误一次 NRC35,错误第二次NRC35,错误第三次NRC36) NRC37: 延时要求不满足(回复NRC36之后,10秒延时时间内再次请求27 01)

NRC7F: 当前会话下服务不支持 (整车厂要求该安全访问服务,需要在Extend session会话下支持。10 01是默认会话,因此回复7F 27 7F )

总结

0x27服务还是比较有意思的,之前博主一直是手写代码的,现在的项目考虑到了功能安全,整车厂要求是Autosar架构的, 因此现在开发都是使用DaVinCi软件开发生成代码,很强大的软件(德国佬的确很6)。下一章0x28控制通信服务见!

->返回总目录<-


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #0x27服务 #下一章0x28控制通信服务见