ECU Bootloader的三部曲

简介: ECU Bootloader的三部曲

1.ECU的启动顺序

ECU上电或者复位后,Bootloader代码首先被执行。Bootloader执行基本的初始化,检查是否有外部重编程请求。如果没有外部重编程请求,检查应用程序的状态。如果应用程序有效,ECU执行应用程序,如果应用程序无效,ECU继续执行Bootloader,且Bootloader的默认会话被激活。

d11b2da5cf8da6a161f33bbfdf397933_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

1.诊断会话

传统ECU的诊断会话包括默认会话模式,扩展会话模式和编程模式。

ECU在扩展会话执行有效的应用程序,编程会话请求可激活Bootloader,因此,应用程序应设置外部重编程请求标志并复位,复位后直接进入Bootloader的编程会话。

Bootloader不支持从编程会话切换至扩展会话。

8bab1934b507f0775af31f3f280616c4_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

2.升级步骤

ECU的刷新升级列分为预编程步骤、编程步骤和后置编程步骤三个步骤

2.1.预编程步骤

1. ECU重编程前需要禁止DTC设置和网络常规通信,因此,使用功能寻址发送扩展会话诊断$10$03请求使网络中所有ECU进入扩展会话。

2.重编程前需要检查系统的重编程条件。此例程控制服务用于检查系统的状态是否为安全状态。此诊断服务必须响应。(例如:重编程条件要求车速为0Km/h、ECU处于正常工作电压状态下,其他编程条件由车厂确定,ECU实现。)

3.重编程过程中为了避免误报故障,应该关闭网络中所有ECU的DTC检测和存储功能。使用功能寻址发送DTCSettingType为“OFF”的ControlDTCSetting诊断服务请求。

4.通信控制服务用于禁止网络上所有ECU非诊断报文的发送和接收。因此,使用功能寻址发送此诊断服务。

5.通过标识符读取数据是可选服务,用于获取ECU相关信息。

489cb143bd370284f4621941dcf95082_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

2.2. 编程步骤

编程步骤用于编程一个或多个逻辑块,此步骤的所有诊断服务都使用物理寻址。如果编程步骤中发生错误,则应重新执行完整序列。

d85d1d1bfd6b48bbaa8db2e9589bf107_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

1. 当ECU运行在应用程序的扩展会话中,收到诊断会话控制服务($10 $02)后应判断是否允许跳转到编程会话,具体是判断是否已经执行例程控制 “预编程条件检查”($31 $01 )并且响应为肯定响应,如果不是,ECU应拒绝进入编程会话,如果是,应用程序应设置外部重编程请求标志并发送否定响应,然后,ECU通过复位的方式跳转到Bootloader,并Bootloader发出肯定响应,肯定响应发送成功后激活Bootloader的编程会话。当ECU运行在Bootloader程序的扩展会话中,收到诊断会话控制服务($10 $02)后直接回复肯定响应,并进入编程会话。

2.在Flash重编程之前,需要经过ECU安全认证。安全访问服务子功能$11请求种子,使用$12发送密钥。

3.通过$2E$F184写入指纹信息应存储在ECU的非易失性存储器中。该指纹信息使用“通过标识符写数据”服务写入ECU。

4.例程控制-启动擦除内存$31 $01 $FF00。

5.逻 辑 块 的 所 有 段 的 数 据 通 过 $34(RequestDownload),$36(TransferData),$37(RequestTransferExit)服务下载到ECU。

6.通过$31 $01 $0201 启动完整性校验例程,确保下载数据的完整性(真实性)。

7.发送 $31 $01 $FF01启动编程依赖性检查。例程执行后,需将检查结果反馈给DPC或者诊断仪.

2.1.后置编程步骤

1.发送$11 $01进行ECU 复位.ECU复位服务用于结束Flash重编程使ECU进入正常的操作模式。

2.进入扩展模式发送$10$03.

3.发送$28 $00 $01诊断服务,恢复网络正常通信。

4.发送$85 $01诊断服务,恢复网络正常DTC设置。

5.发送$10 $01诊断服务,使网络上的ECU返回默认会话。

eb99ff939cae7670514bc08459465dd8_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

相关文章
|
6月前
|
存储 Linux 芯片
【启动】芯片启动过程全解析
【启动】芯片启动过程全解析
154 0
|
7月前
|
存储 芯片 SoC
ZYNQ程序固化
ZYNQ程序固化
|
7月前
|
Linux 开发工具 异构计算
【ZYNQ】QSPI Flash 固化程序全攻略
【ZYNQ】QSPI Flash 固化程序全攻略
1355 0
|
开发工具 内存技术
zynq程序固化补充篇: 不切换启动模式强制烧写
使用SDK2018.2第一次进行烧写 Flash,在qspi模式下会报错,只有切换至jtag模式下才可以进行烧录,后续的再次烧录不会出现类似问题。但是调试的时候必须切回jtag模式(将BOOT MODE 5拉低才可以调试)
2284 1
zynq程序固化补充篇: 不切换启动模式强制烧写
|
存储 安全 存储控制器
ZYNQ裸板:中断篇
中断对于单片机过来的我们来说,相对也算比较熟悉了,还是严谨一点从头开始说吧。中断是什么?是一种当满足要求的突发事件发生时通知处理器进行处理的信号。中断可以由硬件处理单元和外部设备产生,也可以由软件本身产生。对硬件来说,中断信号是一个由某个处理单元产生的异步信号,用来引起处理器的注意。对软件来说,中断还是一种异步事件,用来通知处理器需要改变代码的执行,当然,轮询所产生的中断的过程是同步的。
939 0
ZYNQ裸板:中断篇
|
存储 Linux 数据安全/隐私保护
ZYNQ - 嵌入式Linux开发 -10- ZYNQ启动流程分析
ZYNQ - 嵌入式Linux开发 -10- ZYNQ启动流程分析
1125 0
ZYNQ - 嵌入式Linux开发 -10- ZYNQ启动流程分析
|
存储 安全 开发工具
ZYNQ裸板:程序固化篇
一般的调试中我们都是通过 JTAG 接口将 FPGA 配置文件和应用程序下载到 ZYNQ 器件中。同样的,我们也可以将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序( Boot Loader) 的参与
432 0
ZYNQ裸板:程序固化篇
|
存储 缓存 网络协议
ZYNQ裸板:AXIDMA篇(简单模式)
DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器( CPU)介入处理。 DMA 是一种快速的数据传送方式, 通常用来传送数据量较多的数据块
1311 0
ZYNQ裸板:AXIDMA篇(简单模式)
|
Linux 芯片 内存技术
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十七) 异常与中断的概念及处理流程
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十七) 异常与中断的概念及处理流程
204 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十七) 异常与中断的概念及处理流程
|
Linux 开发工具 git
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)具体单板的按键驱动程序(查询方式)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)具体单板的按键驱动程序(查询方式)
265 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)具体单板的按键驱动程序(查询方式)