基于Bsdiff差分算法的汽车OTA升级技术研究(学习)

摘要

针对汽车OTA整包升级时,用户下载时间长,升级时间长,设备服务器端压力大等问题,本文提出了一种基于Bsdiff差分算法的汽车OTA升级技术。该算法能够对比新旧版本的差异,进行差分文件下载,减少软件包的下载量,提高用户满意度,在保证安全性的前提下实现更为轻量化的升级。

引言

在未来汽车竞争中,车载软件将占据未来汽车创新的90%,这一数据也充分的体现了软件对未来的影响,相比于从前,嵌入式软件更加复杂,迭代速度更快,嵌入式软件对于整体嵌入式系统性能越来越重要。

OTA(Over-the-Air Technology)空中数据下载技术,在智能手机上通过使用无线移动电话通信的空中下载接口可以进行数据远程管理,是一种无线技术。

作为一个智能终端,不可避免地需要对运行时的问题进行及时调整修复,并不断加入新的功能特性。随着系统新功能的加入,用户应用程序的大量下载,系统升级活动越来越频繁。若每次升级都采取整包升级的方式,每次都要下载数据量巨大的升级包,不仅降低系统的实时性,同样设备服务器也将承受巨大压力。

汽车OTA差分升级系统架构

在这里插入图片描述

  • 首先是最上层的云端,主要负责升级的交互工作,进行OTA的管理与服务,升级包的检测下载和OTA文件分发等流程。
  • 其次是管端,通过4G网络建立终端与服务器之间的安全连接,确保全新的、待更新的固件安全地传输到车辆。
  • 终端负责实施哥哥软件更新到汽车。

升级包是在升级任务中,用于真正下载和安装部署的文件。升级包由若干个文件组成,数量庞大。在FOTA升级中的整包下载过程中,需要逐个文件进行下载,每个文件会进入等待序列等待下载,前一个文件下载成功后则进入下载队列。所以整包下载一般耗时较长。

在这里插入图片描述
需要检测到对应软件包已经更新,然后通知下载任务开始。在传输初始阶段,需要上传第一个文件(版本信息文件),车辆对当前文件进行信息检测。当车端监测成功并接收文件后,服务器端将继续传送第二个文件,然后车端继续判断再接收。以此方式反复,直到最后一个文件接收完毕,完成升级包的下载功能。

在这里插入图片描述
从版本V1到V2的升级包下载,只需要分析其中差分部分,完成下载并升级。差分下载不但可以完成相邻版本之间的升级,跨版本也可以完成,只是时间略有增加,但整体相对整包下载更少。

汽车OTA差分升级流程

汽车OTA差分升级一般分为三步:

  1. 生成差分更新包
  2. 传输差分更新包
  3. 安装更新

汽车OTA差分升级流程共分为四点:

  1. 服务器端向终端发送版本检测请求进行升级包的检测,如果服务器端版本与终端版本一致,则提示无新版本需要更新,否则进行升级包的发送。
  2. 当检测到新的版本,应继续检测之前是否下载过,如果曾经下载过,进行OTA断点续传功能,否则全新下载。
  3. 升级。

实验方案与升级

差分升级性能主要指升级时间,升级时间主要包括如下三部分:

  1. 下载时间Td。
  2. 校验时间Tc。
  3. 数据擦写时间Tr。

升级时间Tu = Td + Tc + Tr。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/43831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据面试题:Spark的任务执行流程

面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)Spark的工作流程?2)Spark的调度流程;3)Spark的任务调度原理&#xf…

Python Opencv实践 - 图像仿射变换

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) rows,cols img.shape[:2] print(img.shape[:2])#使用getAffineTransform来获得仿射变换的矩阵M #cv.getAffineTransform(…

设计模式之适配器模式(Adapter)的C++实现

1、适配器模式的提出 在软件功能开发中,由于使用环境的改变,之前一些类的旧接口放在新环境的功能模块中不再适用。如何使旧接口能适用于新的环境?适配器可以解决此类问题。适配器模式:通过增加一个适配器类,在适配器接…

汽车领域专业术语

1. DMS/OMS/RMS/IMS DMS:即Driver Monitoring System,监测对象为Driver(驾驶员)。DMS三大核心: OMS:即Occupancy Monitoring System,监测对象为乘客。 RMS:后排盲区检测系统 IMS&…

提升大数据技能,不再颓废!这6家学习网站是你的利器!

随着国家数字化转型,大数据领域对人才的需求越来越多。大数据主要研究计算机科学和大数据处理技术等相关的知识和技能,从大数据应用的三个主要层面(即数据管理、系统开发、海量数据分析与挖掘)出发,对实际问题进行分析…

Linux Vm上部署Docker

创建ubutu虚拟机并远程连接, 参考 https://blog.csdn.net/m0_48468018/article/details/132267096 在终端中切换到root用户,并安装docker服务 2.1 切换到root用户 sudo su2.2 安装docker服务 , 参考 https://docs.docker.com/engine/install/ubuntu/ …

百望云联合华为发布票财税链一体化数智解决方案 赋能企业数字化升级

随着数据跃升为数字经济关键生产要素,数据安全成为整个数字化建设的重中之重。为更好地帮助企业发展,中央及全国和地方政府相继出台了多部与数据相关的政策法规,鼓励各领域服务商提供具有自主创新的软件产品与服务,帮助企业在合规…

聊聊在集群环境中本地缓存如何进行同步

前言 之前有发过一篇文章聊聊如何利用redis实现多级缓存同步。有个读者就给我留言说,因为他项目的redis版本不是6.0版本,因此他使用我文章介绍通过MQ来实现本地缓存同步,他的同步流程大概如下图 他原来的业务流程是每天凌晨开启定时器去爬取…

Redis数据结构——快速列表quicklist、快表

定义 Redis中的数据结构,链表和压缩列表这两种数据结构是列表对象的底层实现方式。 当时考虑到链表的附加空间太大,节点的内存都是单独分配的,还会导致内存碎片化问题严重。 因此从Redis3.2开始,对列表的底层数据结构进行了改造&…

CMake语法复习

前言 此文总结了库的制作和一些CMake常用的一些语法。 一:创建静态库和动态库 静态库的生成和使用 动态库的生成和使用 二:使用CMake来生成Makefile,生成可执行文件 顶层目录下的CMakeLists.txt project(HELLO) add_subdirectory(libhell…

Python项目实战:基于napari的3D可视化(点云+slice)

文章目录 一、napari 简介二、napari 安装与更新三、napari【巨巨巨大的一个BUG】四、napari 使用指南4.1、菜单栏(File View Plugins Window Help)4.2、Window:layer list(参数详解)4.3、Window:layer…

FPGA:uart原理+tx发送模块+rx接收模块

文章目录 一、串口通信二、UART通信三、tx发送模块四、rx模块接收 一、串口通信 处理器与外部设备通信的两种方式: 串行通信: 指数据的各个位使用多条数据线同时进行传输。 并行通信: 将数据分成一位一位的形式在一条数据线上逐个传输。 串…

Pycharm找不到Conda可执行文件路径(Pycharm无法导入Anaconda已有环境)

在使用Pycharm时发现无法导入Anaconda创建好的环境,会出现找不到Conda可执行文件路径的问题。 解决 在输入框内输入D:\anaconda3\Scripts\conda.exe,点击加载环境。 注意前面目录是自己Anaconda的安装位置,之后就可以找到Anaconda的现有环…

Mr. Cappuccino的第63杯咖啡——Spring之AnnotationConfigApplicationContext源码分析

Spring之AnnotationConfigApplicationContext源码分析 源码分析 源码分析 以上一篇文章《Spring之Bean的生命周期》的代码进行源码分析 AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(SpringConfig02.class); LifeCycleBe…

第17集丨Vue中的render函数

目录 一、脚手架中不能使用template配置二、基本使用三、关于不同版本的Vue 一、脚手架中不能使用template配置 // 引入vue import Vue from vue import App from ./Appnew Vue({el:#app,template:<h1>hhh</h1>,comments:{App},})上面案例中&#xff0c;配置了temp…

Mac 使用 rar 命令行工具解压和压缩文件

在 Mac 中常遇到的压缩文件有 zip 和 rar 格式的&#xff0c;如果是 zip 格式的 Mac 系统默认双击一下文件就能直接解压了&#xff0c;但 rar 文件就不行。 需要额外下载 rar 工具了实现。 第一步&#xff1a;下载 rar 工具 工具网址&#xff1a;https://www.rarlab.com/dow…

大语言模型之四-LlaMA-2从模型到应用

最近开源大语言模型LlaMA-2火出圈&#xff0c;从huggingface的Open LLM Leaderboard开源大语言模型排行榜可以看到LlaMA-2还是非常有潜力的开源商用大语言模型之一&#xff0c;相比InstructGPT&#xff0c;LlaMA-2在数据质量、培训技术、能力评估、安全评估和责任发布方面进行了…

微服务—远程调用(RestTemplate)

在微服务的所有框架中&#xff0c;SpringCloud脱颖而出&#xff0c;它是目前国内使用的最广泛的微服务框架 &#xff08;官网地址&#xff09;&#xff0c;它集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱…

3D- vista:预训练的3D视觉和文本对齐Transformer

论文&#xff1a;https://arxiv.org/abs/2308.04352 代码: GitHub - 3d-vista/3D-VisTA: Official implementation of ICCV 2023 paper "3D-VisTA: Pre-trained Transformer for 3D Vision and Text Alignment" 摘要 三维视觉语言基础(3D- vl)是一个新兴领域&…

在 React+Typescript 项目环境中创建并使用组件

上文 ReactTypescript清理项目环境 我们将自己创建的项目环境 好好清理了一下 下面 我们来看组件的创建 组件化在这种数据响应式开发中肯定是非常重要的。 我们现在src下创建一个文件夹 叫 components 就用他专门来处理组件业务 然后 我们在下面创建一个 hello.tsx 注意 是t…