目的
OTA的概括和挑战
理解 NXP是如何在自己的产品处理线上更新
了解如何处理低成本边缘节点mcu(如S32K设备)中的空中更新
背景
一般车辆更新固件需要
- 在经销商完成更新
- 指定使用更新固件的工具
- 引擎并非在运动状态
- 目标节点应用被暂停
- 主应用程序被擦出和在编程
动机
- 不断增加回调软件的数量
- 经销商更新需要额外的花费
- 随着软件的不断增加复杂度,可能要求的软件更新也不断增加
- 用户便捷 VS 去经销商
- 快速更新软件的安全性能够被提高
汽车ECU和FOTA
FOTA由原来的信息系统或车联网系统更新,随着汽车ECU不断增加,fota面临新的挑战,汽车更多域的ECU。
车厂的汽车OTA架构
OTA两种方式
A/B 交换使用用例
A或B版本固件存储在Flash中。
优势:
● 更新固件,同时应用也在flash运行。
● 支持原始的固件回滚。
● 汽车可用
劣势:
● 需要两个flash的存储
● Higher max current(run current in block A+ 擦出/编程在B块)
替换
把当前的Fireware替换成新的固件。
优势:不需要额外的flash。
劣势:
● 要求在更新的过程中,汽车处于停工状态。
● 不支持版本回滚
● ECU操作时,具有高风险。
设定
- 终端
- 需要获得部分或者全部镜像
- 烧写一个完整的镜像至少需要足够的空间
- 通过串行链路接收更新的软件
- 启动块永远不会随着OTA更新而改变
- 最好情况:在执行更新时,运行存在的软件。
- 在新的软件被激活之前,应用APP/启动boot 软件能执行
- 安全生效
- 功能性生效
- 在更新完成后复位,新的软件开始执行。
全FOTA demo
在NXP设备上,本演示旨在演示许多系统中常见的固件更新功能。demo验证使用两个MPC5748G评估板:
- 一个评估板通过CAN发送更新
- 其他评估板接收更新,程序放进flash里,确保下次启动时,使用默认固件。
演示的关键特征
- 擦出重修映射 flash映射到不同的地址,提供一个简单的方式去切换固件。
- 闪存即可读又可写(RWW)能力 能够擦出或者编程一个flash块,同时能执行另一个flash块。
- 固件验证 确保固件来自有用源并在传输的过程中未收到干扰。
芯片
S32K1 OTA
flash 系统
Flash阵列
- FOTA相关特征:
1.1 区域尺寸(最小擦出尺寸)
-
程序Flash里4K Bytes(Bank 0)
-
数据Flash最小擦出尺寸2K Bytes(Bank 1)
1.2 bank0(程序Flash)和bank1(数据Flash)同时具有读写特征
- 关键附加的flash特征:
- C90TFS(Thin-Film-Storage)技术
- ECC支持:单bit错误纠正和双bit错误检测。
- 数据flash 32bit ECC word
- 程序flash 64bit ECC word
- 访问时间:Flash时钟大约是1/4的core时钟
A/B 固件交换
A/B固件更换步骤
检测更新镜像请求,并在bootloader开始握手。
下载flash程序并擦出RAM或者Dflash代码。
握手开始,接收新的部分镜像并擦出旧镜像,将新的部分镜像接入Flash块中,握手结束。重复上诉握手步骤直到镜像写入结束完成。
设置更新完成标识,产生reset信号。检测新的镜像和更新标识,切换到新镜像分支。擦出更新状态标识。
A/B交换总结
优势:A/B固件交换允许立即备份
限制:与具有多个代码分区的大型mcu相比,不能实时更新映像。
参考连接
NXP OTA