不得不说,近几年的互联 造车新势力确实给汽车软件开发带来不少的新趋势,其中一个就是OTA。
OTA —— Over the air update of the firmware,本身并不是一个新概念,我们的手机更新操作系统,更新APP就是OTA。
但把OTA 用在汽车之上,确实是非常炫酷且实用的功能。
如果我们只停留在概念上,就像我们都知道用火箭推进可以把人送上月球一样,但要实现登月着实的不简单。今天我们就稍微深入的探讨一下OTA的本质是什么?它又是如何工作的?
一 传统软件烧录
要了解OTA,那我们必须知道OTA 之前,软件是如何烧录到MCU 的Flash当中,这里必须要知道串口这个东西。当前的芯片,都存在至少一组串口(RX/TX),其中RX接受,TX发送,目的之一就是为了烧录软件。
比如上图芯片中箭头所示的两个引脚就是一组串口。通常我们编译好的机器语言代码就是通过串口RX 烧录到芯片里的。我们称之为Serial BootLoader。芯片在生产之初就已经装载好了SerialBootLoader 引导程序,当客户程序导入串口,SerialBootLoader就会按既定的规则将这些机器代码放置在不同的flash地址。比如下图烧录程序过程中,红框为flash地址,篮筐为程序文件(十六进制)
串口烧录,我们只需关注我们程序的编译,以及程序的大小,而无需再在程序中添加关于烧录的任何信息。
而OTA 则是通过另一条途径,将程序文件下载到MCU的flash当中。通过什么方式呢?就是 络,无论是WIFI 络,还是蜂窝 络(5G)亦或是其他。反正OTA 不能脱离 络,为了与串口烧录对比,我们暂且定义它为“OTA BootLoader”。
在芯片中并没有集成关于OTA 的引导程序,所以我们需要将支持OTA 操作的程序代码写在我们的客户程序里,并通过串口Serial BootLoader烧录到芯片里,所以不要期望一块什么内容都没有的芯片能实现OTA 。换句话说,要实现OTA 必须首先通过串口将支持OTA 的代码烧录到芯片才行。
那么问题来了, OTA BootLoader到底是什么原理呢?为了方便,我们先看看Serial BootLoader 时的硬件flash情况。
在MCU flash中,程序段(红色)和数据段(绿色)是单独存在的,如果我们用串口更新程序的话,Serial BootLoader会直接将当前程序段擦除,并将新程序(黄色)写入原先的程序段,这个过程,客户程序是不调入内存的。
而OTA BootLoader 更新模式则是另外一种状态, 如下图所示
由于在程序中植入有OTA 功能的代码,当来自云端的推送提醒设备要进行OTA 时,设备先将来自云端新的客户程序(同样包含OTA 代码)下载驻留在存储的空闲段(所以要实现OTA 功能,硬件Flash要足够大),这一过程,客户程序仍然在MCU中执行。当检测到新程序下载完毕后,设备会提醒程序安装,如果接受操作,则设备重启,只执行当前的OTA 程序段,将驻留在空闲存储中的新程序包一步一步替代掉原程序,包括OTA自己也革了自己的命。
好了,现在思路基本上清晰了,讨论下一个话题,这个云端是什么?说白了就是服务器。但这个服务器有可分为公有,和私有,什么意思呢?
公有就是租用那些面向全球的IoT 服务商空间,比如阿里云、百度云、腾讯云等等。主机厂只负责本地的程序更新、编译并上传,下载更新的事情是这些服务商来提供。
而私有,就比较直接,自建服务器。比如特斯拉,财大气粗,可以自建服务器,分散在全球各地的特斯拉车辆,通过Wifi 或者5G 络以及各种TCP/HTTP/MQTT协议链接到特斯拉的服务器进行OTA。
通过这一层关系,我们又明白了云端的概念,那么新的问题又来了。地面上行走的成百上千的车辆怎么跟云端建立起联系呢?我们继续往下看。
比如Model-X产品上市,特斯拉就会在他们的服务器上建立一个Model-X的产品,在这个产品之下,又建立一大堆与车辆 络标记(比如 卡物理地址)对应的设备。也就是说,每下线一台Model-X就需要在服务器Model-X产品下新增一个对应的设备。
因为每台Model-X上的 络标记是唯一的,所以可以保证这些建立在服务器上的设备也是唯一的,并且与销售到全球各地的每一台Model-X是对应的。当有一台Model-X 连上了 络,程序将其引导其登录特斯拉的服务器,并在Model-X产品下,找到与自己唯一对应的设备,并与之建立链接。而Model-X产品之下还有一个管理员(Administrator)他本身也是一个设备,他的任务就是负责程序更新以及上传到服务器供其他设备下载更新。
为什么要如此的麻烦,其实还是为了安全考虑,如果没有如此严格的一一对应关系,那是不是只要通过手段就能下载其程序,如果其他主机厂获取到程序,并通过反编译程序获取源码并不是太困难的事情。即使这样严格的方式,仍然不能保证万无一失,所以服务器与每个车之间的数据通讯实际是经过了加密的,具体什么随机数校验、时间戳、哈希算法等等又涉及到数学领域内的知识了 ……又一大坑,算了,还是跳过……
了解最新汽车行业招聘信息
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!