1、存储器的组成

存储器大体上由“存储颗粒 + 控制电路”组成,存储颗粒负责存储数据,控制电路负责管理存储颗粒和对外交换数据。如果从存储颗粒上进行分类,就是以是否掉电丢失、是否随机寻址、是可读还是可写、是否需要初始化等标准进行分类;如果从控制电路进行分类,就是用不同的协议来区分存储器,比如:eMMC、SD卡、iNand等在存储颗粒上都是NandFlash,但是接口电路不同,通信的协议就不同。按存储颗粒可以分为两大类:RAM和ROM。 RAM指的是只读存储器,主要特征是掉电丢失数据,可随机寻址,能通过地址线直接与CPU相连进行数据交互。ROM指的是只读存储器,主要特征是掉电不丢失数据。通常来说,保存程序的是ROM,运行程序的是RAM,除了特殊的NorFlash,NorFlash需要ROM但是可以运行程序。

2、RAM分类

2.1.1、SRAM介绍

SRAM(Static Random Access Memory)就是静态随机存储器,由触发器构成,静态是相对于DRAM而言的,不用刷新。SRAM的单位存储容量价格高,读取速度快,可以直接与CPU相连并且不用初始化就可以使用。

2.1.2、使用SRAM的地方

一般来说SRAM的容量都不会很大,用在某些需要高速性能的地方,比如Cache等;或者用在启动阶段,因为SRAM不需要初始化就可以使用,某些Soc在芯片内部就自带了一块iRAM(也就是SRAM),用来运行最初的启动代码。

2.2.1、DRAM介绍

DRAM(Dynamic Random Access Memory )是动态随机存储器,动态的意思就是需要去不停的刷新,因为DRAM是电容原理做的,电容会不停的流失电荷,所以DRAM在刷新时间之内必须去重新刷新一遍。DRAM相对于SRAM而言,DRAM需要先初始化才能使用,读取的速度没有SRAM快,但是单位存储容量的价格更低。

2.2.2、DRAM的分类

(1)SDRAM(synchronous dynamic random-access memory)同步动态随机存储器,相比于DRAM是异步的,SDRAM和系统总线保持同步,通信速率更快;
(2)DDR(Double Data Rate SDRAM )双倍速率同步动态随机存储器,相对于SDRAM而言,DDR在上升沿和下降沿都可以传输数据,所以传输速率是SDRAM的双倍。
(3)DDR2、DDR3、DDR4就是DDR的升级版,具体差异我也不是很清楚,对嵌入式开发工程师来说,最大的差异就是最高能达到的速率不同,越往后速率越高。
(4)在各版本的DDR中,会看到有的名字加上前缀LP,比如LPDDR4,就是低功耗的DDR4。低功耗的DDR主要是用在嵌入式设备里。

2.2.3、 总结

(1)需要初始化才能使用,需要刷新,容量比较大的一般都是DRAM;
(2)上电可以直接使用,不需要刷新,容量小,一般都是SRAM;

3、ROM分类

3.1、ROM介绍

ROM(Read Only Memory)最主要的特点就是掉电不丢失数据,一般都是用于保存数据的。常见的有磁盘(HDD),用磁原理进行存储;硬盘(SSD)用电原理进行存储;光盘(DVD),按光原理进行存储;这里主要介绍电原理进行存储的Flash,因为现在嵌入式设备的外存基本都是Flash;其中flash分为NorFlash和NandFlash。

3.2.1、NorFlash介绍

NorFlash具有不需要初始化,掉电不丢失数据,具有片内执行能力(XIP, eXecute In Place),可以用地址直接访问,单位容量价格高等特点。一般来说NorFlash的容量不会太大,都是用来存一些特殊的代码,比如启动代码。

3.2.2、使用NorFlash的地方

(1)单片中,单片机本身需要的存储空间就不大,并且NorFlash具有片内执行能力,还省去一颗内存;
(2)用作Soc中的iROM,用来保存启动代码,因为NorFlash不需要初始化就可以使用,所以当芯片上电后就可以直接去读取NorFlash里的代码,进行启动。
(3)一般spi flash都是NorFlash,spi是接口类型;

3.3.1、NandFlash介绍

NandFlash具有单位容量价格低,存在坏块,不能片内执行,需要初始化,掉电不丢失数据等特点。NandFlash分为SLC和MLC:SLC更稳定,但是容量小价格高;MLC容易出错,但是容量大价格低。现在最新的还有TLC和QLC,这个不太清除,用到的时候再查吧。一般大容量的flash都是MLC的,胜在便宜,只是要加上坏块管理机制。

3.3.2、使用NandFlash的地方

基本上以G和T为单位的flash,都是NandFlash中的MLC,常见的MMC、SSD、eMMC、iNand等,在本质上都是NandFlash,只是在控制电路上不同,表现出来就是接口协议,还有封装工艺不同,各有各的用处。

4、补充

(1)现在的ROM已经不是严格意义上的ROM了,ROM最初指的是只读存储器,但是现在我们用的磁盘和flash都是可读可写的,只是写的速度比读要慢。
(2)现在已经很少用单纯的存储颗粒,都是加了控制电路的,对于工程师来说就是用什么接口的存储器。同样在soc上也有相对的存储器控制接口,因为接口的同一,我们更换同接口的存储器是不需要更改什么东西的。至于存储器复杂的通信时序,都是由接口电路负责,使用时去操作寄存器即可。

嵌入式开发——常见的存储器分类和特性介绍相关推荐

  1. 嵌入式中常见的存储器总结(一)存储器分类

    存储器分类 内存(RAM) SRAM DRAM 外存(ROM) PROM EPROM EEPROM FLASH SPI flash Nor.Nand eMMC SD.TF HDD SSD 存储器有两种 ...

  2. 嵌入式开发常见英文单词及缩写

    [前言] 做嵌入式开发,避免不了要看芯片手册(包括参考手册.用户手册等),通常在开头的章节会有"Documentation conventions",意思就是编写文档时的一些约定规 ...

  3. 嵌入式开发常见宏定义

    目录 一.编译器预定义的宏 二.c语言内置宏 三.实用宏定义 一.编译器预定义的宏 在stm32系列单片机里的core_cmx.h(x:0/3/4/7)头文件里有如下一段宏定义: /* define ...

  4. 嵌入式中常见的存储器总结(二)SRAM VS DRAM

    DRAM和SRAM存储器特性表1 DRAM和SRAM存储器特性表2 参考文献 [1] Randal E.Bryant,David R.O'Hallaron:龚奕利,雷迎春译.深入理解计算机系统[M]. ...

  5. 嵌入式开发常见通信协议

    随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题.通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联网的发展.而在通信中,通信协议尤其 ...

  6. 从单片机到嵌入式开发——(9) 从8051到ARM——STM32介绍和基本使用

    在之前的文章中,我们介绍了51单片机的IO口.编写语言.三种中断方式(外部.定时器.串口)和常见外设的应用(LED灯.数码管.按键.显示屏.AD.基于I2C协议通信的EEPROM),同时简要介绍了μC ...

  7. 【嵌入式 C】嵌入式开发神器—SourceInsight的使用教程

    很多入门嵌入式的初学者所用的代码编写软件都是 IAR.Keil 等 IDE(集成开发环境),这类软件的优点就是既可以编写代码,也可以编译.调试.下载程序,是我们初学者嵌入式开发的利器. 今天给大家介绍 ...

  8. [工具]嵌入式开发工作流常用工具箱

    工欲善其事,必先利其器. 毕业三年,作为嵌入式开发工程师工作时的主要工具箱介绍 一.搭建硬件开发环境 硬件环境一般就是电路板.debug工具.串口或者USB线.电源 对应的PC环境就是串口调试工具,常 ...

  9. 嵌入式开发神器—SourceInsight 4的使用教程(附安装包)

    很多入门嵌入式的初学者所用的代码编写软件都是 IAR.Keil 等 IDE(集成开发环境),这类软件的优点就是既可以编写代码,也可以编译.调试.下载程序,是我们初学者嵌入式开发的利器. 今天给大家介绍 ...

  10. 关于常见的嵌入式开发IDE的选择

    简单配置就可以使用的嵌入式开发IDE如下: (想具体了解就按照下面的名字搜一下即可) keil(MDK) 老牌了,ST收购了叫做mdk,仅支持stm32项目,界面比较传统,功能一般吧,好像ST逐渐放弃 ...

最新文章

  1. 协同工作流引擎,开启流程优化新纪元
  2. Touchpad Synaptics 触摸板(中文) [zt]
  3. Exception in thread main java.lang.Error: Unresolved compilation problems 解决方案
  4. 计算机一级上机考试试题题库,2016年计算机一级上机考试题库
  5. AE快速景深模糊插件:Rowbyte Fast Bokeh for Mac
  6. node-webkit学习(1)hello world
  7. 化身阿凡达,国外小哥开源 AI 实时变脸工具 Avatarify
  8. HDOJ--1262--寻找素数对
  9. 分享一次学习中遇到的问题
  10. C++11 chrono库
  11. 传智java答案_传智播客_Java基础入门习题答案
  12. ZZULIOJ/python1006: 求等差数列的和
  13. 24种不同的ITF条形码字体Interleaved 2 of 5 Barcode Font Advantage Package
  14. labelme 语义分割数据集_【综述系列】语义分割研究要用到的数据集介绍(一)...
  15. KU FPGA DDR4 SDRAM仿真/板卡测试
  16. 淘宝直通车新功能智能推广 智能推广计划设置 智能推广优化 智能推广优化原则
  17. GeeM2引擎弹出装备显示框的设置方法
  18. 防水测试设备的应用领域
  19. JSON字符串的使用
  20. 区块链公链开发 区块链一条公链开发费用

热门文章

  1. Java基础面试题(2022年)
  2. 新H5手机微商城运营源码 简约轻量版
  3. AppUI自动化中的图像识别的使用
  4. 《C程序设计语言》笔记 目录
  5. elasticsearch修改配置文件后启动报错:Caused by: expected 'document start‘', but found BlockMappingStart
  6. Python 最频繁使用的4个函数:lambda、 map、filter 和 reduce
  7. Maven系列(一) — Nexus 下载及配置
  8. Xamarin开发教程如何使用Xamarin开发Android应用
  9. 如何采集企业信息公示系统
  10. WS2 安装ubuntu +迁移+vscode