0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

特斯拉的OTA升级步骤详解

汽车电子设计 来源:网络整理 作者:工程师陈翠 2018-09-24 09:07 次阅读

特斯拉的OTA升级过程大致可由几个关键步骤描述。

1)OTA过程云端通过特斯拉自有的握手协议下发固件下载地址后,特斯拉中控屏上的cid-updater会从云端下载固件,进行解密并校验其完整性

通过类似于A/B Update的方式,车内其他强运算力的联网组件(如IC、APE等)根据cid-updater提供的固件文件进行升级。

CID-updater还会负责根据固件包中的目录信息与车辆配置做比照,据此产生release.tgz文件,并和升级软件boot.img一同提供给网关。然后网关执行上述升级软件,更新在网关上连接的二十余个ECU。

备注:Tesla的OTA机制中的一些关键文件,boot.img和release.tgz,负责向ECU提供固件。 这些文件无法直接在特斯拉服务器发布的更新包中找到,关于如何从特斯拉的服务器获取更新包以及汽车方面的整个更新过程仍然不清楚,这个过程仍未公开。

1)整车企业的云端:握手和固件包(FIRMWARE BUNDLE)

特斯拉有一个OTA框架,完成OTA程序需要这些模块:

Message box

Firmware gathering

Job management

大多数模块放在CID上的QtCar和QtCarServer中,作为云代理的一部分。 一旦建立了可信通道,代理就会设置一个端口,远程服务器可以将消息直接推送到汽车。必要时将从服务器端消息框中提取未读消息。 在OTA更新期间,这些代理主要用来传递信息,而不是执行实际更新操作。

FOTA过程以消息开头,开始的时候用带有命令initiate_firmware_handshake的消息,收到消息后,代理会将握手命令发送到cid-updater,与服务器进行握手。 握手期间需要执行以下步骤:

cid-updater把整车的硬件配置字符串和package_signature一起发送到远程服务器,package_signature是根据整车ECU现有版本生成

整车企业的云端(固件服务器)将验证该信息,根据当前版本提供固件包(FIRMWARE BUNDLE),包括固件包的下载地址、校验和和解密信息。 SquashFS包含除了Autopilot以外的其他所有ECU文件

固件包通过CDN加密渠道分发,cid-updater会进行下载、验证和解密

一旦提供了合法固件,cid-updater根据汽车配置收集正确的文件,并将这些文件分发到汽车的ECU内。 在OTA更新过程中,作业管理器负责向远程服务器报告当前状态和错误信息, 每个更新作业都有一个用于跟踪使用情况的作业ID。

2)车辆端:以太网连接的ECU

中控台和仪表盘是特斯拉车中两个主要的更新组建,都有一个名为cid-updater和ic-updater的updater守护进程,这些二进制文件之间共享了一些代码,但这两个守护进程的主要目的是不同的。

cid-updater负责在可靠的通信通道建立后与远程服务器通信,获取固件包,并提供必要的文件和信息作为辅助服务器,

ic-updater则专注于更新仪表盘本身。可将cid-updater视为本地服务器,ic-updater视为远程代理。

cid-updater和ic-updater都有一个名为command_service_listener的服务,此服务将打开一个端口,服务器可以执行RPC直接调用代理上的函数。一旦准备好所有内容,代理将使用此服务获取客户端的更新代理。服务器使用以下过程控制远程代理:

1.远程单元将停止所有其他工作并准备好gostaged,会尝试下载目标的文件包。

2.本地服务器启动HTTP服务器并提供更新文件,文件准备好后,将通知远程代理。

3.远程代理下载更新文件,下载文件并验证其签名后,更新程序将进行分段

4.将更新文件刷入ECU,对于仪表盘来说

假设当前在Part A运行

将新的rootfs图像和DTB刷入 Part B

将新的Kernal写入Part B

将主引导链和恢复引导链切换到Part B

检查引导链以确保下次引导是可接受的

完成所有这些操作后,设备将处于暂停和非活动状态。

5.经过最后的准备工作后,设备将重新启动:代理和服务器之间将持续连接,服务器可以获得有关当前更新状态的最新信息

3)车辆端:网关转换的CAN总线ECU

这些ECU的更新文件存储在文件夹(squashfs-root)/ deploy / seed_artifacts_v2中 :boot.img、release_version.txt 、version_map2.tsv和Signed_metadata_map.tsv、internal_option_defaults.tsv、ECUNAME/, like esp/, gtw/ etc

boot.img文件在升级时运行,并从release.tgz读取固件文件。 boot.img包含一个签名,在其原始EOF之后填充。 发送更新命令时,将检查此签名是否通过公钥验证。

Boot.img中的一个重要步骤是读取固件包release.tgz,包含网关用来更新相应ECU的所有文件,每个ECU只有一个固件文件。 从ECUNAME / PROVIDERID / ECUFWNAME.hex复制特定的固件文件。 在打包tar文件时,cid-updater从网关获取ECU信息和汽车信息,并根据signed_metadata_map.tsv中的表选择正确的PROVIDERID,文件格式如下:

以下是刷写ECU的关键步骤:

1.制作固件包,cid-updater将从网关获得最新的ECU硬件信息。对于每个ECU,cid-updater将搜索signed_metadata_map.tsv以查看哪条线与当前汽车具有相同的Requirements字段。找到后,它会将PATH_TO_FILE中的文件复制到名为New_name的tar文件中。为了简化更新包,cid-updater只会将signed_metadata_map.tsv中的相应行复制到release.tgz中具有相同名称的文件中。

2.根据更新模式,在SD卡中创建UPD文件, updater读取此文件以了解其当前状态。

3.更新程序boot.img上传到SD卡,并使用文件名重新启动。

当updater执行时,未修改的boot.img将每个文件读入内存,使用signed_metadata_map.tsv中相应行中的前几个字段填充,并使用符号值和启动时保存的公钥验证其签名.IMG。更新程序一旦找到不正确的固件文件就会退出,更新将导致失败。所有签名和散列算法都使用带有SHA512的Ed25519,并仔细选择所有公钥和常量。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 特斯拉
    +关注

    关注

    66

    文章

    6009

    浏览量

    125674
  • OTA
    OTA
    +关注

    关注

    7

    文章

    522

    浏览量

    34591

原文标题:特斯拉的OTA升级过程

文章出处:【微信号:QCDZSJ,微信公众号:汽车电子设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    “伪装式”召回遭否,汽车OTA新规推安全升级

    特斯拉为汽车行业引入OTA远程升级以来,汽车的OTA也从基础的零部件OTA逐步升级至整车
    的头像 发表于 08-27 09:47 4270次阅读

    PSoC™ 4 Bootlaoder的OTA升级步骤

    问题: 基于官方Bootlaoder的OTA升级需要遵循官方的通信协议,我们需要根据自己的通信协议实现客制化的OTA,我们需要怎么实现?有哪些需要注意事项? 解决方案: 无论是基于官方
    发表于 01-30 08:27

    OTA原理详解

    云端OTA通知推送云端只会给当时在线设备推送;对于当时不在线,或者没升级成功的设备,云端会每天推送一次。MCU OTA:包括下载、存储、校验、传输4个过程。下载、存储、校验同GAgent OT
    发表于 03-01 15:45

    OTA固件升级教程

    、进入【服务】固件升级OTA)模块,点击【创建新固件】步骤二、固件信息填写推送方式可选,同时增加软硬件版本号字段。硬件版本号+软件版本号+固件类型完全匹配视为同一系列固件,OTA
    发表于 03-01 18:31

    RK3399平台Android镜像-OTA 本地升级OTA远程升级

    平台android镜像版本升级的两种方式OTA 本地升级OTA远程升级以及OTA
    发表于 08-11 10:00

    嵌入式OTA升级实现原理是什么

    目录一、简介1.1 概念1.2 优点1.3 实现原理二、MCU OTA升级2.1 制作升级包2.2 下载升级包2.3 验签升级包2.4 更新
    发表于 12-14 07:24

    什么是在线OTA升级

    什么是在线OTA升级- OTA是Over-the-Air的简写,空中下载技术的意思。- OTA在线升级在日常消费电子产品中很常见,比如手机,
    发表于 12-22 07:44

    OTA升级方法

    简介OTA升级是嵌入式设备几乎都有的一项功能。对于简单的设备来说,例如单片机设备,OTA升级需要将新的固件刷写到FLASH上即可;对于高级一点的Linux设备来说,更加复杂,首先需要对
    发表于 01-25 08:12

    如何升级OTA

    如何升级OTA
    发表于 02-14 06:27

    如何实现OpenHarmony的OTA升级

    。可使用HCPAD-100开发板或DAYU200开发板验证,patch已提供,其他开发板可能存在差异,请自行验证。OTA升级步骤制作升级包(update_packaging_tools
    发表于 02-07 10:29

    特斯拉将召回的Model Y用OTA升级来解决

    据外媒报道,特斯拉公司和美国高速公路交通安全管理局(NHTSA)证实,将在美国召回部分Model Y,原因是这些车辆的后刹车灯可能会出现故障。不过,这一问题可以通过一次简单的OTA升级来解决。
    的头像 发表于 10-20 15:01 1968次阅读

    在线升级 | 物联网中的OTA升级原理

    从最新的固件方式来看,可以分成以下几类 0 1 OTA升级 1.1  概念 OTA:Over-the-Air Technology,即空中下载技术。 OTA
    的头像 发表于 02-03 02:40 1055次阅读

    OTA是什么?OTA升级有何用?

    ota是什么?ota升级是什么意思?很多用智能手机的人应该都会知道 ota是什么 ,而对于一些刚入门的机友们,ROOT、刷机、越狱都比较熟悉,但OT
    的头像 发表于 03-15 14:36 5185次阅读

    在线升级 | 物联网中的OTA升级原理

    从最新的固件方式来看,可以分成以下几类01OTA升级1.1概念OTA:Over-the-AirTechnology,即空中下载技术。OTA升级
    的头像 发表于 02-02 09:59 1001次阅读
    在线<b class='flag-5'>升级</b> | 物联网中的<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>原理

    详解蓝牙空中升级(BLE OTA)原理与步骤

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双区(dual bank)DFU?什么叫单区(single
    的头像 发表于 07-10 09:36 3944次阅读
    <b class='flag-5'>详解</b>蓝牙空中<b class='flag-5'>升级</b>(BLE <b class='flag-5'>OTA</b>)原理与<b class='flag-5'>步骤</b>