汽车OTA概述

news/2024/12/29 8:37:38/

文章目录

  • 前言
  • 一、软件更新
  • 二、ECU刷写包复用
    • 1.引入库
    • 2.读入数据
  • 总结


前言

掌握OTA(Over-The-Air,无线技术),汽车领域与IT领域正在技术融合!

技术更新,也增加了车载应用场景,软件更新、实时诊断和数据收集等OTA应用案例为汽车整车厂带来了巨大的成本节约潜力,并且为提高客户忠诚度提供了新的机会。但所需付出的努力是巨大的。

成功实现该目标的一个关键是如何恰当地融入现有流程。

随着车辆内部所使用的E/E电子电气架构发生改变,车辆中也开始引入HPC(High-Performance Computing,高性能计算)平台。这样可以脑补成车辆为行驶的一台计算机。目前车辆内部的架构是多个域控制器通过中央网关互连(地盘域、动力域、车载娱乐域等),各个模块的功能在生产时已分配给特定的ECU(微控制器)。

在这种架构下,ECU软件开发主要是用嵌入式C,代码经过优化并最大程度地降低资源占用。编程范例存在一些限制发展现象——比如不允许动态内存管理。

CP平台是此架构的一个典型代表。但在未来的车辆生产中,更加复杂的功能将通过HPC(微处理器)集中实现,其余功能子网通过相关的中间件互相通信,传感器和执行器仍使用传统ECU 这种变化的目标是创建面向服务的架构,使得整个系统具有更好的可维护性和可扩展性,尤其是在 SOP量产后。HPC当中使用了许多与POSIX兼容的操作系统。整个平台也可以使用来自于传统IT领域的技术和工具。同时,会使用到面向对象的高级语言,例如C++,使得新的编程范例可以实现动态内存管理。CP平台是此架构的Solution方案。


一、软件更新

在通讯行业,OTA软件更新已经被实际运用了很多年。典型场景——如今的智能手机几乎每天都会更新一到多个应用程序,该机制再汽车领域应用不多。通常情况下, ECU软件仍然是在车间或售后点进行更新(EOL或4S店花钱升级)。其中一个原因是,相较于更新智能手机应用(类似于单节点),更新车辆网络中的ECU更加复杂。当前,车辆中可能包含有超过100个基于不同平台,采用不同更新刷写机制的ECU。这些ECU在整车网络架构中进行通信。另一方面,出于车辆安全考虑,车辆只有在安全的状态或者有保障的环境当中才能够进行软件更新。这是因为在更新期间无论发生任何情况,车辆都可能无法行使与安全相关的功能。e.g. 车辆ECU更新时,要求发动机转速为0。

在产线下线时,这些条件可以轻松满足,例如,通过将外部诊断仪接入车辆并发送相关诊断指令来完成。但是在OTA方案中,检查和验证的过程是在无人监督的情况下自动执行的。这就需要车辆内部的某个应用程序能够扮演诊断仪和诊断工程师的角色,使得实际的刷写过程与离线状态下由工程师操作诊断仪实现的流程没有本质上的区别。支持OTA更新的ECU可以实现在Application 环境中进行软件下载。为此,这些ECU保留了双重内部保护(A/B分区)。当一些应用程序在活动分区中运行时,新版软件可以同时下载到非活动分区。之后,交换执行分区便可快速激活新版软件。在这种机制下,即使更新失败,应用软件也能够很轻松可靠的退回到上一个版本并且不会产生额外冲突,避免使车辆处于无法控制的状态(有点像数据库中的回滚机制)。

二、ECU刷写包复用

ECU的软件升级刷写流程由Bootloader预先定义(Bootloader基于车企刷写规范定制)。

1、诊断仪通过车载总线(CAN或以太网)与目标ECU建立通信。然后经过响应措施(解锁ECU进行安全认证);

2、然后执行诊断序列。上位机工具将会先从ECU中读取值,然后根据读到的数据运行不同的流程分支。上位机除了基于刷写序列之外。还应该获取:

  • 刷写数据;

  • 通讯参数;

  • 地址信息等刷写必要内容。

     

通过获取上述内容,以上位机为载体,执行符合当前刷写要求的刷写序列以及Flash Driver & Flash Data。

实时诊断和数据收集

伴随着车企云越发应用普及以及无线数据传输功能完善,汽车通过远程技术策略,可以实时获取已销售车辆运行状态信息,实时监测,便于技术升级和故障解决。

另外收集多车数据时,将数据高效地传输到后端对于节省带宽及成本极其重要。从技术上讲,可以争取以最佳方式对内容进行编码,并在车辆中预处理和汇总数据。但这种预处理通常会在ECU中产生额外的负载,在极端情况下可能会限制正在进行中的其他程序。任何情况下都必须避免这种情况。因此,数据收集作业必须严格设计为尽量获取精简但“正确”的数据。

数据收集时,通过车辆总线传输的信号可以深入了解车辆的行为。这些信号比较容易在不产生其他影响的情况下被捕捉到,前提是通过以太网连接的带有数据收集应用的HPC系统正常运行,以及常用库可用于方便地记录以太网通信。该流程几乎不会对总线造成额外的负载。

OTA通讯终端验证是必须的。因此,在OTA整体框架中提供所有应用需要的通讯和安全组件有很大意义。


总结

车载操作系统随着POSIX系统HPC的出现,让我们这些工程师可采用典型IT领域所常用的编程语言(C++等)、典型范例甚至工具进行开发。基于这样的背景,OTA解决方案可以更高效、更高质量地实现。通过开发可在车内以及离线工具中使用的便携式软件组件,通讯可靠度能够得到极大的优化。

伴随着技术成熟,会越来越多的车企实现OTA功能!


http://www.ppmy.cn/news/6861.html

相关文章

lua 基本语法

数据类型 lua是动态语言类型,变量不需要类型定义,只需要为变量赋值 lua有8个基本类型: 数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包…

Nmap系统扫描实战

今天继续给大家介绍渗透测试相关知识,本文主要内容是Nmap系统扫描实战。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备…

沙盘游戏咨询感悟

一、沙盘游戏操作流程 1.和来访者进行交流。咨询刚开始,我和来访者进行了简单的交流,获得来访者的好感与信任,并用心倾听来访者的诉求。来访者在倾诉时语速很快,我感受到她的担心与焦虑,迫切想找到解决问题的方法&…

二、栈和队列

二、栈和队列 栈——后进先出 应用:数制转换、括号匹配、行编辑程序、迷宫求解、表达式求值、八皇后问题、函数调用、递归调用的实现 队列——先进先出 应用:脱机打印输出 多用户系统用户排队分时循环使用CPU和主存 按用户优先级排队,每…

Android入门第50天-读写本地文件

简介 为了这个系列,我的代码已经准备到了第150天了。接下来的内容会越来越精彩,我们也越来越开始进入Android的一些高级功能上的编程了。今天我们就要讲Android中对本地文件进行读写的全过程。 课程目标 输入文件名、输入文件内容后按【保存到SD卡】&a…

Vue3 异步组件 suspense

vue在解析我们的组件时, 是通过打包成一个 js 文件,当我们的一个组件 引入过多子组件是,页面的首屏加载时间 由最后一个组件决定 优化的一种方式就是采用异步组件 ,先给慢的组件一个提示语或者 骨架屏 ,内容回来在显示…

亚马逊云科技 Build On - 咖啡厅Demo学习stepfunction serverless应用

荣幸参与和csdn和aws联合举办的buildon实验活动,主要目的还是学习stepfucntion的使用,这个服务能够集成大量aws service感觉可以出现很多有趣的用法。官方给出的文档已经非常详细了,这里只是对一些比较难理解的点进行了记录和解释&#xff0c…

vue + nodejs + npm

node.js下载 1、如图所示: 2、建立node_cache、node_global文件夹: 然后运行以下2条命令 npm config set prefix “D:\node-v14.15.0-win-x64\node_global” npm config set cache “D:\node-v14.15.0-win-x64\node_cache” 执行npm list -global查看&…