一、UDS刷写流程
① 0x22 服务:读取控制器ID及版本信息等
通过取控制器引导程序版本、所支持的数据版本与待烧写的数据文件进行对比,避免出现数据文件与控制器不对应的情况
可依次进行多个DID查询 如: F180--引导程序编号 F185--标定数据版本号
上位机:2F F1 80 F1 85
下位机:一次性使用多帧的回复两个编号
②0x27 服务 :安全访问 通过seed key来进入不同的安全等级
其中seed 是下位机随机生成的,key是通过seed计算得来的,具体算法可参照github代码
根据算法按照不同格式生成对应的dll文件,加载到ZCANPRO 或者TSmaster 中,软件可以自动根据dll文件算key并发送解锁。
算法多为CRC算法,github中代码已经有完整解决方案。内容偏多 这里不多说。
③ 0x10服务:诊断会话控制
成功解锁后便上位机便可以发送 10 02 进入编程会话
④ 0x31 例程控制--flash编程开始
例程控制具体实现的操作由子服务和RLID 决定,ID 对应的例程在底层代码中实现
如 flash编程开始 需要上位机发送 31 01 F0 10
flash编程结束 需要上位机发送 31 02 F0 10
⑤0x31 例程控制--擦除数据
上位机: 31 01 F0 30+起始地址+结束地址
⑤下载数据 使用0x34 0x36 0x37 服务组合使用;
对内存中的每个block 都需要使用一次组合。
0x34 服务:设置传输地址
34 00 44 +内存起始地址+数据长度
0x3