1. ECUReset (0x11) service
该诊断服务简称ECUR诊断服务,客户端通过该诊断服务命令服务器(电控单元)复位。服务器应先发送肯定响应报文,再执行复位。
1.1 请求格式:SID + sub function
请求SID:0x11格式固定两个字节,第一个字节为SID:0x11;第二字为sub function参数,用于请求ECU将以何种方式复位。如下图所示:
sub function参数如下:
0x00 : ISOSAEReserved
0x01 : hardReset
0x02 : keyOffOnReset
0x03 : softReset
0x04 : enableRapidPowerShutDown
0x05 : disableRapidPowerShutDown
0x06 – 0x3F :ISOSAEReserved
0x40 – 0x5F :vehicleManufacturerSpecific
0x60 – 0x7E :systemSupplierSpecific
0x7F:ISOSAEReserved
1.2 响应格式:response SID + sub function + parameter
积极响应格式分为三部分:第一部分:一字节response SID:0x51; 第二部分:一字节sub function;第三部分:一字节powerDownTime(只有请求sub function为0x04时,才会响应该参数)。如下图所示:
1.3 举例
2. SecurityAccess (0x27) service
SecurityAccess :ECU有些数据是整车厂独有,不希望随便被读写或者一些诊断服务,需要进行安全验证,unlocked后才能访问,默认情况下是locked状态。一般情况下,从非default Session切换至default session或者重启会回复为locked状态,需要重新unlocked才能进行相应的访问。
完成SecurityAccess 有以下步骤:
1.诊断仪向ECU请求“Seed”(通常是一个与时间相关的伪随机数),
2.ECU向诊断仪发送“Seed”,
3.诊断仪向ECU发送“Key1” (根据请求得到的Seed和一个本地的算法进行计算得来)
4.ECU判断诊断仪发来的“Key1”是否有效(ECU也通过相同的seed和算法计算出key2,然后key1和key2进行匹配,匹配成功则unlocked)
2.1 请求格式:SID +sub function + parameter
根据UDS的定义,0x01,0x03, 0x05, 0x07 – 0x41 这个范围留给用于requestSeed的sub-function;0x02,0x04, 0x06, 0x08 – 0x42这个范围留给用于sendKey的sub-function。requestSeed和sendKey是成对存在的,当requestSeed为2n-1时,sendKey就等于2n。具体选择哪对值,由整车厂自己定义。整车厂也可以选择多对sub-function,用于不同等级的安全访问。生成的key值字节数大小取决于整车厂。
格式参数如下图所示:
2.2 响应格式:response SID + sub function + parameter
ECU反馈给诊断仪的seed值字节数大小取决于整车厂。ECU响应诊断仪的seed请求格式如下图所示:
2.3 举例
UDS协议栈系列文章: