3. 车载软件升级概述

车载软件升级并不是“把新包推给车”这么简单,它同时牵涉到升级对象、传输通道、刷写协议、引导程序、车辆状态与生命周期治理。理解 OTA、SOTA、FOTA、UDS 诊断刷写、Bootloader 之间的关系,是后续讨论可信发布与升级安全工程的基础。

一、核心概念:OTA 是总称,SOTA 与 FOTA 是两类对象

OTA(Over-The-Air)指通过无线通道完成软件或数据的远程更新,是总体能力。按升级对象不同,通常分为两类:

  • SOTA(Software Over-The-Air):面向应用层、座舱娱乐、地图、语音、T-Box 应用等软件包,通常不直接改变车辆动力、制动、转向等基础控制逻辑,风险相对可控。
  • FOTA(Firmware Over-The-Air):面向 ECU 固件、Bootloader、底层驱动、标定数据等,可能影响车辆基础功能与安全,必须经过更严格的签名校验、回滚设计与刷写条件约束。

需要强调:SOTA 与 FOTA 的边界并非绝对。某些座舱域控制器固件升级也属于 FOTA;某些 ECU 的应用层参数更新也可能被归入 SOTA。工程上更应关注升级对象是否影响安全目标,而不是只盯名称。

二、UDS 诊断刷写:FOTA 的底层通道

在车载网络中,FOTA 通常不是“直接写 Flash”,而是通过 UDS(Unified Diagnostic Services,ISO 14229)诊断服务完成。典型刷写流程如下:

  1. 进入扩展会话:10 03,使 ECU 从默认会话切换到可执行刷写相关服务的状态。
  2. 安全访问:27 01 请求种子,27 02 发送密钥,通过后获得刷写权限。
  3. 写入指纹:2E F1 84,记录诊断仪、版本、时间等追溯信息。
  4. 擦除内存:31 01 FF 00,对目标 Flash 区域执行擦除。
  5. 请求下载:34,告知 ECU 数据长度与地址。
  6. 传输数据:36,按块传输固件数据。
  7. 退出传输:37,结束数据下载。
  8. 校验与激活:31 01 FF 01 执行完整性校验,11 01 复位 ECU,切换到新固件。

上述服务号只是典型示例,实际项目会结合 OEM 规范、CAN/CAN-FD/DoIP 传输层与安全芯片能力调整。刷写过程中任何一步失败,都可能导致 ECU 停留在 Bootloader 或不可用状态,因此必须有超时、重试与回滚策略。

三、Bootloader:升级的“安全底座”

Bootloader 是 ECU 上电后最先运行的一段引导程序,负责判断是跳转到应用固件,还是停留在刷写模式等待诊断指令。它通常包含:

  • 启动决策:检查应用区有效性标志、CRC、签名与版本,决定是否跳转。
  • 刷写服务:实现 UDS 刷写服务、Flash 驱动、传输层与安全访问。
  • 回滚与恢复:当新固件校验失败或启动失败时,回退到旧版本或进入安全模式。
  • 防变砖机制:双分区 A/B 备份、看门狗、掉电保护与最小可用通信能力。

关键点:Bootloader 本身也可能被升级,但它必须比应用固件更稳定、更难被篡改。若 Bootloader 被恶意替换,后续所有签名校验都可能失效。

四、升级场景与生命周期管理

车载升级不是单次动作,而是覆盖“发现—下载—校验—刷写—激活—验证—回滚—审计”的生命周期。常见场景包括:

场景 典型对象 关键约束 失败后果
座舱应用升级 SOTA 应用、地图、语音包 用户确认、网络流量、存储空间 应用不可用,可重装
ECU 固件升级 FOTA 固件、标定数据 车辆静止、电量充足、诊断会话 ECU 变砖,需回滚或返厂
安全补丁升级 网关、T-Box、安全芯片 签名校验、防降级、审计留痕 安全漏洞暴露,合规风险
批量召回式升级 多车型、多 ECU 组合 版本矩阵、灰度发布、法规备案 大规模不一致,售后压力

生命周期管理要求对每个软件包建立版本、依赖、适用车型、刷写条件、回滚策略、审计记录。例如,一个 FOTA 包必须明确:适用 ECU 硬件版本、当前软件版本范围、是否允许降级、刷写电压窗口、所需会话与安全等级。缺少这些元数据,升级系统就无法判断“该不该推、能不能刷、失败怎么办”。

五、案例与误区复盘

某车型在 OTA 推送网关固件时,未校验车辆蓄电池电压,部分车辆在刷写过程中因电压跌落导致网关进入 Bootloader 且无法退出。复盘发现:刷写条件只检查了“车辆静止”,没有检查“电量与电压”,也没有设计 A/B 分区回滚。改进措施包括:

  • 刷写前读取电压与电量,低于阈值直接拒绝。
  • 采用双分区,新固件校验通过后再切换启动标志。
  • Bootloader 保留最小通信能力,支持重新刷写。
  • 升级任务增加超时、重试与断点续传。
  • 服务端记录每次升级的 VIN、版本、结果与失败原因。

常见误区:把 OTA 等同于“远程下载”;把 SOTA 当作“低风险所以不用签名”;把 Bootloader 当作“永远不变的基础设施”;把刷写失败当作“重试即可”。这些认知都会在真实车辆环境中放大为安全与召回风险。

综上,OTA 是能力框架,SOTA/FOTA 是对象分类,UDS 是刷写通道,Bootloader 是安全底座,生命周期管理是治理主线。只有把这几层关系同时纳入设计,车载软件升级才具备可信、可控、可回滚的工程基础。

车载软件升级体系:对象、通道、底座与生命周期 OTA 总能力层 远程发现、下载、校验、调度、推送、审计;不直接等于刷写,而是升级治理入口 SOTA 座舱应用 / 地图 / 语音 / T-Box 应用 风险相对可控,仍需签名与版本管理 FOTA ECU 固件 / 驱动 / 标定 / Bootloader 影响安全目标,必须严格校验与回滚 UDS 诊断刷写通道 10 03 → 27 01/02 → 2E F1 84 → 31 01 FF 00 34 → 36 → 37 → 31 01 FF 01 → 11 01 Bootloader 安全底座 启动决策 / 刷写服务 / 回滚恢复 / 防变砖 A/B 分区、看门狗、最小通信能力 生命周期管理:发现 → 下载 → 校验 → 刷写 → 激活 → 验证 → 回滚 → 审计 版本矩阵 · 依赖关系 · 刷写条件 · 灰度发布 · 法规备案 · 失败追溯