文章目录前言一、CCP的实操报文二、解锁流程三、GET_SEED—种子获取四、UNLOCK—ECU解锁总结前言大家好我是左工在前面文章CCP基本命令—ECU的ID获取、数据上传中我们介绍了CCP协议的两个命令ECU的ID获取EXCHANG_ID0x17和数据上传UPLOAD0x04。今天我们来介绍另外两个命令种子获取GET_SEED0x12和ECU解锁UNLOCK0x13。一、CCP的实操报文在文章CCP基本操作流程与效果展示中当我们将ECU和上位机软件通过CAN卡硬件连接在一起后我们在上位机软件上点击“建立连接”按钮用于建立上位机和ECU之间的逻辑连接如下图所示。点击“建立连接”之后在报文窗口的前几帧报文我们已经在文章CCP基本命令—连接请求、版本获取和CCP基本命令—ECU的ID获取、数据上传进行了详细的解释。今天我们来解读后面12帧报文的信息。从命令码可以看出这12帧报文就是把0x12和0x13命令用了三遍。因此我们只需要了解这两个命令就能完全理解这12帧报文了。二、解锁流程在文章CCP基本命令—ECU的ID获取、数据上传中我们了解到通过ECU的ID获取命令我们可以确认CCP支持哪些功能和哪些功能被锁定保护了。那么这些被锁定保护的功能如何解除锁定呢解锁流程很简单如下图所示。上位机软件先向ECU申请一个4字节的种子然后根据种子计算一个密钥返还给ECU。如果密钥正确那么ECU就会解锁该功能。依靠上面的流程每次只能解锁一个功能或资源。由于示例中的ECU支持三种功能所以解锁流程被执行了三遍。下面还有一个问题计算密钥的算法从哪里设置呢我们可以回看前面的文章CCP基本操作流程与效果展示这里加载了一个包含密钥算法用于解锁ECU功能的.dll解锁文件。上位机就是靠这个算法计算密钥的。一般情况下这个.dll文件是由主机厂提供的这样零部件供应商即使参与了开发过程也无法获取密钥算法从而保证了产品的安全性。下面我们来看看具体的命令使用方法。三、GET_SEED—种子获取GET_SEED主要是用来向ECU申请种子。该命令的代码是0x12CRO格式如下所示。上面出现的CRO、CTR、PID和ERR等概念如果忘记了请参看文章CCP 基本概念与核心原理和CCP的消息基本格式。我们重点解释一下其他几个字节的意义。CRO中“请求开放的功能字节”与功能之间的对应关系如下图所示。其中标定CAL、DAQ通讯模式DAQ和程序烧写PGM分别是CCP常用的三个功能。针对GET_SEED命令反馈的DTO格式如下所示。对于DTO中“请求功能当前保护状态”字节值为“假0x00”时表示该功能没有被保护不需要UNLOCK命令解锁“请求功能当前保护状态”字节值为“真0x01”时表示该功能被保护了需要UNLOCK命令解锁。有了上面的基本知识我们来解析一下前两帧报文。第一帧报文是上位机软件用ID为0x10的CAN报文发送了一帧命令帧CMD。第0字节为命令代码0x12意思是发起了一个种子请求GET_SEED。第1字节为命令序号0x06也就是上位机软件发出的第0x06十进制6号。第2字节为0x01二进制为0000 0001表示请求开放的功能为第0位对应的CAL功能也就是标定功能。第二帧报文是ECU用ID为0x2D的CAN报文发送了一帧响应帧RES。第0字节为PID码0xFF意思是这是一个命令返回消息CRM-DTO是对某个命令的反馈。第1字节为0x00错误代码为0x00查看文章CCP的消息基本格式中错误代码定义这个代码的意思是“确认/无错误”。第2字节是0x06意思是该响应帧是对第0x06号命令也就是上面的GET_SEED命令的响应。第3字节0x01表示CAL标定功能当前受保护状态为真需要UNLOCK命令解锁。第4~7字节表示种子为0x010x000x000x00。四、UNLOCK—ECU解锁通过GET_SEED命令获得的种子上位机软件通过计算可以获得密钥。上位机软件通过UNLOCK命令将密钥返回给ECU的。UNLOCK命令代码是0x13。该命令的CRO格式如下所示。反馈DTO格式如下所示。这里重点说一下第3字节“各项功能当前状态”。这个字节各位与功能对应状态也是如下表所示。如果对应位为“1”那么对应的功能已经解锁如果是“0”那么对应的功能没有解锁。我们来解析一下第三、四帧报文。第三帧报文是上位机软件发送了命令帧。第0字节为0x13ECU解锁。命令序号承接了前面序号继续排序为0x07号。第2~7字节表示密钥为0x020x010x010x010xFF0xFF。ECU回复了第四帧报文作为ECU的响应。第0字节为0xFF是一个命令回复PID。第1字节为0x00表明认/无错误。第2字节是0x07表明是对0x07号命令的回复。第3字节“各项功能当前状态”是0x01二进制为0000 0001表示第0位对应的CAL功能已经解锁了。我们可以看见剩余几帧报文都是重复使用GET_SEED和UNLOCK指令。UNLOCK命令回复中“各项功能当前状态”位由0x01二进制为0000 0001变为了0x03二进制为0000 0011最后变为了0x43二进制为0100 0011表明标定CAL、DAQ通讯模式DAQ和程序烧写PGM三个功能被依次解锁了。总结今天我们依托于实际用例了解了种子获取和ECU解锁命令。相信大家对CCP的命令使用有了初步的了解。后续左工会继续依托于实际应用向大家其他命令的具体使用方法。请敬请收藏关注不迷路。