本文框架
- 1. 系列介绍
- 27服务概述
- 2. 27服务请求与应答
- 2.1 27服务请求
- 2.2 27服务肯定应答
- 2.3 27服务否定应答
1. 系列介绍
UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是面向整车所有ECU的一种诊断通信方式,是基于ISO 14229规范的规范化诊断服务标准,其位于OSI模型中的应用层,UDS可基于不同的总线实现,如基于CAN总线可再结合ISO1576协议进一步实现传输层,本篇将介绍27安全访问服务相关内容:
27服务概述
ECU当中有很多数据是整车厂独有的,从保密性角度考虑,ECU上电之后是一个锁定的状态(Locked),在读取一些特殊数据的时候,要先进行一个安全解锁,我们通过$27服务,加上一个子服务,再加上一个钥匙,这样的服务请求可以进行解锁。
如下图,其中2n-1是一个子服务,其安全访问过程为:
First Step:Tester端向ECU端发送首轮种子的请求,首轮ECU会返回67+2n-1+AA+BB+CC+DD,其中AA~DD就是种子,Tester端会利用种子进行运算计算得到k1;
Second Step:Tester端向ECU端发送请求,27+2n+[k1]。ECU同样也会通过种子算出k2。当k1和k2相等时,则解锁(Unlocked),安全访问成功。
2. 27服务请求与应答
2.1 27服务请求
27服务中,requestSeed与SendKey总是成对出现,不同的组合代表不同的安全等级,但安全等级间一般并没有依赖从属关系,独立存在。
如:27 01 与27 02,27 03 与27 04分别为两对组合。
在UDS规范中请求种子及发送秘钥对应的子服务如下表:
2.2 27服务肯定应答
2.3 27服务否定应答
如应答为否定应答,则对应的否定NRC代号对应解析: