[AutoSar NVM] 存储架构

依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.mfbz.cn/a/103882.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI的Prompt是什么

一.AI的Prompt的作用 在人工智能(AI)中,"Prompt"通常指的是向AI系统提供的输入或指令,用于引导AI进行特定的操作或生成特定的输出。例如,在一个对话型AI系统中,用户输入的问题就是一个prompt&…

高校教务系统登录页面JS分析——西安科技大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

《数字图像处理》作业一:题目+学习笔记

Hi,学习进步,共同加油💪 1、选择题 (每小题3分,总计24分) (1)下列哪种图像属于数字图像( ) A、电影胶片;B、普通照片;C、手机拍照;D、眼前看到的景物 数字图像是由离散的像素点组成的图像,可以通过数值表示。根据选项,可以排除A(电影胶片)和B(普通…

Unity中Shader的ShaderLOD

文章目录 前言一、ShaderLOD的使用步骤1、ShaderLOD使用在不同的SubShader中,用于区分SubShader所对应的配置2、在 C# 中使用 Shader.globalMaximumLOD 赋值来选择不同的 SubShader,以达到修改配置对应Shader的效果3、在设置LOD时,是需要和程序讨论统一 …

Git简明教程

1.Git的定位 在我们自己开发项目的过程中,经常会遇到这样的情况,为了防止代码丢失,或者新变更的代码影响到原有的代码功能,为了在失误后能恢复到原来的版本,不得不复制出一个副本,比如:“坦克大战1.0”“坦…

创建 Edge 浏览器扩展教程(下)

创建 Edge 浏览器扩展教程(下) 创建扩展教程,第 2 部分1:更新弹出窗口.html以包含按钮2:更新弹出窗口.html在浏览器选项卡顶部显示图像3:创建弹出式 JavaScript 以发送消息4:从任何浏览器选项卡…

react createElement 和 cloneElement 有什么区别?

前言 什么是react React是一个用于构建用户界面的JavaScript库。它旨在帮助开发人员构建可维护、高性能的应用程序界面。React的核心思想是组件化,它允许开发人员将用户界面划分为小块组件,每个组件负责自己的渲染和行为。这种组件化的方法使得代码更容易…

k8s集群镜像下载加gradana监控加elk日志收集加devops加秒杀项目

展示 1.配套资料2.devops 3.elk日志收集 4.grafana监控 5.dashboard![在这里插入图片描述](https://img-blog.csdnimg.cn/bf294f9fd98e4c038858a6bf5c34dbdc.png 目的 学习k8s来来回回折腾很久了,光搭个环境就能折腾几天。这次工作需要终于静下心来好好学习了一…

经管博士科研基础【26】海塞矩阵

1. 海塞矩阵 海塞矩阵是一个由多变量实值函数的所有二阶偏导数组成的方块矩阵。 一元函数就是二阶导,多元函数就是二阶偏导组成的矩阵。求向量函数最小值时可以使用,矩阵正定是最小值存在的充分条件。经济学中常常遇到求最优的问题,目标函数是多元非线性函数的极值问题,尚…

Warning: ‘Destination Folder‘ contains 1 space.【Anaconda安装】

报错内容如下: 意思就是说你的安装路径下不要有空格哈哈,有空格就不行,比如: "D:\Program Files\Anaconda3"中间就有空格,Program与Files之间。 换个路径,例如: 就可以了。

【技能树笔记】网络篇——练习题解析(九)

目录 前言 一、OSPF双栈 1.1 OSPFv3 LSA 1.2 OSPFv3 二、ISIS双栈 2.1 ISISv6 2.2 ISIS高级特性 三、BGP双栈 四、PIM双栈 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filot…

python—openpyxl操作excel详解

前言 openpyxl属于第三方模块,在python中用来处理excel文件。 可以对excel进行的操作有:读写、修改、调整样式及插入图片等。 但只能用来处理【 .xlsx】 后缀的excel文件。 使用前需要先安装,安装方法: pip install openpyxl…

Hadoop3教程(二十七):(生产调优篇)HDFS读写压测

文章目录 (146)HDFS压测环境准备(147)HDFS读写压测写压测读压测 参考文献 (146)HDFS压测环境准备 对开发人员来讲,压测这个技能很重要。 假设你刚搭建好一个集群,就可以直接投入生…

华为数通方向HCIP-DataCom H12-831题库(多选题:61-80)

第61题 在MPLS VPN中,为了区分使用相同地址空间的IPV4前缀,将IPV4的地址增加了RD值,下列选项描述正确的是: A、在PE设备上,每一个VPN实例都对应一个RD值,同一PE设备上,必须保证RD值唯一 B、RD可用于来控制VPN路由信息的发布 C、RD在传递过程中作为BGP的扩展团体性封装在…

Docker镜像仓库

Docker镜像仓库 一、Docker镜像的创建1.1、基于已有镜像创建1.2、基于本地模板创建1.3、基于Dockerfile创建(使用最广泛)1.3.1、联合文件系统(UnionFS)1.3.2、镜像加载原理1.3.3、Dockerfile1.3.4、Docker 镜像结构的分层 二、如何…

【JavaScript】深入浅出理解事件循环

1. 浏览器的进程模型 1.1 进程 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 1.2 线程 有了进程后,就可以运…

uniapp: 本应用使用HBuilderX x.x.xx 或对应的cli版本编译,而手机端SDK版本是 x.x.xx。不匹配的版本可能造成应用异常。

文章目录 前言一、原因分析二、解决方案2.1、方案一:更新HbuilderX版本2.2、方案二:设置固定的版本2.3、方案三:忽略版本(不推荐) 三、总结四、感谢 前言 项目场景:示例:通过使用HbuilderX打包…

idea 设置serlvet 类模板(快捷生成servlet类)

我的版本是idea2020.3.4,博客中有相应安装教程,其他版本设置类似: 1.选择文件-->设置 2.选择编辑器-->文件和代码模板-->其他 3.选择Web-->Servlet Annotated Class.java-->复制相应模板,下面顺便设置了注释模板 …

成集云 | 成销云-移动订货集成用友NC | 解决方案

方案介绍 成销云移动订货系统支持多终端下单、业务员代下单、分级定价、数据分析、财务结算、对接ERP等功能,帮助客户解决、订货困难、错单漏单、价格体系混乱等问题,为商家提供更精准的营销和库存管理手段。 用友NC是用友NC产品的全新系列&#xff0c…
最新文章