CAN报文—— UDS中的0x27服务

一、

        SID 0x27在ISO 14229标准中代表安全访问服务(SecurityAccess Service)。该服务用于在客户端(如诊断工具)请求访问ECU(电子控制单元,这里是HUD后端板)的受限制数据或诊断服务时,提供一种安全验证机制。以下是SID 0x27服务的主要特点和使用流程:

目的:

由于保密、排放或安全原因,安全访问服务提供了一种方法来限制对ECU的某些数据或诊断服务的访问。

使用流程:

客户端发送seed(种子)请求给ECU。
ECU响应并发送一个seed值给客户端。
客户端根据接收到的seed值,使用预定的安全算法生成一个key(密钥),并将该密钥发送给ECU。
ECU验证客户端发送的密钥是否正确。如果验证成功,ECU将解锁对特定服务或数据的访问权限,并向客户端发送肯定响应。如果密钥不正确,ECU将发送否定响应,并可能要求客户端重新发送seed请求。

请求和响应格式:

客户端发送seed请求时,消息格式为“0x27 0x**”(其中“0x**”是子功能,通常为奇数,表示请求seed)。
客户端发送密钥时,消息格式为“0x27 0x**”(其中“0x**”是子功能,通常为偶数,表示发送密钥,且比对应的seed请求子功能值大1)。
ECU的肯定响应格式为“0x67 0x**”(其中“0x67”是响应(即SID 0x27 + 0x40),表示对SID 0x27的响应,“0x**”是响应的子功能,与请求的子功能相对应)。
ECU的否定响应格式为“0x7F 0x** 0x&&”(其中“0x7F”是否定响应的固定SID,“0x**”是请求的服务ID,“0x&&”是NRC错误码,描述返回错误的原因)。

安全特性:SID 0x27服务通过种子和密钥的交换,确保了只有拥有正确安全算法的客户端才能访问ECU的受限制数据或诊断服务,从而提高了系统的安全性。

二、

       否定响应的NRC(Negative Response Code,否定响应代码)是指示UDS(Unified Diagnostic Services,统一诊断服务)或其他诊断协议中否定响应原因的代码。NRC主要用于表示诊断请求未被接受或执行失败的情况。以下是一些常见的NRC代码及其含义:

0x11:表示由于ECU(电子控制单元)不支持请求的服务,所以请求的动作没有被执行。

0x12:表示由于ECU不支持请求报文中具体服务的参数,所以请求的动作没有被执行。

0x13:表示由于接收到的请求报文的长度与具体服务预定义的长度不能匹配或参数的格式与具体服务预定义的格式不能匹配,所以请求的动作没有被执行。

0x21:表示ECU暂时太忙而暂时不能执行请求的操作。

0x22:表示由于ECU端先决条件不满足,所以请求的动作不会被执行。

0x24:表示由于诊断工具所发送的请求报文的顺序不符合ECU的规定,所以请求的动作没有被执行。

0x25:表示ECU已经接收到请求,但是由于提供必需的被请求信息的子网部件未在规定的时间响应,导致请求的动作不能被ECU执行。

0x36:表示由于诊断工具获取安全访问权限的尝试失败次数超过了ECU安全策略所允许的次数,所以请求的动作不能被执行。

0x78:表示请求的报文被正确接收到,请求报文中所有的参数均是有效的,但是所执行的动作还未完成,而ECU还未准备好接收另一个请求。

0x7E:表示由于ECU在当前的会话模式下不支持请求的子功能,所以请求的动作不能被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值