KF32 存储(FLASH,EEPROM)

一、RAM

RAM随机存取存储器 :类似手机中一般把其叫做(运行)内存。与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。

RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

二、ROM

ROM只读存储器:类似手机的内部存储空间。

ROM又可以分为EEPROM,Flash:

1.EEPROM

可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1,掉电后数据不丢失,可以保存100年,可以擦写100w次,擦除时以字节为单位,可靠性高,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。

2.Flash

擦除时以块为单位,电路相对简单,能存储的数据更多,成本低,单位为M的rom一般都是flash。

flash又可以分为nor flash和nand flash;

a. nor flash:数据线和地址线分开,可以实现ram一样的随机寻址功能,

读取:按字节;

擦除:按块擦除。

b. nand flash:数据线与地址线复用,不能利用地址线随机寻址。读取速度慢,擦除与写入的速度快,内部电路简单,存储的数据更多,体积小,容量大,可以标记坏块,从而使软件跳过坏块。

读取:按页;

擦除:按块擦除。

总结:嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。

参考EEPROM和flash的区别_yuanlulu的博客-CSDN博客

三、Autosar NVM

Autosar NVM位于基础软件的服务层,为所有NV data的(初始化、读、写、控制)维护以及管理作提供了各种同步/异步服务。EEPROM和Flash,都在这层被抽象为同一类型,直到MemIf层才会做出区分。

Autosar 中对nv数据的存储主要包括片内存储和外部存储两种方式,片内存储是用芯片内部的DFLASH进行数据存储,外部存储是通过外部EEPROM进行存储,一般通过IIC,SPI,等通讯方式外挂EEPROM。

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

NV Block

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

RAM Block

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

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

ROM block

用于存储默认值,以便当NV block数据出现损坏时予以替换。

Administrative block

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