| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32F429入门(十九):ROM RAM SRAM FLASH -> 正文阅读 |
|
[嵌入式]STM32F429入门(十九):ROM RAM SRAM FLASH |
存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有 了存储器计算机才具有记忆功能。 一、存储器的种类 存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。 其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一 般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。 易失性存储器可以理解为是我们电脑的内存条(一般都是DRAM,再嵌入式用的是SRAM),非易失性存储器可以理解为是电脑中的机械硬盘,他们传输的速率是有着很大的区别的。再优秀的CPU也不可能一直在等着机械硬盘的传输完成,所以我们需要内存条相互协调。 二、RAM(Random Access Memory) 随机存储器,所谓―随机存取,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。根据 RAM 的存储机制,又分为动态随机存储器 DRAM(Dynamic RAM)以及静态随机存储器 SRAM(Static RAM)两种。 (1)DRAM的存储单元结构——使用电容的电荷来表示数据 ? 电容本身具有放电特性,所以DRAM有个功能,会定时充电,维持正确数据。动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0,但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此 它需要定期刷新操作,这就是“动态(Dynamic)”一词所形容的特性。 刷新操作会对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电;若电量小于 1/2, 则认为其代表 0,并把电容放电,藉此来保证数据的正确性。 SDRAM(Synchronous DRAM):根据DRAM的通讯方式,又分为同步和异步两种,这两种方式根据通讯时是否需要使用时钟信号来区分。比如下面的利用时钟同步的通讯时序,它在时钟的上升沿表示有效数据。这种通讯速度更快。 DDR SRAM(Double Data Rate SDRAM): 这是为了进一步提高SDRAM的通讯速度所设计的。它的存储特性与 SDRAM 没有区别,但 SDRAM 只在上升沿表示有效数据, 在 1 个时钟周期内,只能表示 1 个有数据;而 DDR SDRAM 在时钟的上升沿及下降沿各表示一个数据,也就是说在 1 个时钟周期内可以表示 2 数据,在时钟频率同样的情况下,提 高了一倍的速度。至于 DDRII 和 DDRIII,们的通讯方式并没有区别,主要是通讯同步时钟的频率提高了。 当前个人计算机常用的内存条是 DDRIII SDRAM 存储器,在一个内存条上包含多个 DDRIII SDRAM 芯片。
?(2)SRAM的存储单元结构——以锁存器来存储数据 ? 这种电路结构不需要定时刷新充电,就能保持状态(当然,如果断电了,数据还是会丢失的),所以这种存 储器被称为“静态(Static)”RAM。 SRAM 根据其通讯方式也分为同步(SSRAM)和异步 SRAM,相对来说,异步 SDRAM 用得较多。 综上,我们可以对DRAM和SRAM进行对比: 对比 DRAM 与 SRAM 的结构,可知 DRAM 的结构简单得多,所以生产相同容量的存 储器,DRAM 的成本要更低,且集成度更高。而 DRAM 中的电容结构则决定了它的存取 速度不如 SRAM。 所以在实际应用场合中,SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般用DRAM。 同步与异步存储器:(根据有无时钟线划分) 同步方式: ? ?异步方式: ?三、ROM(Read Only Memory)
四、FLASH FLASH 存储器又称为闪存,它也是可重复擦写的储器。它的容量一般比 EEPROM 大得多,且在擦除时,一般以多个字节为 单位。如有的 FLASH 存储器以 4096 个字节为扇区,最小的擦除单位为一个扇区。根据存 储单元电路的不同,FLASH 存储器又分为 NOR FLASH 和 NAND FLASH。FLASH在写入新数据之前,必须先将原来的数据擦除,这一点跟硬盘不相同,它需要将此块的数据全都置1,之后我们再写入数据0。 NOR FLASH与NAND FLASH的对比: 我们平时讲的手机内存,256GB等概念,都在说的是NAND FLASH。 NOR 与 NAND 的共性是在数据写入前都需要有擦除操作,而擦除操作一般是以“扇区/块”为单位的。而 NOR 与 NAND 特性的差别,主要是由于其内部“地址/数据线”是否分开导致的。 为了区分上面的两大FLASH,我们首先来了解一下什么是XIP: XIP就是WINCE XIP KERNEL(立即执行特性),是CE核心部分,XIP是为eXecute In Place的缩写,在微软的CE定义中,这块区域存放的是以非压缩格式存放,不需加载,由Bootloader直接调用执行。 在嵌入式中,我们可以说是芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。也就是nor flash不需要初始化,就可以直接在flash里面执行代码。这里面所说的并不是在存储器内执行,而是指CPU的取值模块可以直接nor flash中把指令取出来,供后面的译码和执行模块使用。 NAND FLASH器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。它的时序比较复杂,所以一般CPU最好集成NAND控制器。另外由于NAND FLASH没有挂接在地址总线上,如果想以它作为系统地启动盘,就需要CPU具有特殊的功能。 所以我们再来继续分析以上两种flash: 由于 NOR 的地址线和数据线分开,它可以按“字节”读写数据,符合 CPU 的指令译码执行要求,所以假如 NOR 上存储了代码指令,CPU 给 NOR 一个地址,NOR 就能向 CPU 返回一个数据让 CPU 执行,中间不需要额外的处理操作。 而由于 NAND 的数据和地址线共用,只能按“块”来读写数据,假如 NAND 上存储 了代码指令,CPU 给 NAND 地址后,它无法直接返回该地址的数据,所以不符合指令译码要求。 若代码存储在 NAND 上,可以把它先加载到 RAM 存储器上,再由 CPU 执行。所以在 功能上可以认为 NOR 是一种断电后数据不丢失的 RAM,但它的擦除单位与 RAM 有区别, 且读写速度比 RAM 要慢得多。 FLASH 的擦除次数都是有限的(现在普遍是 10 万次左右),当它的使用接近寿命的时候,可能会出现写操作失败。由于 NAND 通常是整块擦写,块内有一位失效整个块就会失效,这被称为坏块,而且由于擦写过程复杂,从整体来说 NOR 块块更少,寿命更长。 由于可能存在坏块,所以 FLASH 存储器需要“探测/错误更正(EDC/ECC)”算法来确保数据的正确性。 由于两种 FLASH 存储器特性的差异,NOR FLASH 一般应用在代码存储的场合,如嵌 入式控制器内部的程序存储空间。而 NAND FLASH 一般应用在大数据量存储的场合,包括 SD 卡、U 盘以及固态硬盘等,都是 NAND FLASH 类型的。 最后总结: NOR FLASH:
NAND FLASH:
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:28:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |