[AutoSar NVM] 存储架构

news2024/11/15 19:55:36

依AutoSAR及公开知识辛苦整理,禁止转载。  专栏 《深入浅出AutoSAR》, 全文 2900  字.


图片来源: 知乎


汽车的ECU内存中有很多不同类型的变量,这些变量包括了车辆各个系统和功能所需的数据。大部分变量在ECU掉电后就会丢失,因为它们是易失性数据,无法长期保存。然而,在这些易失性数据之外,还存在一些非常重要的变量,它们被称为非易失性数据


其中一个非易失性数据是车辆的VIN码(Vehicle Identification Number),VIN码是唯一标识一辆汽车身份信息的序列号。每辆汽车都有一个独特的VIN码,并且该码通常被用于注册、保险以及维修等方面。由于其重要性,VIN码需要在ECU掉电后仍能够保留。


另一个非易失性数据是防盗钥匙信息。现代汽车普遍采用了电子钥匙系统来提高安全性能。防盗钥匙信息包括了与钥匙配对相关的加密算法和认证机制等内容,在ECU掉电后依然需要保存以确保正确地进行身份验证和解锁操作。


此外,下线配置字也属于非易失性数据之一。下线配置字记录了生产过程中对某款汽车进行特定设置或调整时所使用到的参数和选项等信息。这些配置字可以影响到整个汽车系统运行状态和功能表现,在ECU掉电后仍需储存以确保恢复出厂设置或其他必要操作时能够准确应用。


为管理和维护所有这些重要而又不可丢失的非易失性数据,Autosar NVM模块应运而生。Autosar NVM(Non-Volatile Memory)模块专门负责处理与非易失性数据相关的存储、备份、读取和写入等任务。通过合理地管理NVM模块,可以有效地确保这些关键数据得到正确地保存,并在需要时能够快速访问。


Autosar NVM支持两种NV(Non-Volatile)变量存储方式:静态存储区域(Static Storage Area)和动态存储区域(Dynamic Storage Area)。

静态存储区域主要用于保存那些:

  • 固定不变
  • 只偶尔更新但占据空间较小
  • 访问频率相对低的NV变量

而动态存储区域则适用于那些:

  • 经常发生改变
  • 更高访问频率
  • 占据空间较大
     

Autosar 存储软件架构

AUTOSAR,存储模块软件架构分层依次是:

NVM->MemIf->Fee->FLS->FLASH

  • NVM是存储服务层,也就是存储模块最上层,该层是对外提供的接口。
  • MemIf是接口层,区分下面是Fee还是Ea。
  • Fee是Flash模拟EEPROM的抽象层。
  • Fls是flash驱动。AUTOSAR规范中是通过DFLASH模拟EEPROM的形式将数据存到DFLASH中的。

Autosar NVM

在基础软件的服务层中,Autosar NVM作为非易失性存储器管理工具。它不仅提供了多种同步/异步服务来维护和管理所有非易失性存储器(NV)数据,还具备一系列功能来满足各种需求。

首先,在数据操作方面,Autosar NVM提供了初始化、读取、写入和控制等功能。通过这些功能,开发人员可以轻松地对非易失性存储器中的数据进行操作,并确保数据的可靠性和完整性。无论是处理EEPROM还是Flash模拟等不同类型的非易失性存储器,在Autosar NVM这个层级上都以相同类型进行抽象处理,使得开发人员可以统一调用Autosar NVM提供的接口进行操作。

其次,在底层细节与应用程序解耦方面,Autosar NVM设计将底层细节与应用程序解耦合。具体而言,在MemIf层才会对具体存储介质进行区分。通过MemIf层,可以根据实际情况选择合适的驱动程序或算法来处理EEPROM或Flash模拟等不同类型的非易失性存储器。

此外,在错误检测和纠正机制方面,Autosar NVM支持自动监测并修复可能存在于非易失性存储器中的错误。这大大增强了系统对于数据完整性和稳定运行环境方面 的保障。

NVRAM Block

在Autosar中规定了四种 NVRAM Block,分别为 NV Block、RAM Block、ROM Block、Administrative Block。

 

1. NV Block

NV Block是一种非易失性存储器块,用于存储需要在ECU断电后保持的数据。这种存储器的读写速度较慢,但具有高可靠性和长寿命。NV Block通常用于存储ECU的配置设置、故障码、历史数据等信息。

NV block是存储NV变量的基本结构,其中Header以及CRC校验非必须项。

2. RAM Block

RAM Block是一种随机存储器块,用于存储需要在ECU上电后才能保持的数据。这种存储器的读写速度较快,但是在ECU断电或重启后,存储的数据会丢失。RAM Block通常用于临时存储一些运行时数据,如缓存、栈、堆等。

缓存(Cache)是一种临时存储,在计算机系统中用于存储频繁使用的数据,加速计算机的运行速度。缓存由CPU内部或者外部芯片组实现,可以分为一级缓存、二级缓存等。

栈(Stack)是一种数据结构,它以先进后出的顺序存储数据,即后进先出。栈一般分配在内存的高地址,有一个指针记录下栈顶的位置。栈常用于函数调用、表达式求值、递归等操作。

堆(Heap)也是一种数据结构,它用于存储动态分配的内存。堆的内存分配和释放不是按照固定顺序进行的,也不是像栈那样有一个指针指向栈顶,而是由程序员自己控制的,因此堆中的内存可以被多个指针引用,也可以在程序的任何地方进行释放。

由于NV变量的写入与读取都是一件相对较慢的操作,而应用层逻辑操作周期速度又太快。直接操作NV block显然不合适,所以在进行读写之前,我们会建议一个同样大小的Ram空间来操作、使用、存放这些还没有被写入或者读取的NV值。

在NVM中规定了permanent,temporary 两种类型。其中永久型在项目配置时就必须输入指定的RAM地址;而临时型不需要在项目配置期间就设定

3. ROM Block

ROM Block是一种只读存储器块,用于存储只读数据。这种存储器的读取速度较快,但不能进行写操作,也不能在ECU运行时修改存储的数据。ROM Block通常用于存储ECU的程序代码、固件升级文件等。

4. Administrative Block

Administrative Block是一种系统级别的存储器块,用于存储ECU的元数据和管理信息。Administrative Block通常包含ECU的识别码、版本信息、访问权限等。

Administrative block是专门用于对NVRAM Block 与 RAM blcok 的数据安全性进行管理而设计的,它对应用层并不可见。


参考

METAAutosar NVM 介绍 - 知乎
AutoSarAUTOSAR_SRS_MemoryServices.pdf
AutoSarAUTOSAR_SWS_NVRAMManager.pdf
汽车工程师谈技术Autosar nvm的机制原理是怎样的

Autosar Architecture (Learn from Scratch with Demo)

图片来源: COMIDOC

免责声明

本文根据公开信息整理,旨在介绍更多的汽车知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。

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

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

相关文章

AnkiPDF Guru软件评测:打开全新学习方式的大门

在当今信息爆炸的时代,如何高效学习和记忆成为了每个人关注的焦点。AnkiPDF Guru软件作为结合了Anki和PDF的学习利器,向我们展示了一种全新的学习方式。本文将以软件的实用性和使用场景为切入点,从专业的角度客观分析和评测该软件&#xff0c…

3.2.6:工作表的VBA操作引申

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。 如果…

【毕业设计】基于SSM酒店后台管理系统

前言 🔥本系统可以选作为毕业设计,运用了现在主流的SSM框架,采用Maven来帮助我们管理依赖,所选结构非常合适大学生所学的技术,本系统结构简单,容易理解!本系统功能结构完整,非常高适…

express session JWT JSON Web Token

了解 Session 认证的局限性 Session 认证机制需要配合 cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。 注意: 当前端…

rust学习—— 复合类型结构体、复合类型枚举、复合类型元组

文章目录 复合类型元组用模式匹配解构元组用点来访问元组元组的使用示例 复合类型结构体结构体定义结构体语法创建结构体实例访问结构体字段简化结构体创建结构体更新语法 结构体的内存排列元组结构体(Tuple Struct)单元结构体(Unit-like Struct)结构体数据的所有权打印结构体 …

k8s kubeadm配置

master 192.168.41.30 docker、kubeadm、kubelet、kubectl、flannel node01 192.168.41.31 docker、kubeadm、kubelet、kubectl、flannel node02 192.168.41.32 do…

springboot配置redis

1.Jedis库 依赖库 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.2</version> </dependency>使用案例&#xff1a; Testpublic void jedis(){Jedis jedis new Jedis("127…

【Java 进阶篇】Java Servlet URL Patterns 详解

Java Servlet 是构建动态 Web 应用程序的关键组件之一&#xff0c;而 URL Patterns&#xff08;URL 模式&#xff09;则是定义 Servlet 如何响应不同 URL 请求的重要部分。在本文中&#xff0c;我们将深入探讨 Java Servlet URL Patterns 的各个方面&#xff0c;适用于初学者&a…

谢谢大家!

注&#xff1a;此篇都是真心话&#xff01; 谢谢各位对我长久以来的支持&#xff0c;感谢感谢&#xff01; 感谢各位把我的阅读量提升到21487&#xff01; 感谢各位把我的排名提升到24916&#xff08;灰长前&#xff0c;干到前1000我发超长文章&#xff09;&#xff01; 感谢…

会声会影2023永久稳定绿色汉化中文版安装包下载

会声会影2023操作简单&#xff0c;功能同样强大&#xff01;会声会影附带上百种特效、滤镜、转场、模板。同时各类专业级视频工具&#xff0c;如调色、遮罩、绿幕抠像、运动追踪、分屏创建器&#xff0c;满足更高标准的视频需求。这款软件上手操作简单易学&#xff0c;就算你在…

已更新!宝藏教程!MYSQL-第六章节多表查询(一对一,多对多,一对多),连接查询(内,外连接),联合查询,子查询 代码例题详解这一篇就够了(附数据准备代码)

c知识点合集已经完成欢迎前往主页查看&#xff0c;点点赞点点关注不迷路哦 点我进入c第一章知识点合集 MYSQL第一章节DDL数据定义语言的操作----点我进入 MYSQL第二章节DDL-数据库操作语言 DQL-数据查询语言----点我进入 MYSQL第三章节DCL-管理用户&#xff0c;控制权限----点我…

windows安装数据库MySQL

windows安装数据库MySQL 文章目录 windows安装数据库MySQL一、MySQL官网下载压缩包二、在D盘新建文件夹D:\MySQL&#xff0c;将下载的压缩包解压到该文件夹下三、配置环境变量四、通过命令行模式安装、启用、配置SQL服务 一、MySQL官网下载压缩包 下载地址&#xff1a;https:/…

Unity ShaderGraph 必会,实用的渐变滑条

常用来做一下区分不同区间部位的区别 G 对应的是 UV 的垂直轴Y R 对应的是 UV 的水平轴X 举个例子&#xff1a; 是不是层次感立马就不一样了呀&#xff0c;嘻嘻嘻嘻嘻嘻嘻 加了渐变的&#xff1a; 没有加渐变的&#xff1a;

C# 图解教程 第5版 —— 第7章 深入理解类

文章目录 7.1 类成员7.2 成员修饰符的顺序7.3 实例类成员&#xff08;*&#xff09;7.4 静态字段&#xff08;*&#xff09;7.5 从类的外部访问静态成员7.5.1 静态字段示例7.5.2 静态成员的生存期 7.6 静态函数成员7.7 其他静态类成员类型7.8 成员常量7.9 常量与静态量7.10 属性…

SLAM从入门到精通(三边测量法详解)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 三边测量&#xff0c;或者说叫三角定位&#xff0c;是定位系统中很常见的一种测量方法。它最主要的原理就是依靠已有的三个特征坐标和半径&#xf…

安全典型配置(五)SNMP中应用ACL过滤非法网管案例

【微|信|公|众|号&#xff1a;厦门微思网络】 安全典型配置&#xff08;一&#xff09;使用ACL限制FTP访问权限案例 安全典型配置&#xff08;二&#xff09;使用ACL限制用户在特定时间访问特定服务器的权限 安全典型配置&#xff08;三&#xff09;使用ACL禁止特定用户上网…

mysql 命令行安装

一、安装包下载 1、下载压缩包 &#xff08;1&#xff09;公众号获取 关注微信公众号【I am Walker】&#xff0c;回复“mysql”获取 &#xff08;2&#xff09;官网下载 安装地址MySQL :: Download MySQL Community Server ​ ​ 二、解压 下载完之后进行解压&…

如何学习能减少对现有工作的依赖?

减少对现有工作的依赖需要你提升自己的技能和能力&#xff0c;并拓宽你的职业选择。以下是一些具体的步骤&#xff1a; 自我评估: 确定你目前的技能和兴趣&#xff0c;并识别哪些领域你可以提升或学习新的技能。 设定学习目标: 根据自我评估的结果&#xff0c;设定具体的学习目…

嵌入式学习笔记(63)位操作实战

(1)给定一个整型数a&#xff0c;设置a的bit3&#xff0c;保证其他位不变。 a | (1<<3) (2)给定一个整形数a&#xff0c;设置a的bit3~bit7&#xff0c;保持其他位不变 a | (0x1f<<3) (3)给定一个整型数a&#xff0c;清除a的bit15&#xff0c;保证其他位不变。 a …

鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]

文章目录 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术…