这张图和恒润教程中的BootLoader流程大体是一致的。

预编程阶段

1. 3E TP报文。

2. 10服务切换到03扩展模式。

3. 85服务和28服务,关DTC和非诊断报文。使整个CAN网路处于安静的状态。

主编程阶段

1. 10服务切换到编程模式,肯定响应后应跳转到boot段程序

2. 读取一个DID,tester要判断一下返回值。返回值里面可能包含密钥的一部分信息。

3. 27服务,解锁,通过安全验证。

4. 写DID指纹,标记写软体人的身份,ECU回复写指纹成功。(该步骤是否为必须实现?)

5. 31服务,擦除Flash。ECU肯定响应,擦除成功。

6. 34服务,请求数据下载,ECU回复确认最大块大小。

7. 36服务,开始传输数据。每个块传输完成后,ECU肯定响应。

8. 37服务,请求退出传输。ECU肯定响应。判断是否还有更多块需要下载。若有更多块需要下载,重新执行34-36-37服务。若无,往下执行。

9. 31服务,校验APP段程序,检查编程一致性/完整性。ECU肯定响应。校验成功。

10. 11服务,ECU复位。之后应直接跳转到新下载的APP段程序中。

后编程状态

1. 10服务切换到03扩展会话。

2. 执行85服务和28服务,使能DTC和非诊断报文。

3. 27服务,安全校验,准备写入数据。

4. 2E服务,将编程信息写入到ECU中。

5. 10服务,退回01默认会话。结束。

BootLoader的启动顺序与转换流程

1. ECU上电或复位后,先进入Boot段。从Flash/EEPROM中读取 App有效标志运行boot标志 。

2.判断 运行boot标志 ,若为1,则进入Boot段的编程会话(安全等级为上锁),之后写Flash/EEPROM, 运行boot标志 清零。若S3定时器超时则退回Boot段默认会话。

3. 经过安全访问进入Level2解锁状态,开始执行App内存擦除,擦除后 App有效标志 清零

4. 开始烧写。烧写成功后 运行boot标志 写0,App有效标志 写1。

2*. 判断 运行boot标志 ,若为0,则进入Boot段的默认会话。

3*. 50ms后判断 App有效标志 ,若为1,则 跳转到 App段默认会话。实现时使用汇编指令执行APP段程序;若为0,退回Boot段默认会话,且不再判断 App有效标志,不会再尝试进入App段。

4*. App段程序若收到了编程会话请求, 运行boot标志写1 ,随即执行ECU复位,这样会重新进入boot段程序。

注:从BOOT跳入APP前需要判断APP的数据完整性,例如进行CRC校验。

未完工

参考资料:

1.汪春华, 白稳峰, 刘胤博, et al. 基于CAN汇流排UDS服务BootLoader应用开发[J]. 电子测量技术, 2017, 40(2):166-170.

2.FlashBootloader - 图文 - 百度文库

3.blog.csdn.net/u01087563

4.blog.xueming.org/archiv

5.张丁:基于UDS的ECU软体刷写流程


推荐阅读:
相关文章