1:安全访问请求服务标识符(SA),值为[27] 2:子函数=[安全访问类型= 发送密钥](LEV_SAT_SK),值为[02,04,06,08到7E] 3,...,#n:安全密钥[] = [Key #1(高字节),...,Key #m(低字节)](SECKEY_KEY1HB,...,SECKEY_KEYmLB),值为[00到FF,...,00到FF] 10.4.2.2 请求消息子函数参数$Level (...
请求:Tester --> 0x7DF报⽂ --> 发给所有ECU 响应:引擎ECU --> 0x7E8报⽂ --> Tester 响应:空调ECU --> 0x728报⽂ --> Tester 响应:⻋⻔ECU --> 0x768报⽂ --> Tester UDS的报⽂是整体放在CAN报⽂数据域中 1. 每⼀帧UDS的报⽂⼜分为“⽹络传输层”的数据和“应⽤层...
——一对多通信,称为功能寻址或广播寻址。取决于N_NAD值的通信模式如下:——00:不适用,预留用于休眠指令帧;——01-7D:物理寻址类型;——7E:功能寻址类型;——7F:广播寻址类型;——80–FF:专用寻址类型。 所有类型的网络层帧都应支持物理寻址。请求得到响应是在预期中的。 N_NAD值应始终根据从节点中配置的NAD...
此外,还给整车厂及供应商提供了自主定义的会话范围,如供应商可以在10 60至10 7E间开发自己使用的会话服务。 在10服务使用中,如应答为否定应答,则对应的否定NRC代号对应解析: 3.2 27 安全访问 ECU当中有很多数据是整车厂独有的,从保密性角度考虑,ECU上电之后是一个锁定的状态(Locked),在读取一些特殊数据的时候,...
举个例子,假设扩展会话模式下,读写数据前需要先解锁,比如约定好了,这种场景下解锁采用的是27 01命令。我们发送27 01请求种子;ECU发送67 01 36 57,其中36 57是种子。密钥是种子的二进制补码,于是客户端计算出密钥是C9 A9;随后通过27 02 C9 A9发送密钥给ECU;ECU验证正确后,回复67 02,表明解锁成功。解锁成功后...
7E是在当前会话下subfunction不支持 7F是在当前会话下服务不支持 来看两个时间参数,一个是叫做P2Sever,一个是叫做P2Sever*。当Tester给ECU发送请求过后,ECU需要在P2Sever时间内给出相应的响应,如果ECU当前正在处理别的任务,处理别的事情,而不能在P2Sever的时间内给出相应的响应,那么它先在P2Sever时间内给出一个NR...
请求的服务是功能寻址时,NRC为:服务不支持(0x11),当前会话服务不支持(0x7F),子功能不支持(0x12),当前会话子功能不支持(0x7E),请求超出范围(0x31),不管SPRMIB是否置位,都不会回复NRC。但前提是没有回复NRC 0x78的情况下。括号里面那句话很重要
7E表示当前会话下Sub-function不支持 7F表示当前会话下服务不支持 Sub-function分成了两部分(14229 P39) Bit7,Suppress postive reponse message indication bit,抑制正响应位 为0时,不抑制正响应消息 为1时,抑制响应消息,正响应消息不应该被发送 负响应消息不受抑制正响应位影响,会根据协议规定的限制发送 ...
14:27:24:199:记录提示“准备进入Check Programming Integrity”。 发送指令:0x720 31 01 df ff(校验程序完整性)。 收到响应:0x790 71 01 df ff 00,表示完整性校验通过。 14:27:24:257:记录提示“准备进入Check Programming Dependencies”。 发送指令:0x720 31 01 ff 01(校验编程依赖关系)。
$27安全访问 image.png 27服务,加上一个子服务,再加上一个钥匙,这样的服务请求可以进行解锁。 比如下面的例子,2n-1是某个子服务,通过首轮种子的请求,首轮ECU会返回67+01+AA+BB+CC+DD,AA~DD就是种子了。之后第二轮,诊断端会利用种子进行运算(利用整车厂的算法),生成k1(不一定是1个字节),那么发送请求,27+...