Arduino |上不同类型的内存SRAM, EEPROM, Flash

在本教程中,我们将了解计算机内存的基础知识,其运营和类型。然后,我们将专注于Arduino并了解Arduino的不同类型的内存,如Flash,EEPROM,RAM,它们的尺寸和目的。

什么是计算机内存?

计算机的设计和开发是为了执行各种工程、数学、教育和娱乐任务,速度非常快,精度很高。所有这些复杂的任务都可以归结为三个基本操作:

  • 在某些输入设备的帮助下接受数据。
  • 分析和处理数据。
  • 在一些输出设备的帮助下产生结果(数据)。

为了让处理器无缝地执行这些操作,它需要存储输入数据,保存中间结果,并将输出数据(结果)存储在某个位置。这叫做记忆。

计算机存储器是一种可以永久或暂时存储数据和指令的电子设备。无论大小和应用,例如,它可以是一个巨大的存储服务器或一个简单的基于微控制器的嵌入式系统,所有的计算机系统都需要内存。

内存表示法

我们知道数字电子设备仅处理两个数字1和0.这用于表示信号的电压电平。例如,在5V逻辑级系统中,'1'表示5V和'0'表示0V。

所以,信号的状态可以是' 1 '或' 0 '在任何给定的时间。这就是所谓的比特,它是数字世界中最小的数据单位。把这8个位组合起来,我们得到一个字节,它可以是28= 256个不同的位模式。

下面列出了两个公共信息单位:

位:最小的数据单位。它代表了逻辑状态,其中两个可能的值为1'或'0'中的一个。

字节:一组8位称为字节。数据字节可以在00000000和11111111之间具有任何二进制值。

基本的内存操作

只有两个基本可以在内存上执行。他们是读写。内存上的典型读取操作需要一个地址作为输入,并返回该位置的数据。

在典型写入操作的情况下,它需要一个地址,在该地址必须存储数据和实际数据本身。

记忆的类型

计算机系统上的所有不同存储器都可以分为两种类型的内存。他们是RAM和ROM。

RAM或随机存取存储器是用来存储临时数据的。在基于微处理器的系统中,操作系统、应用程序和其他数据被加载到RAM中,以便处理器能够快速访问这些数据。

在基于微控制器的系统中,RAM用于存储临时数据。

ROM或只读存储器是存储应用程序代码或固件的永久存储器。

内存类型 -  arduino

挥发性和非易失性

内存的另一个重要分类是基于功率依赖性。像RAM这样的存储器只要有电源就会存储数据,一旦断电,里面的数据就会消失。这种类型的内存被称为易失性内存。

另一方面,像ROM这样的存储器被称为非易失性存储器,因为它们中的数据是独立于电源的,也就是说,即使断电,它们仍然保留数据。

Arduino上不同类型的记忆

既然我们已经看过有关计算机内存和不同类型的内存,让我们继续了解Arduino上的不同类型的内存。

像任何计算机系统一样,甚至Arduino也有两个必不可少的记忆,即RAM和ROM。但有趣的是它们是如何组织的,也是它们的尺寸。

基本上,Arduino板上有三种类型的内存,比如UNO、Mega 2560或Nano。它们是:

  • 闪光
  • 内存
  • EEPROM.

Arduino中的RAM与其他RAM一样,用于存储临时数据,也是Volatile的。Flash和EEPROM是两种ROM内存类型,用于存储应用程序代码和小数据。它们在本质上是不挥发的。

让我们分别看看Arduino上这三种类型的内存,并比较它们在不同Arduino板上的大小。

笔记:从技术上讲,所有这些存储器都是Arduino板(如UNO、Nano、Mega2560)上的微控制器(如ATmega328P或atmega2560)的一部分。

闪光

Flash Memory也被称为Flash ROM。在Arduino中,Flash存储要运行的应用程序代码。在我们编写了Arduino Sketch之后,比如Blinky,我们只需在Arduino IDE中点击Upload按钮来运行Blinky程序。

在后台,这将编译草图并生成一个二进制文件,并将二进制文件存储到Arduino的Flash中。复位后,Arduino将读取存储在闪存中的指令,并执行必要的操作。

下表比较了一些流行的Arduino板上的闪存量。

Arduino Board.

微控制器 闪存大小
Arduino UNO ATmega328P

32 KB

Arduino纳米

ATmega328P 32 KB
Arduino Mega 2560. 2560接口

256 KB

Arduino微

Atmega32u4. 32 KB
arduino莱昂纳多 Atmega32u4.

32 KB

这个Flash Memory的一部分实际上是由Bootloader使用的,Bootloader负责通过串行接口将二进制文件存储到Flash中。

EEPROM.

Arduino上的下一种内存是EEPROM。EEPROM是电可擦可编程只读存储器的简称。

实际上,上面提到的Flash Memory也是EEPROM的一种。主要的区别是EEPROM可以在字节级擦除,而Flash可以在块级擦除。

Arduino中的EEPROM通常用于存储少量的数据,如输入或输出设备的状态,因此即使Arduino断电,也可以保留这些数据。我做了一个专门的教程Arduino EEPROM(内部和外部)。

有关Arduino内部EEPROM的更多信息,请访问“Arduino EEPRPM教程”。如果你对I的接口感兴趣2C基于C的外部EEPROM IC,如AT24C256与Arduino,然后访问“Arduino AT24C256 EEPROM教程”。

回到Arduino上的EEPROM,尺寸通常很小,只是几个字节。下表显示了不同Arduino板上的EEPROM的大小。

Arduino Board.

微控制器 EEPROM的大小
Arduino UNO ATmega328P

1 KB.

Arduino纳米

ATmega328P 1 KB.
Arduino Mega 2560. 2560接口

4 KB.

Arduino微

Atmega32u4. 1 KB.
arduino莱昂纳多 Atmega32u4.

1 KB.

内存

Arduino中的RAM实际称为SRAM或静态随机存取存储器,一种使用触发器来存储1位数据的RAM。其他类型的RAM称为DRAM或动态随机存取存储器,其使用电容来存储数据。

在Arduino中,SRAM存储临时数据或运行时间数据(由函数创建的变量,中断)。Arduino中的SRAM实际上分为几个部分。它们是:

  • 文本
  • 数据
  • BSS

“文本”段包含从闪存中加载的任何指令。“数据”部分包含在草图中初始化的变量。“BSS”段包含任何未初始化的数据(并将其初始化为0)。

最后,堆栈和堆。堆栈是RAM的部分实际存储在执行代码的同时存储功能的数据和中断。如果在运行时创建任何变量,则它们存储在堆中。

下表描述了不同Arduino板中可用的SRAM的数量。

Arduino Board.

微控制器 内存大小
Arduino UNO ATmega328P

2 KB

Arduino纳米

ATmega328P 2 KB
Arduino Mega 2560. 2560接口

8 KB

Arduino微

Atmega32u4. 2.5 KB.
arduino莱昂纳多 Atmega32u4.

2.5 KB.

结论

在本教程中,您了解了计算机内存,计算机内存类型,易失性和非易失性存储器以及Arduino板上的不同类型的内存。

发表评论

您的电子邮件地址将不会被公布。必填字段被标记

Electronicshub图标
Baidu
map