汽车电子中基于UDS的Bootloader(基本刷写流程介绍)

一、ECU启动时序:

要了解刷写流程,首先要知道ECU的启动时序
下图为ISO 14229 -1(2013)经过翻译前后的截图,主要描述的是启动软件(Bootloader)和应用软件(App)之间的相互作用和相互转换的典型实现。
ISO 14229 -1(2013)原文
ISO 14229 -1(2013)翻译
如上图虚线框起来的部分就是BootLoader软件,虚线框外的就是App软件。
ECU每次启动时都是经过Boot软件,然后再到App软件。在App软件下接收到重编程请求,就会向某个位置写入重编程标志然后复位,启动时Boot进行检查。

1、启动时Bootloader的一般检查流程

1)ECU启动时先进入Boot软件检查是否有编程请求,
2)如果编程请求存在则切换到Boot的编程会话等待后续的重编程指令;
3)编程请求标志不存在时,Boot检查是否有有效的App,如果有有效的App则跳转到App中运行。
4)如果App无效,则停留在Boot软件的默认会话下。

2、在App下接收到重编程请求的一般流程

1)向SharedRam中写入重编程标志(一般为了不频繁操作Eep所以使用 SharedRam,一般为:App和Boot共享的一块Ram区域,复位时不初始化)
2)执行复位动作

二、重编程步骤:

一部重编程步骤主要分为如下三步骤
预编程步骤、编程步骤、后编程步骤
重编程步骤

1、预编程阶段:

预编程阶段
此阶段是编程前的准备阶段
A)切换到扩展会话:在ECU进行重编程前DTC和正常通信在网络上应该禁用,诊断仪以功能寻址发送让网络上的所有节点都进入扩展会话,然后周期3E80维持会话状态,以便进行网络上所有节点后续的DTC和通信禁用操作。
B)编程条件检查:需要对编程前提条件进行检查,以确保要编程的节点处于正常状态,使重编程可以执行。
C)关闭DTC:防止重编程过程中产生DTC。例如:由于编程中时节点无正常的APP功能,对于无需编程的节点来说,就会有xx节点通讯丢失等DTC产生,禁用DTC以确保不会由于编程产生DTC存储。
D)关闭非诊断通信:使重编程过程中网络上的消息在低负载下传输,保证消息发送的准确性以及实时性。

2、编程阶段:

编程阶段

A)切换到编程会话:编程前ECU是在App中运行的,将ECU切换到编程会话就切换到Boot中运行,等待后续的重编程指令以便更新App。
B)安全访问验证:此流程是确保拒绝未经过授权的访问,一般是诊断仪请求Seed,ECU响应Seed,然后诊断仪使用Seed生成Key发送给ECU,ECU接收到后与自己计算的KEY比较是否一致。
C)编程指纹信息写入:该流程为了记录编程的信息等,一般是通过2E服务写入。
D)擦除例程的下载:因为Boot软件中不应内置Flash驱动,也为了安全性,所以将FLASH的驱动放在Ram中在重编程的时候下载进去,复位后自动移除。一般该文件叫FlashDrv文件。
E)检查内存:检查传输过程中FlashDrv数据的完整性。
F)擦除App文件:Flash的特性只能先擦除再写入,也是为了将要下载的逻辑块置为无效状态,防止编程未完成导致软件的数据错误功能异常。
G)该步骤为下载编程驱动,一般我们的Flashdrv文件中包含了擦除和编程驱动,所以不需要再次下载。
H)该步骤为编程驱动校验,一般我们的Flashdrv文件中包含了擦除和编程驱动,所以不需要再次下载校验。
I)App文件的下载:根据 RequestDownload(请求下载)(0x34)、TransferData(传输数据)(0x36)、RequestTransferExit(请求传输终止)(0x37),将App的数据下载到Flash中。
J)检查内存:检查传输过程中App数据的完整性。一般实现为:诊断仪发送数据到ECU进行写入Flash或Ram后,反读出来计算CRC并保存。当接收到传输校验例程时比较CRC是否一致。
K)确认应用程序:此步骤是为了确保重新编程的逻辑块是一致和兼容的,只有当此检查成功时,应用程序才能启动。

3、后编程阶段:

后编程阶段
此阶段是编程后的准备阶段,主要是为了复位ECU,以便于加载新的App运行。
A)ECU复位:编程完成后,需要所有ECU服务以便于正常到App中运行功能.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值