BootLoader功能介绍3--Boot-App升级架构

本文主要介绍不同的Boot-App升级架构。

每个tire1或者OEM都会有自己的一套或者几套刷写方案,可能方案不尽相同。简单来说,就是如何让ECU能够更新App或者Boot。实现这种功能的方式有很多种,开发初期即根据芯片内存以及刷写需求等因素设计刷写方案。

下文中App简称为A,Boot简称为B。

1. 最简单的BA架构

最简单的架构如下图所示,一个boot分区,一个app分区,支持boot跳转app,支持boot更新app,暂且称为BA架构模式。若在更新app过程中意外更新失败,那么ECU会因为app被擦除而无法正常工作。

图片

BA架构模式的工作原理如下图:

BootLoader功能介绍3--Boot-App升级架构  

上图描述了BA架构中ECU的上电启动时序。在APP模式下,使⽤了两种不同的诊断会话模式:默认会话和扩展会话。在Boot模式下,使⽤了三种不同的诊断会话模式:默认会话,扩展会话和编程会话 。

如果ECU收到刷写指令10 02,将外部重编程请求标志设置为valid,并执⾏ECU 复位。 上电复位后,ECU⾸先进入Boot,若检查外部重编程请求标志位为valid,那么停留在Boot的编程会话模式中,等待更新App软件,将外部重编程请求标志位置为Invalid。

上电复位后,ECU⾸先进入Boot,若检查外部重编程请求标志位为Invalid,则检查App有效标志位: 若App有效标志位是valid,则程序跳转到App区域运行;若App有效标志位是Invalid,ECU停留在Boot下。 

2. BAA架构/BAA'架构

       一般车厂都要求ECU支持OTA功能,但是BA架构存在更新失败App无法恢复的问题,为了解决这个问题,产生了BAA架构,BAA'架构。

BAA架构

App既能运行在A分区(图中bank A),也能运行在B分区(图中bank B),软件中通过APP Slot分区有效标志来判断当前激活的有效分区。刷写时软件会下载到非激活分区。下载并校验成功后再切换分区。

图片

上电复位后,ECU⾸先进入Boot,若检查外部重编程请求标志位为Invalid,则继续检查APP Slot分区有效标志,通过APP Slot标志判断当前激活的分区: 若App A bank激活,则程序跳转到App A bank运行;若App B bank激活,则程序跳转到App B bank运行。 

如果ECU在A bank运行时收到刷写指令10 02,则将外部重编程请求标志设置为valid,并执⾏ECU 复位。 ECU复位后,⾸先进入Boot,检查外部重编程请求标志位为valid,则停留在Boot等待更新程序。此时将软件成功写入App B bank并设置App B bank为有效分区。当ECU再次复位时通过检查APP Slot分区有效标志即可切成功换到App B bank运行。如果一个bank更新软件失败,ECU仍能在另一个bank运行。

BAA'架构

图片

这种架构,App只能运行在一个分区(图中的bank A),无法运行在App备份区。ECU在boot中更新软件时,会先将软件写入到App备份区。等待App备份区软件下载完成并校验通过,再将App备份区的程序copy到App可运行分区。

如果下载过程中意外中断也不会影响到App可运行分区。

如果检测到App备份区无效,可以将App可运行分区 copy到备份区。

如果检测到App可运行分区无效,可以将App备份区 copy到可运行分区。

总之,两个区域互相备份,保证App不会意外丢失。

3. 支持更新boot升级的架构

如果在开发过程中,由于boot存在bug或者boot需求变更,导致ECU需要更新boot。那么牛马们该如何实现boot的刷写更新呢 ?

首先引入preboot的概念,⽤于引导Boot启动升级的最底层程序,不会运⾏重编程流程。

PreBoot-BBA架构

图片

这种架构专门为boot增加了一个分区用于boot更新。boot下载失败还能恢复,App下载中断就无法恢复了......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值