汽车OTA--Flash RWW属性为什么这么重要

目录

1. OTA与RWW

1.1 FOTA需求解读

1.2 什么是RWW

2.主流OTA方案

2.1 单Bank升级

2.2 基于硬件A\B SWAP的FOTA方案

2.3 基于软件实现的FOTA方案

3.小结


1. OTA与RWW

1.1 FOTA需求解读

CP AUTOSAR R19-11首次提出了FOTA的概念,针对FOTA Target ECU提出了多条需求:

  • FOTA Target ECU shall be capable to install, i.e. receive and store, a new SW image while the current image on the ECU is executed in its normal operating mode.
  •  An ongoing installation shall not disturb or reduce the functional scope of the
    respective FOTA Target ECU.

目的是为了缩短因为软件升级导致的汽车停机时间,文档里甚至要求汽车行驶过程中仍可以进行新程序的升级(但必须在汽车安全状态下进行激活),且在新程序升级时不能影响绝大部分汽车功能;

  • FOTA Target ECUs shall be capable to internally recover the SW image, being
    active before last (FOTA) activation. This may happen on a trigger by the FOTA
    Master instance.
  • FOTA Target ECU shall accept activation of new software in vehicle safe-state
    only.

为防止升级失败,必须有一个回滚机制能够保证汽车回到之前状态;升级成功后,必须让汽车在安全状态下才能激活新的软件进行运行,根据ECU在整车系统中的不同功能,这个安全状态根据OEM来定义。

可以看到,随着软件定义汽车的风越吹越大,升级整车系统以保持最新功能的需求也不断增加;以往在4S店线下召回升级软件的方式日渐落后,借助各种无线通信技术对整车进行升级的方式变成了当前乃至未来的趋势。

1.2 什么是RWW

在上述需求里,我们发现FOTA以以往线下召回最明显的区别在于无感:即ECU运行代码时仍可以实现对新软件的接收和存储。

所以这就对车控类ECU的主控芯片MCU提出了一个非常关键的需求:CPU在Flash取指运行时,可同时对另一区域的Flash进行擦除和编程以存放新软件。这就是Flash在分区上的RWW(Read While Write)特性;Read分区存放当前运行的软件,Write分区存放新的软件。

该特性是基于存储器哈佛结构诞生也发展出来,哈佛结构将系统存储分为程序存储器(Program Memory)和数据存储器(Data Memory),每个存取器有自己独立的总线,如下图:

这样我们就实现了CPU从Program Memory中读取指令的同时,对Data Memory进行读取或写入;但是缺点在于如果Program Memory中代码需要更新,CPU这时候就只能Halt,因为Program Memory Bus正在写入数据代码到Program Memory中,它很忙。

如何优化呢?我们按照总线这个思路,把Program Memory分成多个Bank(Block、Section都行),并拓展总线,这就能实现在当前Bank运行,同时刷写代码到另外一个Bank。如下图所示:

这个属性天然对OTA非常友好,CPU运行A Bank上的程序,A Bank上的程序提供刷写B Bank的驱动;刷写完成后切换Bank,CPU到B Bank取指运行。

所以,我们可以看到主流车规MCU里基本都支持RWW属性,例如:

  •  NXP S32K344支持最高4MB PFlash(Block size = 1MB),OTA时分为2x2MB,RWW属性在Active block和passive block之间实现;
  • 英飞凌TC37x支持最高6MB(2x3) PFlash,OTA是分为2x3,RWW属性在Active Bank与Inactive Bank里实现;
  • 意法半导体SPC58NH92,支持最高8个RWW Partitions,OTA可采用RWW P4\6和RWW P5\7互换

2.主流OTA方案

2.1 单Bank升级

这里我们首先回顾以前MCU资源不足,无法考虑A\B升级的方案,如下:

MCU启动后首先运行Bootloader,判断是否有升级请求,如没有则跳转至App运行;假设我们在App里收到升级请求了,立马设置升级请求标志位,并复位系统进入Bootloader;检查到请求Flag后,Bootloader将通信\flash驱动拷贝至RAM或者DFlash,然后开始进行升级流程,如下图:

很明显,这种升级方式不能提供回滚机制、也不能实现零停机升级,是不能满足如今FOTA需求。

在1.2节里,我们明显观察到RWW属性是和OTA强相关的,因此上述MCU也支持硬件OTA机制;这也为我们设计OTA方案提供了便利。

目前主流的OTA方案可以分为基于硬件特性的FOTA方案和软件实现方案。

2.2 基于硬件A\B SWAP的FOTA方案

以英飞凌TC37x为例,它有两个地址映射模式: standard address map和alternate address map,其物理bank和逻辑地址映射关系如下:

而我们在上面提到使用硬件SWAP机制的好处就是只用维护一个工程以及对应链接脚本,因此从逻辑上讲,我们应该就使用standard address map的地址来设计链接文件并编译工程,整体逻辑如下:

从CPU的视角来看,它始终使用逻辑地址0x80000000(举例)来取指,而芯片硬件根据不同地址映射模式来给物理Bank0、1分配逻辑地址,例如0xAA模式下,分配0x80000000给到PFlash1,这样就能保证运行的是更新后的代码。 

2.3 基于软件实现的FOTA方案

即使硬件没有地址映射SWAP的功能,从软件角度也是可以实现上述功能,但前提是Flash的分区要支持RWW;

在软件实现角度里,由于逻辑地址和物理bank是一一对应的,要实现A\B SWAP,就必须维护两个工程,一个工程链接文件锚定Bank A,一个工程链接文件锚定Bank B,有BootManager根据需要选择运行A还是运行B,理论如下:

虽然这个实现了A\B 升级,但是从逻辑上将随着升级次数的增多,对于软件版本的维护和工程的维护是需要审慎进行的。

所以,Flash的RWW对于OTA来说是一个必选项,但是硬件地址映射模式的切换有最好,没有也能做。

3.小结

以上,我们分析了Flash RWW属性,目前汽车车控类MCU的主流OTA方案;对于具备自更新能力的控制器,例如座舱域控制器SOC端、智驾域SOC端、中央网关等等,还没有具体研究过,后面接触了再分享给大家。

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

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

相关文章

状态压缩DP——AcWing 291. 蒙德里安的梦想

状态压缩DP 定义 状态压缩DP是一种利用二进制数来表示状态的动态规划算法。它通过将状态压缩成一个整数,从而减少状态数量,提高算法效率。 运用情况 状态压缩DP通常用于解决具有状态转移和最优解性质的问题,例如组合优化、图论、游戏等问…

AI大眼萌探索 AI 新世界:Ollama 使用指南【1】

在人工智能的浪潮中,Ollama 的出现无疑为 Windows 用户带来了一场革命。这款工具平台以其开创性的功能,简化了 AI 模型的开发与应用,让每一位爱好者都能轻松驾驭 AI 的强大力量。大家好,我是AI大眼萌,今天我们将带大家…

GPT-4o一夜被赶超,Claude 3.5一夜封王|快手可灵大模型推出图生视频功能|“纯血”鸿蒙大战苹果AI|智谱AI“钱途”黯淡|月之暗面被曝进军美国

快手可灵大模型推出图生视频功能“纯血”鸿蒙大战苹果AI,华为成败在此一举大模型低价火拼间,智谱AI“钱途”黯淡手握新“王者”,腾讯又跟渠道干上了“美食荒漠”杭州,走出一个餐饮IPOGPT-4o一夜被赶超,Anthropic推出Cl…

力扣SQL50 查询结果的质量和占比 AVG(条件)

Problem: 1211. 查询结果的质量和占比 &#x1f468;‍&#x1f3eb; 参考题解 Code select query_name,round(avg(rating/position),2) as quality,round(100 * avg(rating < 3), 2) as poor_query_percentage from Queries group by query_name -- 到此结束过不了最后一…

PHP发送HTML邮件的步骤?设置模板的技巧?

PHP发送HTML邮件怎么设置模板&#xff1f;如何用PHP群发邮件&#xff1f; PHP提供了强大的功能来发送HTML格式的电子邮件&#xff0c;这在需要发送格式化内容的邮件时特别有用。AokSend将详细介绍PHP发送HTML邮件的步骤&#xff0c;涵盖了必要的准备工作和实际操作过程。 PHP…

MySQL操作语句练习【经典20题】

emp 表视图 dept 表视图 题目 1.请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。 2.请在EMP表中查找部门号在10&#xff0d;30之间的雇员的姓名、部门号、工资、工作。 3.请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 4.请从表EMP中查找工资低…

Selenium 获取请求响应

Python 3.7 selenium3.141.0 urllib31.26.2 Chromium 109.0.5405.0 &#xff08;32 位&#xff09; import json from selenium import webdriver from selenium.common.exceptions import WebDriverException import timeoptions webdriver.ChromeOptions() # 谷歌浏览器位置…

ffmpeg音视频开发从入门到精通——ffmpeg日志及目录操作

文章目录 FFMPEG1. 操作日志2. 文件移动和删除3. 操作目录重要函数 FFMPEG 1. 操作日志 日志级别 AV LOG ERROR AV LOG WARNING AV LOG INFO AV LOG DEBUG cmake_minimum_required(VERSION 3.27) project(FFmpeg_exercise) set(CMAKE_CXX_STANDARD 14)# 定义FFmpeg的安装路…

Java之Hutool/Guava/Apache Commons工具包项目实践

概述 Hutool是一个Java工具包,提供了丰富的工具类和方法,目的是简化开发任务提高开发效率;适用于需要快速开发和实现多种功能的场景,适合项目需要处理字符串、日期、文件等常见任务时~ toBeBetterJavaer/docs/common-tool/StringUtils.md at master itwanger/toBeBetterJavae…

转--Hadoop集群部署案例

模块简介 本模块主要练习Hadoop集群部署。 模块知识 ● 使用Linux基础命令 ● Hadoop集群搭建部署知识 环境准备 三台CentOS7操作系统的虚拟机 可以是3个Docker容器&#xff0c;也可以是三个VMWare/VirtualBox的虚拟机。三台虚拟机的最低配置为1核1G 20G。如果是虚拟机中…

pytorch把图片打成patches

我以图片shape[3,308,644]&#xff0c;kernel 16*16为例。 1 首先先pad一下图片保证能被kernel完整分开。 先pad图片 C,H,Wt_img.shape pad_h (16 - H % 16) % 16 pad_w (16 - W % 16) % 16t_img F.pad(t_img, (0, pad_w, 0, pad_h))变成了[3,320,656] 那么320//1620 ,…

MK米客方德SD NAND的掉电保护机制

随着科技的飞速发展&#xff0c;数据存储设备在我们的生活和工作中扮演着越来越重要的角色。然而&#xff0c;数据安全问题也随之而来&#xff0c;尤其是面对突然的电源故障或意外断电&#xff0c;我们宝贵的数据可能会面临丢失的风险。MK米客方德公司深知这一点&#xff0c;因…

Linux中tar压缩与解压缩

TAR是Unix/Linux中常用的归档工具&#xff0c;它可以对文件或目录进行打包但不压缩&#xff0c;或者配合其他工具进行压缩。 压缩文件或目录 以下是一些基本的tar压缩命令&#xff1a; 1.压缩单个文件&#xff1a; tar -cvf archive.tar file1 2.压缩多个文件&#xff1a; t…

后仿真中的 《specify/endspecify block》之(5)使用specify进行时序仿真

前面我们学习了specify...endspecify 具体是什么东西。今天,我们使用specify block 中定义的延时,来进行一次仿真。看看到底是背后如何运转的呢。 一 基本例子 一个用 specify 指定延迟的与门逻辑描述如下: module and_gate(output Z,input A, B);assign Z = A & …

导入别人的net文件报红问题

1. 使用cmd命令 dotnet --info 查看自己使用的SDK版本 2.直接找到项目中的 global.json 文件&#xff0c;右键打开&#xff0c;直接修改版本为本机的SDK版本&#xff0c;就可以用了

CPU飙升100%怎么办?字节跳动面试官告诉你答案!

小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题&#xff0c;它是一个与具体技术无关的普遍挑战。 这个问题可以很简单&#xff0c;也可以相当复杂。 有时候&#xff0c;只是一个死循环在作祟。 有时候&#xff0c;是死锁导致的。 有时候&#xff0c;代码中有…

windows设置开机启动项

将文件放到下面路径即可实现每次开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

【Flask】学习

参考B站视频&#xff1a;https://www.bilibili.com/video/BV1v7411M7us/ 目录 第一讲 什么是 flask 修饰器、路由规则 flask 变量规则&#xff0c;灵活传参数据类型&#xff1a;str、int、float&#xff08;正浮点数&#xff0c;传int会报错&#xff09;、path、uuid app.…

1108. IP 地址无效化

给你一个有效的 IPv4 地址 address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 示例 1&#xff1a; 输入&#xff1a;address "1.1.1.1" 输出&#xff1a;"1[.]1[.]1…

【最新】2025QS世界大学排名数据与得分明细数据集

数据简介&#xff1a;QS排名由Quacquarelli Symonds公司发布&#xff0c;是全球最具影响力的大学排名之一。它每年根据学术声誉、雇主声誉、师生比例、文献引用率、国际师资和国际学生比例等多项指标&#xff0c;对全球大学进行评估和排序。旨在为学生、学者和雇主提供权威的高…