首页 > 其他分享 >ROM,FLASH和RAM的区别?

ROM,FLASH和RAM的区别?

时间:2023-10-15 11:45:21浏览次数:35  
标签:存储 RAM FLASH ROM 存储器 数据

 

转载自:

ROM, FLASH和RAM的区别 - Choris的文章 - 知乎 https://zhuanlan.zhihu.com/p/38339306

存储器的种类:ROM、RAM、FLASH - NewLook的文章 - 知乎 https://zhuanlan.zhihu.com/p/640008073

 

本文非博主所写,博主结合自己的理解对原文做了删改

已标明转载作者及出处,仅供学习,侵删

 

ROM (Read Only Memory)程序存储器

ROM全称Read Only Memory,只能读出事先所存的数据的固态半导体存储器。

ROM中所存数据稳定,一旦存储数据就再也无法将之改变或者删除,非易失性(断电后所存数据也不会消失)。其结构简单,因而常用于存储各种固化程序和数据。

在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、‘const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

为了便于使用和大批量生产,进一步发展出了可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)。EPROM需要用紫外线长时间照射才能擦除,使用很不方便。1980s又出现了电可擦除可编程只读存储器(EEPROM),它克服了EPROM的不足,但是集成度不高、价格较贵。于是又发展出了一种新型的存储单元结构同EPROM类似的快闪存储器(FLASH MEMORY)。FLASH集成度高、功耗低、体积小,又能在线快速擦除,因而获得了快速发展。

 

FLASH 存储器

 

Flash 存储器(FLASH EEPROM)又称闪存,是EEPROM的一种。它结合了ROM和RAM的长处。具有非易失读写速度快、抗震、低功耗、体积小等特性,目前己广泛应用于嵌入式系统、航空航天、消费电子等领域。

它于EEPROM的最大区别是,FLASH按扇区(block)操作,而EEPROM按照字节操作。FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因此适合用于做程序存储器。

 

 

RAM (Random Access Memory)随机访问存储器

RAM又称随机存取存储器,存储单元的内容可按照需要随机取出或存入,且存取的速度与存储单元的位置无关,易失性(断电后数据消失)。可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。是与CPU直接交换数据的内部存储器,也叫主存(内存)。

它主要用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量(包括全局变量、局部变量、堆栈段等),都存储在RAM中。

 

ROM, FLASH和RAM的区别

对于RAM, ROM以及FLASH的区别,简单地说,在计算机中,RAM 、ROM都是数据存储器。RAM 是随机存取存储器,它的特点是易挥发性,即掉电失忆。ROM 通常指固化存储器(一次写入,反复读取),它的特点与RAM 相反。ROM又分一次性固化、光擦除和电擦除重写两种类型。

在应用中,常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流是一个实时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。

仅供学习,非商业用途

标签:存储,RAM,FLASH,ROM,存储器,数据
From: https://www.cnblogs.com/xuan4ever/p/17765428.html

相关文章

  • grpc服务报错: http2 frame too large
    报错如下:14xxBadRequesterrorreadingserverpreface:http2:frametoolarge其中4xx为客户端报错中的一个具体数字。比如:404/415,仅以报错举例,且出现报错码不固定。但是errormsg的核心内容不变:frametoolarge...这个是因为客户端在没有TLS加密的情况下发送HTT......
  • Transpose a data frame in R语言 转置
     #firstrememberthenamesn<-df.aree$name#transposeallbutthefirstcolumn(name)df.aree<-as.data.frame(t(df.aree[,-1]))colnames(df.aree)<-ndf.aree$myfactor<-factor(row.names(df.aree))str(df.aree)#CheckthecolumntypesR......
  • R data.frame 常见操作
    #创建data.framestudent<-data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"),Birthdate=c("1984-12-29","1983-5-6","1986-8-8”)) #修改行名称row......
  • r - How do I order by row.names in dataframe R语言 排序
     new_df<-df[order(row.names(df)),]REF:https://stackoverflow.com/questions/20295787/how-can-i-use-the-row-names-attribute-to-order-the-rows-of-my-dataframe-in-rhttps://stackoverflow.com/questions/25194196/how-do-i-order-by-row-names-in-dataframe......
  • 无涯教程-Matplotlib - 3D线框图(Wireframe)
    线框图采用值的网格并将其投影到指定的三维表面上,并使生成的三维形式非常容易可视化。plot_wireframe()函数用于此目的-frommpl_toolkitsimportmplot3dimportnumpyasnpimportmatplotlib.pyplotaspltdeff(x,y):returnnp.sin(np.sqrt(x**2+y**2)) x=......
  • 关于Cortex-M3报错解决方法总结:Flash Download failed错误
    事情原因:在一次使用ST-LINKv2下载程序时,突然出现Error:FlashDownloadFailed-"Cortex-M3”这个错误,显示没有错误,没有警告。芯片型号接线都没有问题。当时就很摸不着头脑,然后上网查看了一下。原来是因为STM32F103C8T6有64kFlash和20kRAM,tm他们不属于高容量的Flash。所以我改了......
  • 2022 China Collegiate Programming Contest (CCPC) Guilin Site(持续更新)
    Preface由于还有两周就要滚去打区域赛了,这周开始周末每天都训一场吧这场总体来说打的还可以,虽然E题这个Easy从卡局卡到3h,但由于其它的题都是一遍过所以罚时还尚可跻进Au区后面一个小时看徐神和祁神苦战K大分类讨论,虽然场下感觉摸了一个B的做法出来,但感觉实现还是太麻烦了就没写......
  • 论文精读:用于少样本图像识别的语义提示(Semantic Prompt for Few-Shot Image Recogniti
    原文连接:SemanticPromptforFew-ShotImageRecognitionAbstract在小样本学习中(Few-shotLearning,FSL)中,有通过利用额外的语义信息,如类名的文本Embedding,通过将语义原型与视觉原型相结合来解决样本稀少的问题。但这种方法可能会遇到稀有样本中学到噪声特征导致收益有限。在这......
  • Flash8.0下载安装教程
    1、下载地址:https://www.jb51.net/softs/555686.html?pc2、在下载好之后然后双击Flash-chs.exe:出现这个弹窗界面:点击下一步;3、选择我接受协议和条款然后点击下一步;4、自定义存储位置,选择是否创建快捷方式然后直接下一步:点击安装:安装完成之后,出现这样一个弹窗界面......
  • Some seqs are too long, please rebuild the program with make parameter MAX_SEQ=n
     001、cd-hit报错如下Someseqsaretoolong,pleaserebuildtheprogramwithmakeparameterMAX_SEQ=new-maximum-length(e.g.makeMAX_SEQ=10000000) 002、解决方法重新编译该软件:(base)[[email protected]]$makeMAX_SEQ=10000000......