任何嵌入式系统都将包括一个存储单元来存储和检索数字信息。这包括构成微控制器的关键元素之一的程序存储器和数据存储器。
程序存储器(程序内存)用于永久保存正在执行的程序,而数据存储器(数据内存)用于临时存储和保存中间结果和变量。
程序存储器
程序内存:程序内存用于执行永久保存程序或更常称为“程序代码”,它分为两个部分,启动程序和应用程序。
一些微控制器保持可配置部分的大小。
这两个部分可以具有不同级别的保护属性。
根据编译器中的设置,程序存储器也可用于存储常量变量。
一些微控制器会将引导部分保存在物理上独立的只读存储器中,通常是 ROM,而将程序存储器的其余部分保存在片上闪存中。
数据内存:数据存储器是在程序执行期间用于存储变量的易失性存储器,一旦微控制器的电源丢失,就会被删除。数据内存通常会包括以下内容:
通用寄存器
数据存储器包括几个通用的寄存器,证明了最短(最快)的访问时间,通常允许单周期算术逻辑单元(ALU)操作。
I/O内存
I/O内存空间包含CPU外围功能的地址,如控制寄存器、SPI和其他I/O函数。
扩展I/O内存(MCU依赖)
由于复杂性,一些具有更多外设的微控制器包括扩展的I/O内存,它占据了内部SRAM的一部分。扩展的I/O内存依赖于MCU。在存储I/O和扩展I/O内存中存储数据通常只由编译器处理。用户不能使用此内存空间来存储其数据。
内部RAM
内部SRAM(数据内存)用于临时存储和保存中间结果和变量。
因此,程序内存和数据内存在构建程序中都有不同的作用。程序内存必须是一个非易失性内存(通常是芯片上或芯片外闪存),即使关闭电源也能存储信息。相反,数据存储器并不保存信息,因为它需要电源来保持存储在芯片中的信息。
个人计算机中的程序存储器正是以这种方式实现的。 它具有包含基本输入/输出系统 (BIOS) 的程序存储器的固定部分。 这些程序永久保存在安装在主处理器板上的只读存储设备中。 以这种方式保存在 ROM 中的程序因其永久性质而被称为固件。
当今 PC 中使用的 BIOS ROM 的典型大小为 2 兆位 (MB),即 256 KB。 PC 中程序存储的大部分是由动态随机存取读/写存储设备 (DRAM) 构建的。 它们可以安装在主处理器板上,也可以安装在附加内存模块或板上。 使用 DRAM 可以读取或写入这部分程序存储内存。 它的目的再次是存储要执行的程序,但在这种情况下,它们仅在需要时才加载到内存中。 程序通常从二级存储设备(HDD或Flash)中读入,存储在内存的程序存储部分,然后运行。 当程序终止时,它所在的程序内存部分将返回给操作系统以供重用。
此外,如果关闭电源,基于程序存储内存部分的内容就会丢失。由于这些程序的临时性性质,它们被称为软件。
在PC领域,由于BIOS的小尺寸,主存储的主要部分是DRAM,将用于程序存储。相比之下,在一个嵌入式系统中,如电子游戏或咖啡机,完整的程序存储存储器是通过ROM或闪存设备来实现的。
如前所述,频繁更改的信息存储在内存子系统的数据存储部分中。 例如,要由微型计算机或微控制器处理的数据保存在主存储器的数据存储部分中。 当程序运行时,数据的值可以反复变化。 出于这个原因,数据存储存储器必须使用 RAM 来实现。 在 PC 中,数据不会自动驻留在内存的数据存储部分。 就像软件一样,它是从辅助存储设备(例如硬盘)中读入内存的。 然后可以将 PC DRAM 的任何部分分配给数据存储。这一切都由操作系统软件管理。 当程序运行时,数据在 DRAM 中被修改并将它们写入磁盘以保存新值。 数据形式不必是数字; 它们也可以是字母数字字符、代码和图形模式。 例如,在运行文字处理器应用程序时,数据是字母数字和图形信息。