一:keil编译成功时显示的data、xdata、code

程序编译成功时会在信息框内显示data、xdata、code各被占了多少字节,keil工具可以设置变量默认放在哪个存储区,默认是data

data就是片内RAM低128字节的区域,idata就是包括低128字节的总256字节的区域,xdata:如果片内有拓展的xdata就指片内拓展的部分,如现在使用的单片机型号,如果没有拓展,一般是片外RAM,code是ROM程序存储器

写代码时,可以在变量前面加关键字指定存放区域,先默认放data里,不够用了再放idata里,再不够用就放xdata里,即优先级:data > idata > xdata

速度:data > idata > xdata

二:Memory Model。

Small:variables in DATA。Compact:variables in PDATA。Large:variables inXDATA。

RAM是用来在程序运行中存放随机变量的数据空间,51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C52增加到512字节,STC89C54、55、58、516等增加到1280字节,对于编程者来说,一个芯片的RAM越多,写起程序来就越容易得心应手,不会总考虑RAM不够用而担心这担心那,连过多的变量都不敢定义。

  如果定义一个变量后,不对这个变量进行初始化,这个变量默认的初值就是0,其实这个结论是需要一定的条件的,在用KEIL编写程序时,总程序中所有变量占用的字节之和小于128字节,并且存储器模式为small模式的前提下,对定义的变量不进行初始化时,编译器会默认将变量值设定为0。一旦程序中的总变量超过128字节,必须对所有变量进行初始化,否则,没有被初始化的变量默认值将是不确定的。当变量总和超过128字节时,必须还要在编译器中重新设定存储器的存储模式。

存储器模式一共有3种,分别为small、compact和large模式,在KEIL编译器中有选项可进行选择,选项表如下图所示。它决定了没有明确指定存储类型的变量、函数参数等数据的默认存储区域。如果在某些函数中需要使用非默认的存储模式,也可以使用关健字直接说明。

下面对这三种模式分别做介绍。

  1. small模式

  small模式中,所有缺省变量参数均装入单片机内部128字节RAM中,当定义类似如:uchar a; float b;等变量时,这些变量都装入内部128字节RAM中。使用该模式的优点是访问速度快,缺点是空间有限,而且是对堆栈的空间分配比较少,难以把握,碰到需要递归调用的时候需要小心。所以这种模式只适用于小程序。

  2. compact模式

  compact模式中,所有缺省变量均位于单片机内部256字节RAM中,和在small模式中使用关健字pdata来定义变量的效果相同,如:uchar pdata a[100];在该种模式下,程序总变量不得超过256字节,对于只有128字节的单片机,使用此模式定义变量超过128字节时,程序将出错。优点是空间较small模式宽裕,速度较small慢,但较large要快,是一种中间状态。

  3.  large模式

  在large模式中,所有缺省变量可放在多达64KB的RAM区,包括内部RAM和外部RAM,和使用关健字xdata来定义变量的效果相同。这种模式的优点是空间大,可存变量多,缺点是访问速度慢,尤其对于2个以上的多字节变量访问速度来说更是如此。 
方便起见,STC单片机要访问扩展RAM时,可直接用以下方法:首先在编译器中设置存储器模式为large模式,如下图所示:

  其次,为安全起见,当程序中定义多于128字节的其它变量时,最好申明为xdata型,如uchar xdata table[100];意思为定义一个100个字节容量的数组,将其在扩展RAM中分配存储空间。另外一定要注意,在large模式下,编写程序时,定义的变量总数千万不要超过对应单片机的内部最大RAM字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。

三:ROM(EEPROM,按字节存储)、RAM、DRAM(内存条)、SRAM(CPU缓存)(stc15w204s使用,256ByteSRAM。stm32使用 10K Byte)、FLASH(ROM一种,按扇区存储)。

RAM价格相比ROM和FLASH要高。

RAM分为两大类:SRAM和DRAM
SRAM为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲

DRAM为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的

RAM的容量是最小比ROM和FLASH容量相对较小,RAM的特点是可读可写,给存储器断电后,里面存储的数据会丢失。我们经常说的内存,比如计算机的内存,手机的内存,包括CPU里用的高速缓存,都属于RAM这类存储器。

ROM和FLASH容量比RAM的容量相对较大。一般定制一个ROM修改系统版本信息都在这里面。(system)为系统所在目录,相当于PC系统的Windows文件夹,(boot.img)是一个镜像文件,就是所谓的内核核心,一般移植ROM的时候会用到。

ROM和FLASH掉电不会丢失数据。
但相对于ROM和FLASH的掉电不丢失数据相比,RAM掉电会造成数据丢失。

四:flash和rom。

1)、ROM 程序存储器

ROM全称位Read Only Memory,译为只读存储器。顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器。ROM中所存数据稳定,一旦存储数据就再也无法将之改变或者删除,断电后所存数据也不会消失。其结构简单,因而常用于存储各种固化程序和数据。
在单片机用来存储程序数据、变量和常量。
为了便于使用和大批量生产,进一步发展出了可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)。EPROM需要用紫外线长时间照射才能擦除,使用很不方便。1980s又出现了电可擦除可编程只读存储器(EEPROM),它克服了EPROM的不足,但是集成度不高、价格较贵。于是又发展出了一种新型的存储单元结构同EPROM类似的快闪存储器(FLASH MEMORY)。FLASH集成度高、功耗低、体积小,又能在线快速擦除,因而获得了快速发展。

2)、Falsh存储器

Flash 存储器(Flash EEPROM)又称闪存,快闪。它是EEPROM的一种。它结合了ROM和RAM的长处。不仅具备电子可擦除可编辑(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据。它于EEPROM的最大区别是,FLASH按扇区(block)操作,而EEPROM按照字节操作。FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因此适合用于做程序存储器。

3)、EMMC Flash(Orange Pi 3LTS),NAND Flash(全志F1C200S板):

通俗来说:eMMC=NAND闪存+闪存控制芯片+标准接口封装。

正点原子I.MX6ULL和STM32MP157都买了EMMC Flash版本。

五、常用的存储器简单分类

1、数据易失性存储器,如DRAM(Dynamic RAM,动态RAM)、SRAM(Static RAM,静态RAM)。这类存储器读写速度较快,但是掉电后数据会丢失。在SoC设计中通常被用作数据缓存、程序缓存;

2、数据非易失性存储器,如NAND/NOR flash。这类存储器读写速度比较慢,但是在掉电后数据不会丢失。因此,在SoC设计中可用作大数据的存储或者程序的存储;

3、NVRAM( Non-Volatile Random Access Memory) 是非易失性随机访问存储器,指断电后仍能保持数据的一种RAM。NVRAM可以随机访问。因此有些解释中,说Flash是属于NVRAM,是不准确的。因为从严格意义上来说,Flash分有两种:nand flash和nor flash。其中的nor属于是可以随机访问的,而nand flash不是真正的随机访问,属于顺序访问(serial access)。

3、新出现的存储器PSRAM(pseudo SRAM)(ESP32使用),称之为伪静态随机存取器。它具有SRAM的接口协议:给出地址、读写指令,就可以实现数据的存取;相比DRAM的实现,它不需要复杂的memory controller来控制内存单元去定期刷新数据,但是它的内核架构却是DRAM架构;传统的SRAM是由6个晶体管构成一个存储cell,而psram则是由1个晶体管+一个电容构成一个存储cell,因此psram可以实现较大的存储容量;

基于上述分析,新出现的存储器psram相比传统存储器具有如下优点:

更大的带宽:串行psram通过八路串行接口对外互联,最高在200MHz Double-Data-Rate速率下,可实现超3Gbps的带宽传输;
更高的容量:目前可实现存储容量有:32M、64M、256M,这比市面上其他串行接口随机存储器的容量要大很多;
更低的成本:串行psram采用DRAM架构,可以有效压缩芯片体积,故串行psram生产成本接近DRAM成本;
更小的尺寸:串行psram的低引脚数封装与传统的RAM存储相比,具有尺寸更小、成本更低等优势;
更广的应用:psram采用的是自行刷新(Self-Refresh),不需要刷新电路即能保存它内部存储的数据;而DRAM每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此psram相比传统RAM会有更广的应用;
PSRAM作为常用的一种外设存储设备,所具有的优点使其广泛被应用。

参考文档:

1:RAM、ROM、emmc、iNand、SD卡、mmc 与 Nandflash 的区别_想文艺一点的程序员的博客-CSDN博客_emmc和flash的区别

RAM,ROM,FLASH相关推荐

  1. RAM ROM FLASH的区别

    文章目录 一.ROM 程序存储器 二.Falsh存储器 三.RAM随机访问存储器 四.三者之间的区别 作为一个初学单片机的初学者,常常把ROM RAM FLASH这几个都单词搞得晕头转向的.由此记下此 ...

  2. 单片机中的ROM,RAM和FLASH的作用

    本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...

  3. 对RAM,ROM,NOR/NAND FLASH等常见内存设备类型的理解

    对RAM,ROM,NOR/NAND FLASH等常见内存设备类型的理解 RAM DRAM SDRAM DDR SDRAM SRAM ROM EEPROM FLASH NOR FLASH NAND FL ...

  4. ROM、RAM和FLASH的区别是什么?SRAM、DRAM、PROM、EPROM、EEPROM

    ROM.RAM和FLASH的区别是什么? SRAM.DRAM.PROM.EPROM.EEPROM 一.性能对比 1.ROM和RAM指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而R ...

  5. RAM,ROM,EPROM,EEPROM,FLASH ROM的区别

    RAM,ROM,EPROM,EEPROM,FLASH ROM的区别 1.RAM指的是"随机存取存储器",即Random Access Memory.它可以随时读写,而且速度很快,缺 ...

  6. ROM, FLASH和RAM的区别

    ROM (Read Only Memory)程序存储器 ROM全称Read Only Memory,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器.ROM中所存数据稳定,一旦存储数据就再也 ...

  7. 有关计算机存储器的几个名词的概念和辨析(内存,外存,RAM,ROM,磁盘等)

    自己总结: 1.内存不一定都是RAM,ROM也可以是内存的一部分. (ROM是只读存储器(Read-Only Memory),也是计算机内部存储器中的一种,而硬盘是外部存储器) 内部存储器 内部存储器 ...

  8. 计算机术语列是,计算机术语-RAM ROM

    计算机术语 abp: address bit permuting,地址位序列改变 atc(access time from clock,时钟存取时间) bsram(burst pipelined sy ...

  9. 程序如何在RAM ROM运行,内存分配与分区

    关于RAM ROM RAM与ROM就是具体的存储空间,统称为存储器 RAM(random access memory):运行内存,CPU可以直接访问,读写速度非常快,但是不能掉电存储.它又分为: 动态 ...

最新文章

  1. 使用 CAS 在 Tomcat 中实现单点登录
  2. Spring boot(五)模板引擎 Thymeleaf
  3. mfc笔记--摘录关于裁剪窗口区域的设置,WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
  4. ajax-loader.gif不存在怎么解决_女生恋爱技巧:恋人吵架怎么办?
  5. 统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现
  6. 干翻Java_Java第三次作业第一题
  7. linux 磁盘uuid获取
  8. 技术选型和知识点介绍(上)
  9. 写一个自己的javascript库
  10. Windows XP无线零配置服务
  11. Cosine Similarity(余弦相似度)
  12. 八层高速PCB板叠层设计
  13. Kafka系列 —— 生产实践分享
  14. Matplotlib设置坐标轴日期格式
  15. 进程间通讯(IPC)(有信号捕捉函数)
  16. 微信小程序获取右上角胶囊距顶部的距离和胶囊的尺寸
  17. JavaScript实现模板生成大量数据的方法(附代码)
  18. Deep Learning on Graphs: A Survey论文笔记
  19. 定积分的应用之 柱壳法求旋转体体积
  20. 华为p10 android几,华为p10国行版和海外版有什么区别 配置参数对比评测

热门文章

  1. C语言中比较两数的大小——三种方法
  2. SMBIOS信息概述 -- DMI
  3. 信贷反欺诈风险管理体系|附欺诈策略细则
  4. 一个让人看了心酸、落泪的故事
  5. [生存志] 第62节 圣人教子之术
  6. 在火星上,我们能种哪些菜?
  7. 中科院回应“木兰”套壳争议:当事人5年不得晋升,取消3年科研项目申请资格
  8. Discuz如何开发关注功能
  9. 评高级审计师需要什么计算机运用能力,告诉你怎么成为高级审计师
  10. 浅析云计算的六种架构