基于UDS服务的BootLoader架构和刷写流程


1. BootLoader支持的UDS服务

  • bootloader 不需要支持19/14等故障类服务

  • 在boot程序中, 10/27/11/3E 这样的基础服务需要支持;

  • 22/2E读写DID的服务需要支持

  • 31/34/36/37这bootloader主打服务需要支持

  • 在app段程序中,85和28服务需要支持,保证暂停CAN正常通信,暂停记录DTC,让被升级设备专心升级。

    SID ISO 14229 功能描述
    0x10 DiagnosticSessionControl 外部设备切换会话模式
    0x85 ControlDTCSetting 打开或关闭DTC
    0x28 CommunicationControl 打开或关闭CAN报文
    0x27 SecurityAccess 解锁ECU
    0x34 RequestDownload 请求命令
    0x36 TransferData 传输数据
    0x37 RequestTransferExit 请求退出传输命令
    0x31 RoutineControl 触发指令
    0x2E WriteDataByIdentifier 外部设备写入数据到ECU
    0x22 ReadDataByIdentifier 与ECU内部数据传输
    0x11 EcuReset ECU复位
    0x3E TesterPresent

2. Bootloader–三段式

2.1 预编程阶段

  • (1) 3E TP报文
  • (2) 10服务切换到03扩展模式
  • (3) 85服务和28服务, 关DTC和非诊断报文.使得整个CAN网络处于安静的状态
    这是对整车网络进行操作,一般以功能寻址的方式发送。 注意先用85服务关闭DTC,再使用28服务关报文
编号 收发 报文 说明
440 Rx 02 3E 80 00 00 00 00 00
703 Rx 02 10 03 00 00 00 00 00 切换到扩展诊断模式
4E0 Tx 06 50 03 00 14 03 E8 00 P2=20ms; P2* = 1000ms
440 Rx 02 85 82 00 00 00 00 00 关闭DTC
440 Rx 03 28 81 01 00 00 00 00 关闭报文

2.2 主编程阶段

  • (1) 10服务切换到编程模式

    正确的方式是App段程序回复0x78 NRC, 接下来跳转到boot段程序,最后由Boot段程序来回复10 02的肯定响应。 错误的方式是由App段回复10 02的肯定响应,再进行跳转。

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

  • (3) 27服务,解锁,通过安全验证

编号 收发 报文 说明
703 Rx 02 10 02 00 00 00 00 00 切换到编程模式
4E0 Tx 06 50 02 00 14 03 E8 00
703 Rx 03 22 F1 00 00 00 00 00 读DID = 0xF100
4E0 Tx 03 7F 22 78 00 00 00 00 0x78否定响应码
4E0 Tx 07 62 F1 00 01 00 00 02 ECU返回0xF100的DID
703 Rx 02 27 05 00 00 00 00 00 安全反问, 请求不同安全级别的种子
4E0 Tx 10 0A 67 05 08 27 11 F0 8字节的种子(多包第一帧数据)
  • 10 02服务不应直接进行肯定响应,存在风险

  • (1) 写DID(Data identifier)指纹, 标记写软件人的身份,ECU回复写指纹成功

  • (2) 31服务-擦除Flash。ECU肯定响应,擦除成功

  • (3) 34服务,请求数据下载,ECU回复确认最大块大小

  • (4) 36服务,开始传输数据,每个块传输完成后,ECU肯定响应,判断是否还有更多块需要下载,最多255块

  • (5) 37服务,请求退出传输。ECU肯定响应

  • (6) 31服务-检验APP段程序,检查编程一致性/完整性。ECU肯定响应。校验成功

  • (7) 若有更多块需要下载,重新执行31(擦除Flash区域)-34-36-37-31(校验)服务。若无,往下执行

  • (8) 11服务,ECU复位。之后直接跳转到新下载的APP段程序中

编号 收发 报文 说明
703 Rx 21 00 02 20 02 40 02 80
703 Rx 22 02 F0 02 F0 02 F0 02
703 Rx 23 F0 02 F0 02 F0 02 F0
703 Rx 24 02 F0 02 F0 02 F0 02
703 Rx 25 F0 02 F0 02 F0 02 F0
703 Rx 26 02 F0 02 BF 03 03 00
703 Rx 27 00 00 00 00 00 00 00
703 Rx 03 7E 36 78 00 00 00 00
703 Tx 02 76 01 78 00 00 00 00 完成数据传输
4E0 Tx 01 37 00 00 00 00 00 00 请求退出传输
4E0 Tx 01 77 01 78 00 00 00 00
703 Rx 10 0A 31 01 FF 01 00 04 启动例程: 校验应用程序
4E0 Tx 30 00 00 FF FF FF FF FF
703 Rx 21 6A DD AE F8 00 00 00
4E0 Tx 03 7E 31 78 00 00 00 00
4E0 Tx 05 71 01 FF 01 00 00 00 校验完成
703 Rx 02 11 01 00 00 00 00 00 ECU硬件复位

2.3 后编程阶段

  • (1) 10服务切换到03扩展会话
  • (2) 执行28服务和85服务,使能非诊断报文和DTC(Diagnostic Trouble Code)。
    • 这是对整车网络进行操作的,一般都是以功能寻址的方式来发送。注意先执行28,后执行85,避免DTC误报。
编号 收发 报文 说明
4E0 Tx 02 51 01 FF 01 00 00 00 复位肯定响应
440 Rx 03 28 00 01 00 00 00 00 连接控制请求:
使能收发应用程序报文
4E0 Tx 02 68 00 FF 01 00 00 00
440 Rx 02 85 01 00 00 00 00 00 使能DTC设置
4E0 Tx 02 C5 01 FF 01 00 00 00
  • (1) 27服务,安全校验,准备写入数据
  • (2) 2E服务,将编程信息写入到ECU中
  • (3) 10服务,退回01默认会话。结束

3. 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。

基于UDS服务的BootLoader架构和刷写流程相关推荐

  1. AUTOSAR从入门到精通100讲(三)-基于UDS服务的BootLoader架构和刷写流程

    基于UDS的BootLoader下载,可以支持ECU生命周期的无限次刷写,通过CAN网络进行无需拆壳和DEBUG口的应用程序刷写,本文介绍了刷写服务和是三个阶段的刷写流程.也可通过无线模块实现空中升级 ...

  2. 【基于UDS服务的BootLoader架构和刷写流程】

    基于UDS的BootLoader下载,可以支持ECU生命周期的无限次刷写,通过CAN网络进行无需拆壳和DEBUG口的应用程序刷写,本文介绍了刷写服务和是三个阶段的刷写流程.也可通过无线模块实现空中升级 ...

  3. 基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...

    基于docker微服务架构 基于微服务的流架构与开源规则引擎相结合,使实时业务规则变得容易 这篇文章旨在详细介绍我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目. 该项目的目 ...

  4. 使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)

    基于微服务的流架构与开源规则引擎相结合,使实时业务规则变得容易 这篇文章旨在详细说明我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目. 该项目的目标(即众所周知的复杂事件处理 ...

  5. 基于UDS的ECU bootloader

    CAN总线学习-3 最近学习基于UDS的bootloader,做一些总结. 1. 基于UDS的bootloader重要性 为了在不拆卸ECU的外壳的情况下也可以更新ECU的APP,我们需要有bootl ...

  6. 应对海量并发请求,首席布道师谈微服务的应用架构设计

    何李石 七牛云首席布道师 <Go语言程序设计>译者,Go语言/容器虚拟化技术布道师.实践者. 5年以上互联网创业经验和企业级产品研发.运营经验,同时也是互联网产品基础架构解决方案专家. 随 ...

  7. 阿里P8 “布道师”,谈微服务的应用架构设计(附微服务教程)

    本次分享基于微服务的应用架构设计,内容涉及如何构建一个微服务应用,服务注册与发现,微服务测试和典型的微服务架构设计模式,以及微服务架构在七牛的实践案例. 目录 构建一个微服务应用 服务注册与发现 微服 ...

  8. 浅谈基于UDS的ECU刷写方案(Bootloader刷新)

    好长时间没有站在代码开发的第一线了,最近独立搞了一个工程,感觉技术工程师附体,恢复了往日对技术的热情. 在软件定义汽车的时代,ECU软件的更新非常重要.这样就要求ECU具备BootLoader功能. ...

  9. 基于canoe开发的Bootloader刷写上位机,符合uds流程

    基于canoe开发的Bootloader刷写上位机,符合uds流程,可供项目应用和学习 另有支持周立功can卡的Bootloader上位机,符合uds规范的支持s32k144,英飞凌的Bootload ...

最新文章

  1. 十进制与二进制间的相互转换
  2. 如何正确认识大数据分析
  3. 平板电脑应用_机房巡检AI机器人是啥,工业平板电脑的应用如何体现
  4. SAXReader的使用
  5. 2022.02.17学习总结(最小生成树)
  6. Mathematica绘制图形
  7. DOCTYPE 的作用是什么
  8. 多维联合正态分布代码matlab(以二维为例)
  9. 龙之谷2微信哪个服务器,龙之谷2微信区
  10. nect计算机报名入口,教师资格考试如何报名?
  11. 原神倾听木簧笛的八音曲寻找缺失的石头怎么做
  12. 签千亿订单,中芯国际可量产3nm芯片?
  13. Windows AD证书服务系列---部署及管理证书模板(1)
  14. iframe标签中写html代码,Iframe嵌套HTML网页的用法?
  15. 2023年湖北助理工程师(初级职称)申报条件、申报优势以及费用?
  16. 企企通登顶《2022国产SRM供应商管理系统合集》榜首
  17. c语言标准库 菜鸟教程,C 标准库 – locale.h | 菜鸟教程
  18. 专访中医大师王柏枝:国医泰斗的济世情怀
  19. js解析lrc 实现lrc歌词同步滚动效果
  20. Idea之热部署插件JRebel+XRebel

热门文章

  1. OPC DA客户端工具Opc quick client使用
  2. 专家否认黑木耳可替代阿司匹林说法
  3. float和double的精度区别
  4. 解决Win10 1703版本后与GTX10系列显卡切换冲突(电脑鼠标卡顿)
  5. android拍照滤镜代码,Android OpenGLES如何给相机添加滤镜详解
  6. 分数阶微分方程求解--预估校正法
  7. Hiveos本地加密,hiveon加密线路设置
  8. 7.26模拟考试总结
  9. Linux下的开源免费杀毒软件Clamav
  10. Oracle快速入门 | 黑马