Autosar存储入门系列01_NVM基础

news2024/12/23 16:21:01

本文框架

  • 0.前言
  • 1. NVM基本概念
    • 1.1 基本概念及架构
    • 1.2 内置模拟EEPROM介绍
    • 1.3 外挂EPROM介绍
  • 2.Sector/Page/Block相关概念
    • 2.1 Sector概念
    • 2.2 Page概念
    • 2.3 Block概念
  • 总结

0.前言

最近工作比较忙,下班到家都快十点了,实在是没有多余的精力输出,但整理写作的过程我一直觉得就是与自己对话的过程,一场一个人的修行,通过这个过程让自己对知识点的理解更加清晰、成体系,所以我一直在坚持,成人达己,也希望能对阅读的伙伴带来收获。

本篇是整理的Autosar存储入门系列第一篇文章,算是开个头,后面会结合学习经验与总结不断更新,需要说明的一点是我对存储这块也是一直有了解但可能还不太深刻,希望能从学习者的角度把存储相关的知识点梳理一遍,这个过程中如果大家觉得有讲得不对或者不够清晰的地方,还请一定指出来,一起探讨,加深学习。

另外根据本人多年的开发经验,做了一些AutosarMCAL配置,通信,诊断,模式管理等实战总结,如果您有需求可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

本篇介绍一些NVM的基础知识,基本框架如下:
在这里插入图片描述

1. NVM基本概念

1.1 基本概念及架构

缩写含义
NVMNon-volatile memory,非易失存储,NVM层只负责对Block进行操作,不区分内外置EEP
MemIfMemory Abstraction Interface ,Autosar架构中的memory抽象层接口,由MemIf层对内外置EEP进行区分
FEEFlash EEPROM Emulation,即Flash模拟EEP的抽象层
EAEEPROMAbstraction,属于BSW,向NVM提供进行外置EEP操作(读/写/擦)的接口函数
FLSFlash,分PFlsh及DFlash,一般会使用DFlash作为内置模拟EEP
EEPROM(Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器

在项目NVM部分的开发中,我们会有两种存储路径即:内置模拟EEPROM及外置EEPROM,对应在Autosar中的存储架构如下:
在这里插入图片描述

1.2 内置模拟EEPROM介绍

一般提到的内置模拟EEPROM指MCU内部的DFlash模拟的EEPROM,例如在英飞凌TC39x的芯片手册中就写明,该芯片有高达1MByte的DFlash可用于模拟EEPROM
在这里插入图片描述
除1Mbyte的DF0外,在英飞凌TC39x其DFlash可以再划分为如下几个部分:
– Data Flash Memory for CPU EEPROM (DF0)
– User Configuration Blocks (DF0)
– Configuration Sector (DF0)
– Data Flash Memory for HSM EEPROM (DF1)
对应的内存大小及地址如下表:
在这里插入图片描述
在这里插入图片描述

1.3 外挂EPROM介绍

外挂EPROM是指在MCU之外增加一个芯片用于NVM存储,例如ST的M95640芯片,其大小为8KByte,通过SPI与MCU进行数据交换。
在这里插入图片描述
其擦写寿命在-45℃~20℃可达到4 million次,在+85℃可达到1.2 million次,并且其数据保存寿命可超过200年,相对于Flash的擦写次数及保存时间均有明显优势。

综上可以看出内置模拟与外挂的EEPROM区别如下:

  1. DFLASH在MCU内部读/写速度快,EEPROM通过SPI通信,其读/写速度更慢;

  2. 内置FLASH存储擦写次数低,外挂EEPROM,擦/写寿命长,可达到百万次级别;

  3. 内置FLASH数据存储时间短,一般≥20年,而EEPROM数据存储时间一般≥100年,像ST的M95640芯片可达到200年;

  4. DFLASH价格低,容量大,而EEPROM价格高,容量小;这个也是从项目成本及实际需求考虑决定是否使用需要考虑的一件事。

一般如果内部从项目成本考虑,内部DFLASH能满足需求可能就不会再外挂一个芯片了。

2.Sector/Page/Block相关概念

2.1 Sector概念

Sector即扇区,可分为 physical sector(物理扇区)及 logical sector(逻辑扇区)。
逻辑扇区是单次擦写的最小单位为,在英飞凌TC3xx芯片手册中有如下定义:
在这里插入图片描述
如下图在英飞凌TC3xx中,可以将3Mbyte的PFlash分成3个物理扇区,每个物理扇区可继续分为64个逻辑扇区,每个逻辑扇区的大小为16Byte:
在这里插入图片描述
在DFlash中物理扇区与逻辑扇区的对应关系如下:
1M的物理扇区划分为256个逻辑扇区,每个逻辑扇区的大小为4Byte。
在这里插入图片描述

2.2 Page概念

Page为可编程的最小单元,在英飞凌TC3xx中PFlash一个page大小为32Byte,DFlash一个page为8Byte。

逻辑扇区是一次擦除的最小数量的闪存,扇区大小取决于硬件,例如在英飞凌TC3xx中DFlash一个逻辑扇区大小为4Byte。

此外,在英飞凌TC3xx使用DFlash做模拟EEPROM时,会将其分为几个Page,例如划分为Page0及Page1两个页,开始时会现在Page0上存储,当Page0存储满后会切页到Page2,并将Page0上的有效信息复制到Page1,这个后续可以再详细聊聊。

2.3 Block概念

Block是需要存NVM的模块可以调用的最小的可擦写单元,即使需要写入的数据只是Block的一小部分,仍然需要对整个Block进行擦写,其由一个或多个虚拟Page组成,虚拟Page是上述的可编程的最小单元,例如在英飞凌TC3xx中使用DFlash做模拟EEPROM时一个Block的大小最小为8Byte。

在项目开发中会根据存储数据写入时机、写入频率,数据大小等进行Block划分。

总结

本文先介绍了NVM中的一些基本概念,例如内置模拟EEEPROM,外挂EEPROM,两者区别及联系,对存储中的Sector,Page,Block也进行了简单介绍,让大家先有一个初步的印象,后面会逐步带入TC3xx芯片的翻页写机制,Autosar架构下的Nvm存储逻辑,工程中的实际应用及注意事项等,相信一路走下去我们都会有收获。

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

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

相关文章

esp32c3 micropython oled实时天气信息

目录 简介 效果展示 代码 main.py ssd1306.py font.py 实现思路 简介 合宙esp32c3 micropython框架,只支持128*64 I2C oled ssd1306驱动我优化过的,与其他的不一样,为避免出错,使用我的驱动 把下面两个py文件放入单片机内…

什么是单例模式

什么是单例模式 文章目录 什么是单例模式1. 单例(单个的实例)2. 单例模式应用实例3. 饿汉式 VS 懒汉式 1. 单例(单个的实例) 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一…

STM32 定时器复习

12MHz晶振的机器周期是1us,因为单片机的一个机器周期由6个状态周期组成,1个机器周期6个状态周期12个时钟周期,因此机器周期为1us。 51单片机常用 for(){__nop(); //执行一个机器周期,若想循环n us,则循环n次。 }软件…

WebGL和OpenGL之间的差异

推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 WebGL和OpenGL是与图形处理有关的技术标准,它们在计算机图形中扮演着重要的角色。本文将介绍WebGL和OpenGL的区别,并重点介绍"WebGL"和"OpenGL"的特点。 一…

系统报错mfc100u.dll丢失的解决方法(完美解决dll问题)

系统文件mfc100u.dll丢失和出错,极有可能是盗号木马、流氓软件等恶意程序所导致,其感染相关文件并加载起来,一旦杀毒软件删除被感染的文件,就会导致相关组件缺失,游戏等常用软件运行不起来,且提示“无法启动…

Log4net在.Net Winform项目中的使用

引言: Log4net是一个流行的日志记录工具,可以帮助开发人员在应用程序中实现高效的日志记录。本文将提供一个详细的分步骤示例,来帮助您在.Net Winform项目中使用Log4net。 目录 一、安装Log4net二、配置Log4net三、在项目中使用Log4net四、初…

外包干了2个月测试,技术退步明显...

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

9. 实现业务功能--用户登录

目录 1. 顺序图 2. 参数要求 3. 创建 Service 接口 4. 实现 Service 接口 5. 单体测试 6. 实现 Controller 7. 实现前端 在用户登录部分特别注意的是需要进行密码校验: 1. MD5(MD5(用户提交的原密码)数据库查出来的用户的盐) 密码的…

【python办公自动化】PysimpleGUI中更新Listbox组件选定元素的格式

pysimplegui中更新Listbox组件选定元素的格式 背景问题解决创建窗口布局创建窗口背景 在进行打分时候,由于打分的指标较多,因此为了辨别已经打完分数的指标,可以考虑对打过分的指标进行标记,故可以采用格式修改的方法调整,比如添加一些特殊标记 问题解决 import PySim…

K8S应用笔记 —— 部署Dolphinscheduler及简单应用(一)

一、Dolphinscheduler简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系…

SpringBoot 基础篇

SpringBooot基本配置 Web容器基本配置 学习了SpringBoot框架之后,我们了解到SpringBoot内嵌了 Tomcat、Jetty、Undertow 三种容器,其默认嵌入的容器是 Tomcat,这个在我们启动 Spring Boot 项目的时候,在控制台上就能看到&#x…

使用 EasyExcel 实现 百万级数据导入导出

前言 在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次解决了,总…

调整数组使奇数全部都位于偶数前面

题目内容: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 题目思路: 将奇数部分放在前半部分,偶数部分放在后半部分&am…

PySpark-核心编程

2. PySpark——RDD编程入门 文章目录 2. PySpark——RDD编程入门2.1 程序执行入口SparkContext对象2.2 RDD的创建2.2.1 并行化创建2.2.2 获取RDD分区数2.2.3 读取文件创建 2.3 RDD算子2.4 常用Transformation算子2.4.1 map算子2.4.2 flatMap算子2.4.3 reduceByKey算子2.4.4 Wor…

手把手教你制作印刷包装小程序商城

印刷包装行业越来越受到人们的重视,为了更好地满足消费者的需求,搭建一个专属的小程序商城是一种不错的选择。那么,接下来就让我们一起来学习如何搭建印刷包装小程序商城吧! 第一步:登录【乔拓云】网后台,进…

学习笔记230818---对于promise失败状态处理的重要性

问题描述: 在项目中经常会出现如上的问题,这是因为,用promise封装的接口或第三方组件方法,如果只对成功的状态做处理,就会造成页面出错,报error。 解决方法 then()的末尾加上.catch(()>{})对失败的状态…

3.小程序的通信模型

通信主体 小程序中通信的主体是渲染层和逻辑层,其中: xxx.scss和xxx.wxml是渲染层 xxx.ts是逻辑层 通信模型 小程序的通信模型发为两部分: 渲染层和逻辑层之间的通信由微信客户端进行转发 逻辑层和第三方服务器之前的通信由微信客户端进行…

Maven介绍_下载_安装_使用_原理

文章目录 1 Maven介绍1.1 Maven是介绍1.2 Maven的作用 2 Maven下载与安装2.1 官网下载2.2 文件目录2.3 环境配置 3 Maven基础概念3.1 仓库分类3.2 依赖坐标3.3 坐标组成 4 Maven配置4.1 本地仓库配置4.2 远程仓库的设置4.3 镜像仓库配置4.4 IDEA配置Maven 5 Maven项目创建5.1 M…

robotframework如何做接口测试?

robotframework(后续简称为robot)是一款自动化测试框架,可能做各种类型的自动化测试。 本文介绍通过robotframework来做接口测试。 在robot当中,python语言的接口测试库名称为RequestsLibrary 安装语法如下: pip install -U requests pip …

AP5414 DC-DC升压恒流 升降压电源驱动IC

产品简介 AP5414 是一种输入电压范围宽(0.8~5.5V),可调恒定电流和限定电流两种模式来 驱动白光 LED 而设计的升压型 DC/DC 变换器。该器件能利用单节或双节干电池驱动单 颗大功率白光 LED,同样可以利用一节锂电池驱动两颗、三颗…