【UDS刷写APP流程】

一、简介

1、Bootloader简介

2、ECU启动时序(bootlodaer和app切换逻辑)

二、实现所需要用到的UDS服务

补充每个服务的请求,正响应,否定响应的指令格式
三个服务做一个整体的执行流程

1、34请求下载

2、36数据传输

3、37请求推出传输

三、实现重编程的过程

1、预编程

做编程前的CAN网络准备。

  1. 进入扩展会话(功能寻址):10 83 (83表示不需要服务器应答)。
  2. 31例程控制(物理寻址):检查编程条件,31 01 XX XX,针对要刷写的ECU。一般就是检查供电电压,车速这些,如果厂家没指定,那么由ECU自己定义。如果ECU不满足预编程条件,则收到10 02进入编程模式时,返回0x22不满足条件否定响应。
  3. 停止DTC设置(功能寻址):85 82(82表示不需要服务器应答)。
  4. 通信控制(功能寻址):28 83 01 (82表示发送和接收报文都禁止,且不需要服务器应答,01表示是应用软件报文,若第三字节为03则表示应用软件和网络管理报文都禁止)。
  5. 读取版本号(物理寻址):22 XX XX。诊断仪读取当前ECU版本信息。

2、主编程

  1. 进入编程会话:10 02,此时在APP中应该执行复位,然后进入boot中的编程模式
  2. 安全访问请求种子:27 0x(x根据主机厂给的等级来定)
  3. 安全访问发送密钥:27 0x key(x是请求种子的数字+1)key是通过种子加密算法得到的
  4. 解锁成功后,2E服务写入指纹信息,一般就是时间和设备号这些
  5. 下载flash驱动:因为bootloader里平时是不带flash驱动程序的,防止意外操作导致flash改变,所以只有在刷写的时候才允许操作flash。下载完成后一般还需要例程控制31服务进行完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01)
  6. 擦除内存:由31服务执行,DID为FF00,擦除的地址和大小是由上位机给定还是ECU自己判断?应该是由上位机给出更合理
  7. 下载APP程序:34、36、37服务。下载完成后也需要例程控制31服务中的完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01-14229-1规定)
  8. ECU复位,一般发送11 01进行复位,复位完成后flash驱动程序将被清除。避免意外激活这些可能会进行非预期的内存擦除或程序操作的代码。

3、后编程

  1. 住编程完成后,ECU复位,诊断仪发送进入扩展模式 :10 83(功能寻址,不需要ECU回复)
  2. 恢复通讯 28 80 03 (功能寻址,不需要ECU回复,03表示网络管理报文和应用报文都恢复)
  3. 开启DTC诊断85 81(功能寻址,不需要ECU回复)
  4. 清除刷写ECU的故障信息 14 FF FF FF(物理寻址)
  5. 进入默认会话模式 10 01(功能寻址)
    以上,整个刷写过程就结束了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我见山河如故

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值