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 的数据安全性进行管理而设计的,它对应用层并不可见。