汽车软件升级——A/B分区与回滚

admin 2026-03-03 06:54:11 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解汽车软件升级的A/B分区与回滚机制,通过双Flash空间实现备份恢复,确保升级失败时系统回滚至旧版避免变砖。内容涵盖架构设计、运行与升级流程、静默刷写原理,并指出限制回滚次数以防死循环的必要性。同时结合安全启动建立信任链,为保障汽车软件升级安全性与可靠性提供了具体技术方案与实施建议。 综合评分: 82 文章分类: 车联网安全,终端安全,安全建设,解决方案


cover_image

汽车软件升级——A/B分区与回滚

谈思实验室

2026年2月24日 17:51 上海

以下文章来源于汽车电控知识 ,作者安己乐人

汽车电控知识 .

快乐学习汽车ECU知识、轻松进入汽车电子行业!

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

汽车软件在升级过程中如果突然断电、通信中断或产生数据错误时,会导致设备无法正常运行,甚至“变砖”。汽车信息安全中为了确保软件升级的可靠性,要求软件升级时应具有回退功能。

具体的要求就是软件要具有备份和恢复能力,能够在软件升级发生异常时进行必要的回退操作,比如恢复至刷写前的版本或进入某种安全状态,这样就可以避免升级失败而导致软件完全失效。

安全状态不容易准确定义,它与产品功能特性有关,主要的目标就是在此状态下,系统不会造成任何人员伤害,确保车辆处于安全可控的范围内。

目前常用的方法是恢复到刷写前的版本,也就是回滚,这就涉及到了软件的A/B分区方案。

01

A/B分区基本原理

A/B分区的基本原理就是将Flash空间划分为两个完全独立的分区,即A分区和B分区,每个分区都保存一套完整的应用软件。两个应用软件互为备份,即使某个分区的软件升级失败,也可以恢复到另一个分区的版本,确保产品始终可用。

假如当前软件运行在A区,此时需要更新软件,系统会将新的软件包刷写到B区,刷写成功后会从B区开始运行,若刷写失败则会继续运行A区的软件,也就是恢复到了原来的软件版本。

A/B分区的优点是可以使产品软件具有备份和恢复能力,保证软件升级的安全和稳定性。缺点是它对主芯片的Flash容量提出了更高的要求,Flash的容量要大于软件的两倍,比如原来是3M的Flash空间,现在就要6M的Flash。

02

A/B分区架构

A/B分区的架构主要是指Flash空间的划分,最基本的部分包括Bootloader区、APP分区A、APP分区B和升级标志区。

A/B分区结构图

Bootloader是引导程序,平时启动运行时负责分区的切换和程序跳转,在软件升级时负责处理升级过程。

APP分区A和分区B就是产品的应用程序,包含产品的所有功能逻辑。这两个区域通常存放不同版本的程序。

升级标志区会保存当前活动(激活)分区、升级状态和软件信息等标志位。这部分区域占用的空间不大,但是由于这些标志位Bootloader和APP都可能会访问,要保持数据的独立有效性,所以要单独分区。

03

运行流程

正常工作时,软件大部分时间处于运行状态,运行过程是系统上电后,首先启动的是Bootloader程序,Bootloader启动后会先读取升级标志区中的当前活动分区标志位,通过标志位可以判断当前活动区是A区还是B区。

如果当前活动区是A区则跳转进入A区,否则进入B区。

当然,确认了当前活动区后,也不是立即切换,为了保证安全,要先对当前活动区的程序进行完整性的检验(比如CRC),验证通过后才会跳转到该区,启动当前活动区的程序。如果验证失败,则切换到B区并重启。

运行流程图

04

升级流程

软件升级时,首先活动的APP会收到升级指令,然后系统复位跳转到Bootloader,Bootloader启动后,会将新版软件写入非活动区,比如当前活动区为A,则写入B;当前活动区为B,则写入A。数据写入后做数据的完整性校验,校验通过后,会更新标志区,把新版软件所在的区设为活动区。

升级流程图

标志区更新后系统重启,按照之前的运行流程进入新的活动区开始运行。

这里的关键点就是更新标志区,如果升级过程中发生异常,比如断电、通信中断、校验失败时,标志区中的活动区标志位都不会更新,所以下次启动时,Bootloader检查标志区会发现仍然是之前的活动区有效,就会仍然运行上一个版本的程序,也就是回滚。

标志区中标志位除了当前活动分区标志位外,还有升级状态、校验值等。

05

静默刷写

传统车辆控制器的刷写需要车辆停车,满足一定的安全刷写条件,比如电源电压是否正常、发动机是否在运行、车速是否为0(或是否驻车),车辆是否在充电等。

满足刷写条件后才能使用诊断仪或者OTA刷写,这是因为刷写过程中,控制器的软件被擦除,是无法工作的。这种刷写方式要占用车辆、驾驶员和维修操作人员的时间,费时费力。

为了最大程度的节省刷写时间,给用户更好的升级体验,有些车辆开始提供静默刷写的功能。静默刷写是一种在车辆运行过程中更新软件的技术,无需人工干预且不影响用户正常使用。

静默刷写的基础就是A/B功能,即:激活的分区可以在车辆运行的过程中更新非激活分区,更新完成后在下一次系统启动时自动切换到新分区。

非静默刷写与静默刷写

注意传统刷写完成后会立即自动复位,启动运行新程序。而静默刷写后不能自动复位,否则会影响正常运行,需要在车辆重新启动时进行分区切换。

06

回滚次数

如果升级失败,Bootloader检查标志区仍然是之前的活动区有效,就会继续运行上一个版本的程序,也就是回滚。

回滚的次数是无限的吗?不是!

因为有些情况下不能无限制,比如MCU上电复位后,首先进入默认的A分区,但是,启动过程中发现A分区失效(比如完整性检查失败)。

为了安全,程序需要回滚到B分区启动,回滚进入B分区以后,程序再次启动,但是发现B分区的启动也失败了。

假如不做回滚的次数限制,MCU会继续启动A分区,B分区…,A分区和B分区就会无限循环的切换。

因为两个分区都无效,所以这种切换是没有意义的,相当于进入了死循环。

不限制回滚次数会进入死循环

正确的方式是对回滚次数做限制,比如限制次数为1,如果A/B分区均启动失败,程序应该进入Bootloader中的诊断编程会话(Programming Session),等待下次程序更新命令,避免进入死循环。

07

安全启动

在具有信息安全的软件中,会要求芯片具有安全启动机制,安全启动的目的是为了确保系统从启动的第一刻起就能够防止未授权的固件或恶意软件的加载,从而保障系统的安全性。

安全启动的启动过程是从信任根开始的,比如MCU上电后,先使用信任根来验证Bootloader的完整性和真实性,然后再用Bootloader来验证应用层APP的完整性和真实性。这样就建立了一个从信任根到系统所有关键组件的信任链,确保整个系统链条上的每个组件都是可信的。

信任根可以是硬件级的(如可信平台模块TPM、安全芯片等)或软件级的(如可信根密钥、可信启动密钥等)。

比如使用硬件安全模块HSM作为信任根,如果程序是级联校验启动,则启动过程是HSM校验用户Bootloader,Bootloader再校验App。

即:HSM校验用户的Bootloader,Bootloader再校验A/B分区的APP。

单Bootloader

有些A/B分区系统不仅有两个APP的存储空间,同时还具备两个Bootloader的存储空间。这样做第1可以保证升级分区不对运行分区产生影响。第2在OTA升级过程中,非活动分区的Bootloader可独立验证新系统镜像,避免因更新失败对设备产生影响。此外,比如当活动分区(A)的Bootloader损坏时,设备可自动切换到备用分区(B)的Bootloader启动。

双Bootloader

如果HSM校验A分区的Bootloader程序失败,进行程序回滚,由A分区进入B分区,在B分区启动过程中,HSM校验B分区的Bootloader程序成功,但是B分区的Bootloader程序校验APP程序时失败,这时候就不应该再回滚了,应该进入编程会话,等待下次程序更新指令。

A分区的Bootloader和B分区的APP失效

但是,这里有一个问题就是B分区的Bootloader程序校验B分区APP失败后需要直接进入编程会话,但是它并不知道HSM校验A分区的Bootloader失败,也就是它并不知道HSM曾经回滚过一次。

所以,在软件设计时,需要将HSM处理的回滚信息存储在主机内核也可访问的区域,以便于主机知道HMS曾经回滚过,让主机不要再次回滚,否则,也会导致无限循环回滚。

08

小结

A/B分区架构是汽车软件回滚和静默刷写功能的基础,处理过程中要注意的是升级标志区的更新和A、B两个分区的切换时间点。同时要对回滚次数做限制,防止进入无限回滚的死循环。

谈思-汽车出海安全合规(欧洲)

交流群

谈思 AutoSec Europe 峰会旨在搭建一个能融汇全球视野与中国实践、连接技术前沿与落地应用的国际性专业平台,以助力中国汽车应对在出海过程中面临的网络与数据安全合规痛点。从前沿技术研讨、合规要点解析到经验交流,都将通过本平台为您提供持续支持。社群已超过200人,需邀请加入,如需入群,欢迎添加社群小助手微信taaslabs01。

谈思-SDV&AIDV技术出海

交流群

诚邀行业同仁加入谈思SDV&AIDV出海技术交流群,聚焦软件定义汽车、AI定义汽车、下一代EEA、智能座舱、智能驾驶、软件架构、域控制器开发、芯片技术、软件工具等核心议题,欢迎大家加群交流探讨~~社群已超过200人,需邀请加入,如需入群,欢迎添加社群小助手微信taaslabs01。

end

谈思汽车媒体门户

精品活动推荐

AutoSec系列沙龙

专业社群

部分入群专家来自:

新势力车企:

特斯拉、理想、极氪、小米、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……

外资传统主流车企代表:

大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……

内资传统主流车企:

吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……

全球领先一级供应商:

博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、潍柴集团、地平线、紫光同芯、字节跳动、……

二级供应商(500+以上):

中科数测、ETAS、BlackDuck、NXP、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、加特兰微电子、浙江大学……

人员占比

公司类型占比

文章

不要错过哦,这可能是汽车网络安全产业最大的专属社区!

关于涉嫌仿冒AutoSec会议品牌的律师声明

一文带你了解智能汽车车载网络通信安全架构

网络安全:TARA方法、工具与案例

汽车数据安全合规重点分析

浅析汽车芯片信息安全之安全启动

域集中式架构的汽车车载通信安全方案探究

系统安全架构之车辆网络安全架构

车联网中的隐私保护问题

智能网联汽车网络安全技术研究

AUTOSAR 信息安全框架和关键技术分析

AUTOSAR 信息安全机制有哪些?

信息安全的底层机制

汽车网络安全

Autosar硬件安全模块HSM的使用

首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:谈思实验室 《汽车软件升级——A/B分区与回滚》

评论:0   参与:  0