基于OTA的车辆ECU软件远程刷写系统

2020-04-12 00:00:00刘志军顾睿黄若琼
汽车与驾驶维修(维修版) 2020年6期

摘要:在传统模式下,ECU软件出现漏洞或需要版本升级,车主只能去汽车修理店让技术人员刷写ECU软件。本文主要阐述利用移动通信网络基于空中传送技术(0TA)来更新ECU软件的实现原理,对ECU软件远程刷写提供一种可行的解决方案。本文先构建整车网联系统架构,从服务器到车辆端,并设计一种基于OTA技术的ECU远程刷写协议。

关键词:OTA技术架构;车联网;远程刷写系统;差分压缩算法;Uptane

中图分类号:U471 文献标识码:A

当今车辆从设计到发售的周期越来越短,过短的开发周期导致发动机控制单元ECU软件中难免出现安全漏洞。通过OTA技术,整车厂商能够远程进行ECU开发调试、数据标定、文件更新和故障诊断等操作。相较于传统刷写ECU的方式,利用OTA技术进行ECU刷写高效便捷,能够大大降低售后成本。

1空中下载技术概述

空中下载技术(Over-The-Air)是一种成熟的无线通信技术,最早被运用在移动通信领域。OTA技术步入汽车行业较晚,主要原因是汽车产品发布周期相比移动智能设备要长,消费者更新换代的时间也更长。同时汽车安全涉及人的生命财产安全,相关法律法规的制定远比技术发展要慢。

2 OTA功能系统架构

OTA功能架构建立在车联网体系中,主要由云服务器端、车辆端、用户和OEM组成。图1是进行ECU远程刷写的应用示例图。

2.1云服务器端

服务器的作用是负责数据收集、数据存储,以及提供数据分析挖掘的基础规范接。在需要对大量数据进行存储和处理的情况下,自行组建服务器平台并对服务器硬件、软件进行定期的维护往往价格高昂,因此租用云服务器是一种不错的解决方案。

2.1.1云服务器部署

云服务器架构如图2所示。云服务器主要由OTA服务器、公钥基础设施(PKI)服务器、统一通讯端口服务器和内容分发网络(CDN)服务器构成。

OTA服务器主要由分布式存储服务器组成,通过虚拟化技术划分为3种类型服务器:存储更新数据和更新数据的版本信息;存储ECU软件及ECU软件的版本信息;存储车辆信息,例如车型、VIN、远程信息处理器(T-Box)序列、ECU相关数据以及车辆升级状态等。

OTA服务器通过统一通讯端口服务器来完成更新数据的下发。

CDN服务器负责转发相关的ECU软件更新包到车辆端,最终在车辆端完成ECU软件的升级。

PKI服务器对证书进行公钥管理,通过第三方可信任机构,把公钥和用户标识信息捆绑在一起。通过这种方式使得通过CDN服务器分发更新数据的时候,能够验证车辆身份。

2.1.2数据库管理系统

在OTA服务器中,需要部署相应的数据库管理系统,以应对大规模并发更新请求,并需要保证高并发场景数据的安全性和一致性。

在车辆信息存储服务器中存储车辆的信息,如发动机型号、变速器型号、车型、VIN、生产/停产日期、T-Box序列号、搭载的发ECU信息以及ECU更新状态等。在服务器中能够利用相关数据对每次升级的时间和成功率做出统计。

2.2车辆用户端

车辆用户端由传输控制单元(TCU)和控制器端两部分组成,其中TCU的作用主要是为整车提供远程通讯接口。云服务器数据通过CDN服务器或统一通讯端口服务器转发到TCU中,TCU把数据转发到超级网关,再通过CAN总线把更新数据下发到制定的ECU中。

2.2.1传输控制单元

在实际的应用环境下,一般把TCU和网关集成在一起,例如市面上常见的T-Box。同时由于存在无线通信网络和汽车总线之间的速率不匹配的问题,为了保证可靠性、实时性和有效性并满足汽车功能安全标准,TCU一般采用双处理器架构,即STM32F核心+ARMA9核心的搭配方式。

图3展示了一种以STM32F搭配BM817C全网通模组作为通信单元的T-Box硬件设计方案。在BM817C的4G模组中搭载基于ARM的AP,并利用Linux系统来管理模组的通讯和安全。

在进行ECU远程刷写过程中,Server通过移动通信网络对TCU下达对某个或者某几个ECU进行刷写的命令,TCU再通过汽车总线把命令传输到要刷写的ECU节点,ECU节点则进入刷写模式,完成ECU软件远程刷写。

2.2.2控制器端

控制器端主要是ECU软件和硬件,其硬件作为车辆中最常见的电子控制单元,其主要由微型控制单元(MCU)、存储单元、通信单元、高级定时单元和数字/模拟量采集器等组成。对于控制端而言,ECU要成功地刷写软件,需要具备CAN通信功能和BootLoader(引导加载程序),以及包含UDS/KWP2000诊断协议。

在ECU中从软件的角度来划分嵌入式系统,从底层到上层可分为BootLoader,系统内核、文件系统和用户应用程序4个层次。BootLoader的作用主要是初始化堆栈区、全局变量、建立并分类内存地址空间的映射关系等,建立调用操作系统内核的软硬件环境。ECU的BootLoader在下载模式下,通过串口通信或CAN总线从TCU上获取文件,文件先被BootLoader写入RAM最后再写入ROM中。

控制器端与TCU之间的通信往往基于UDS诊断通信协议。UDS本身基于OSI七层体系模型,通过UDS服务,可以从控制器端获取故障信息,进行远程诊断,亦可以通过UDS服务,让TCU下发新的ECU软件到控制器BootLoader。

3 ECU软件远程刷写协议

在面向ECU远程刷写系统中,OTA功能架构应该满足3个条件:一是减少用户等待的时间;二是ECU软件能够完整的更新;三是ECU软件更新是安全的。

对于条件1,采用减少传送数据包大小的方法,例如使用ECU增量压缩工具基于差分压缩算法来提高更新数据包的压缩比,或者通过让更新数据在不同总线上并行传输来减少更新的时间。对于条件2,需要在更新数据包发送的前后进行更新版本的校验,并获取ECU版本信息,在ECU刷写完成后对数据进行一致性检查。对于条件3,因为ECU软件刷写出现故障可能关系到驾驶人的生命安全,所以在不同服务端进行更新数据传输的过程中,需要对更新数据进行加密,以防止恶意攻击,信息泄露等威胁。

图4展示了ECU软件更新的过程。在更新ECU软件时,主要在管理更新数据的服务器、TCU(远程通信单元)和更新目标ECU之间进行通信。

4OTA关键技术

4.1差分压缩算法

差分压缩算法又分为差分算法和压缩算法,是一种以时间换空间的策略。软件升级的本质是软件旧版本通过一些面向字节流的操作,使得软件升级为新版本。

差分算法是通过对新旧版本之间进行差异性比对生成delta文件(图5)。在软件开发中,新旧版本的变更往往对逻辑关系的变动不大,这使得新旧软件之间存在较大的关联性。在差分算法中使用以下3种指令来描述新旧版本之间的差异。

DATA指令:当软件新版本的某个程序块在一些位置与上一版本完全不相同时,DATA指令负责把新程序块插入进来。

SKIP命令:当软件新版本的某个程序块内容和起始地址都和上一版本相同时,SKIP指令负责跳过该程序块。

COPY命令:当软件新版本某个程序块的内容和上一版本相同,但起始地址不同时,通过COPY命令来移位。

由上述可知道,delta文件大小取决于COPY、SKIP和DATA命令的数量。设[NUM]_c为COPY指令数,[NUM]_s为SKlP指令数,[NUM]_d为DATA指令数,L_d代表新添加数据块的长度,地址的长度为L_add。由以上可得出delta的大小如下。

[delta_size=(1+L_add+1+L_d)×[NUM]_d+(2+L_add)×([NUM]_c+[NUM]_s)

对于压缩算法,提高压缩率需要耗费时间,节约时间则压缩率就会低。ECU固件更新包体积很小,因此不需要采用高压缩率算法,甚至不压缩。而对于车载娱乐信息系统软件更新,对差分文件进行压缩则很有必要。

4.2寻址技术

寻址技术有静态和动态之分。静态寻址技术在软件开发阶段,提前对每个数据块提前预留存储空隙。日后修改时,相对应的数据块起始地址不会改变,但会耗费过多存储空间。且当预留的空间用尽之后,仍然需要使用动态寻址技术。

动态寻址技术通过维护地址表,使得能够灵活利用地址空间,从而在一定程度上会增加升级包大小。

4.3安全策略

根据A-SPICE评估标准,在集成测试阶段进行静态代码检查,能有效检测代码漏洞。在代码发布前进行本地化测试检查,并模拟入侵手段,能提前发现漏洞,最后进行trust zone的渗透测试。

为保证OTA远程刷写ECU软件的网络服务器安全,可以采用Uptane安全架构。Uptane是一种用于汽车OTA的开源软件更新框架规范,专门为ECU上运行的软件安全需求设计,可以有效保护用于签名和交付更新的服务器和网络。

4.4回滚重刷技术

该技术指在升级ECU出现刷写故障时,可以回退到上一版本或者初始版本,以保障车辆正常运行。在系统设计中,搭载RTOS的ECU在硬件上有一个额外的存储空间,以存储上一次更新的完整镜像以及初始版本镜像。当原有系统升级成功时,把完整镜像覆盖到备用存储空间中。当系统升级失败时,通过系统调用备用存储空间的镜像,来还原上一版本的系统。如果再次刷写失败,则再次触发系统调用,跳转到初始版本镜像的地址,完成初始镜像刷写。

5总结

本文对车辆OTA升级场景和关键技术进行了分析探讨,搭建了一种基于Uptane架构的云服务平台,通过移动无线通信网络完成对汽车ECU软件的远程在线刷写。本文的场景,有效地满足车辆智能化的软件快速迭代需求,更好地提升ECU的功能。