目录
1.汽车OTA背景
1.1 汽车为什么需要OTA
1.2 汽车OTA概念
2. MCU的硬件A\B Swap机制
3.小结
1.汽车OTA背景
1.1 汽车为什么需要OTA
谈到英飞凌TC3xx的A\B SWAP硬件机制,我们首先要搞懂它的应用场景--OTA。
在手机或者电脑上,我们几乎每天都可以收到应用程序的OTA推送,现如今随着智能网联的发展,汽车更像是一台大型的智能移动终端。据统计,当前一台智能网联汽车内部可能部署了多达上百个ECU,代码行数以亿为单位,其复杂程度可想而知。
有软件的地方就有bug,那么在汽车这种生命周期长达数十年的终端上,OEM如何去更新和维护汽车里各种ECU的Bug修复、功能迭代和更新?
回想一下,大约在10年以前,汽车还不具备网联功能,手机流量也是贵的可怕,要想使用导航,只能使用车载导航巨头凯立德;而要想升级地图信息只能跑到4S店,还得付费才能更新。
同样,在以前各大车企要升级汽车软件功能或者修复Bug,通常也是要求汽车物理召回,通过线下OBD升级的方式来实现,这样不仅费时费力,还不能保证每台汽车都能升级。
换句话说,在汽车网联化未发展前,OEM将汽车生产并卖出后,基本就失去了售后市场这块价值洼地。
如今,随着网络的飞速发展,OTA被引用到汽车行业。Tesla利用OTA来实现付费升级、软件召回,节省大量成本,在汽车后市场掀起了软件付费的趋势。不难看出,汽车OTA会在今后越来越重要。
1.2 汽车OTA概念
当前汽车一个比较典型的OTA架构如下:
待更新的数据通过OEM OTA云端下发给车端的T-Box,然后经由检验或者透传给网关,网关作为升级主节点来管理控制车内所有的ECU升级,对于具备自更新能力的ECU,它可以直接将数据发送至目标ECU,只需要负责收集反馈更新结果;对于不具备更新能力的ECU,网关还需要充当升级Master阶段,待升级ECU作为Slave,双方通过UDS完成升级。
OTA根据升级内容的不同可以分为SOTA和FOTA:
- SOTA(Software over-the-air)多用于座舱系统,例如IVI主题、导航等升级,这部分内容最容易被用户感知
- FOTA(Firmware over-the-air)则面向汽车其他ECU的功能升级,包括车身、底盘、智驾等ECU,例如23年汉兰达利用OTA修复了发动机控制器燃油喷射修正程序不完善的问题,这部分升级更为专业,同时涉及到整车网络中多个节点,升级难度也剧增
我们今天主要讨论的就是FOTA。
2. MCU的硬件A\B Swap机制
OEM对于OTA的升级在大方向上有如下需求:
- 升级时要求无感,即系统在运行时仍可下载程序,零待机时间
- 针对升级异常处理要求始终有一个可工作的备份程序用于回滚
因此很多芯片厂就从硬件上提供利于OTA升级的机制,例如英飞凌TC3xx A\B SWAP机制,ST SPC58NH92 Hardware flash A/B context swapping机制、NXP S32K3 AB_SWAP机制等等,在该机制下,Flash需要支持RWW(Read While Write)属性,它的空间根据芯片厂的设计分为两个Bank(也有称partitions),这两个物理Bank可以由硬件交替分配一个统一的逻辑地址,在系统运行时,有且只有一个Bank 可以运行代码(称为Actife Bank),而另一个Bank 则称为inactive Bank,我们就可以在A运行时去刷写新的代码到B Bank上,下次系统重新上电后自动切换到最新的B Bank开始取指运行,从而实现了零待机时间,其原理如下图所示:
上述方案的好处在于我们只需要使用同一个链接文件,编译一个工程即可,这样利于维护。
从上面我们可以知道,芯片硬件A\B SWAP机制通常需要两块相同大小的Flash,所以例如英飞凌TC37x在不使用SWAP机制最高有6MB Flash供大家使用,一旦开启SWAP机制,则容量减半,只能用3MB了,因此在设计时我们需要特别考虑程序大小。
3.小结
本文主要把OTA的概念,以及MCU的硬件A\B Swap机制做了简单介绍,下面我们来聊聊TC3xx的SWAP机制