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

2023-11-01

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上也有相对的存储器控制接口,因为接口的同一,我们更换同接口的存储器是不需要更改什么东西的。至于存储器复杂的通信时序,都是由接口电路负责,使用时去操作寄存器即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 华为OD机试真题-统计友好度最大值【2023Q1】

    题目描述 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为方便新员工学习求助 优先安排友好度高的空位 给出工位序列 求所有空位中友好度的最大值
  • UE4文件读写(.txt文本文档)

    UE4文件读写 txt文本文档 一 创建C 类继承BlueprintFunctionLibrary 二 用到的函数 读取文件 bool FFileHelper LoadFileToString FString Result const TC
  • node.js os模块

    获取 系统信息的模块 包括操作系统和硬件信息 但是能力很有限 用法 var os require os node版本 0 8 22 os tmpdir 获取系统的临时目录 os endianness 获取cpu的字节序 返回的值可能是 BE
  • HBase的数据热点和Hbase常见避免热点问题的方法

    只要使用过 听说过HBase的人 我想对HBase的数据热点想必也不会陌生 数据热点是如何出现的 这得从HBase的存储结构说起 对于HBase详细的存储结构可以上网搜一下 这里就不补充了 我们只需要知道 我们的HBase的表会被划分为1个
  • 【模型部署】c++调用tensorRT的模型(engine)

    将分割模型就行腾搜人RT转化后得到engine 该博客主要是针对c 调用tensorRT的模型文件engine 文章目录 1 框架 2 main tensorRT exe 2 1 LoadCathodeHeadEngine 读取模型 2 2
  • odoo报错:AttributeError: ‘_unknown‘ object has no attribute ‘id‘

    在开发中遇到的这个问题 AttributeError unknown object has no attribute id 1 当在一个模块中写了一个many2one字段 例如a fields many2one base repair 基础
  • TTL电平和CMOS电平总结

    转载自 https blog csdn net godloveyuxu article details 72965351 1 TTL电平 输出高电平 gt 2 4V 输出低电平 lt 0 4V 在室温下 一般输出高电平是3 5V 输出低电平
  • R数据科学-第4章使用tibble实现简单数据框

    下面一个部分将介绍数据处理 将数据以合适的形式导入R 从而进行可视化和建模 tibble是一种简单数据框 其更易于在tidyverse中使用 一 使用与创建 1 将数据框转换为tibble gt library tidyverse gt a
  • SpringBoot2.x 集成Activiti6.xs :java.lang.ArrayStoreException: sun.reflect.annotation.***

    今天使用SpringBoot2 x 版本集成Activiti 6 x 启动Application java 程序 提示如下错误信息 org springframework beans factory BeanCreationExceptio
  • css隐藏状态,仅使用CSS淡出后隐藏元素

    CSS page moz animation name fadeIn webkit animation name fadeIn ms animation name fadeIn animation name fadeIn moz anima
  • IDEA-使用插件远程连接Redis(收费与免费插件)

    前言 IDEA连接Redis可视化 可以在IDEA中 删除存储的缓存等操作 使用 1 收费 点击工具栏的File gt Settings gt Plugins 然后进行搜索Redis 我这里下载过了 然后点击Install进行下载 下载好后
  • 《推荐系统实践》第二章 利用用户行为数据

    2 1 用户行为数据简介 在电子商务网站中行为主要包括网页浏览 购买 点击 评分和评论等 用户行为在个性化推荐系统中一般分两种 显性反馈行为 explicit feedback 和隐性反馈行为 implicit feedback 显性反馈行
  • ajax的responseText是什么东西

    你向ajax后台的程序发送xmlhttp请求的时候 后台程序接到请求会进行处理 处理结束后 可以返回一串数据给前台 这个就是responseText 一般在后台程序C 中是Response Write 字符串 php中使用的是echo 就是
  • JVM系列之类加载

    前言 虚拟机把描述类的数据从Class文件加载到内存 并对数据进行校验 转换解析和初始化 最终形成可以被虚拟机直接使用的Java类型 这个过程就称为JVM的类加载机制 今天我们主要从下面两个方面说下类加载 类加载时机和类加载过程 类加载时机
  • 单元测试打桩,通俗易懂解释。

    在软件开发中的单元测试过程中 单元测试打桩通常是一种模拟或替代正在被测试的组件或系统的策略 在单元测试打桩过程中 测试代码使用一个 虚拟 实现来替代掉实际组件或系统的某些部分 从而可以进行封闭式的测试 简单来说 单元测试打桩是一种 模拟卡
  • esp8266&点灯科技&arduino

    ESP8266 点灯科技 arduino esp8266实现温度传感器 利用超声波传感器测距与舵机控制 ESP8266驱动DS18B20 ESP8266与DS18B20的硬件连接 DS18B20引脚排列 3 读取一次DS18B20温度数据
  • 记录-跨域的形成和跨域方法

    1 什么是跨域 根据浏览器的同源策略 凡是发送请求Url的协议 域名 端口三者之间任意一与当前页面地址不同即为跨域 同源策略 同域名 domain或IP 同端口 同协议视为同一个域 一个域内的脚本仅仅具有本域内 的权限 可以理解为本域脚本只
  • 【原创】深度学习第18弹:基于MobileNet的手势识别

    一 链接 原创 深度学习第18弹 基于MobileNet的手势识别 二 效果视频 基于神经网络MobileNet的手势识别 个人网站 https www deepvisionzero com 微信公众号 DeepVisionZero
  • 如何求数组中两个元素的最小距离(两种方法)

    给定一个数组 数组中含有重复的元素 给定两个数字num1 num2 求这两个数字在数组中出现的位置的最小距离 分析 对数组双重遍历 找出最小距离 但是这种方法效率比较低 由于在求距离时只关心num1 num2这两个数 因此只需要对数组进行一
  • 嵌入式开发——常见的存储器分类和特性介绍

    1 存储器的组成 存储器大体上由 存储颗粒 控制电路 组成 存储颗粒负责存储数据 控制电路负责管理存储颗粒和对外交换数据 如果从存储颗粒上进行分类 就是以是否掉电丢失 是否随机寻址 是可读还是可写 是否需要初始化等标准进行分类 如果从控制电