单片机存储结构简述

本文介绍了嵌入式系统中的内存管理概念,包括ZI、数据段、bss、heap、stack、RW、RO等不同内存区域的特点及用途,并解析了MAP文件中的各项指标含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

储存区与数据段介绍

在这里插入图片描述

ZI

ZI (Zero Initialize),未初始化的全局变量和静态变量,以及初始化为0的变量

ZI的数据全部是0,没必要开始就包含,只要程序运行之前将ZI数据所在的区域(RAM)清 0,不占用Flash,运行时候占用RAM

数据段说明
bssBlock Started by Symbol,储存未初始化的,或初始化为0的全局变量和静态变量
在RTOS中声明的大数组占用的bss段
heap 是用于存放进程运行中动态分配的内存段,其可用大小定义在启动文件中
stack 用于存放函数的参数,局部变量等,由系统自动分配和释放,其可用大小定义在启动文件中

RW

RW (Read Write),已经初始化的全局变量和静态变量

数据段说明
data由于这些初始值不会凭空产生,所以得存在Flash中
RW即占RAM空间也占Flash空间,有时占用Flash的空间比RAM小,因为会压缩

RO

RW (Read Only) ,代码,常量等

数据段说明
text代码段
const data储存只读常量,const修饰的常量,不管是在局部还是全局
一些只读的大变量最好用const修饰



MAP文件解读

==============================================================================
    Code     (inc. data)   RO Data    RW Data    ZI Data      Debug   

    141728      14222       4844       6220      44092    1748837   Grand Totals
    141728      14222       4844        420      44092    1748837   ELF Image Totals (compressed)
    141728      14222       4844        420          0          0   ROM Totals
==============================================================================

    Total RO  Size (Code + RO Data)               146572 ( 143.14kB)
    Total RW  Size (RW Data + ZI Data)             50312 (  49.13kB)
    Total ROM Size (Code + RO Data + RW Data)     146992 ( 143.55kB)
==============================================================================

程序占用 Flash=Code + RO Data + RW Data(压缩后的)

程序运行时候占用 RAM = RW data + ZI data

### 回答1: MSC51单片机有5个独立的存储空间:RAM(随机存取存储器),SFR(特殊功能寄存器),XRAM(扩展随机存取存储器),CODE(程序存储器)和DATA(数据存储器)。RAM用于存储程序运行时需要的临时数据,SFR用于控制系统功能和参数,XRAM用于拓展RAM空间,CODE用于存储程序代码,DATA用于存储程序中定义的变量。 ### 回答2: MSC51单片机有5个独立的存储空间,分别是程序存储器(ROM)、数据存储器(RAM)、数据存储器(SFR)、扩展RAM(XRAM)和扩展ROM(XROM)。 程序存储器(ROM)用于存储程序代码,其中包括程序的指令和常量数据。它是只读存储器,程序在运行过程中不可更改。 数据存储器(RAM)用于存储程序运行时的变量和临时数据。它是随机存取存储器,可以读取和写入数据。 数据存储器(SFR)是一种特殊的存储器,用于存储与外部设备交互的寄存器和控制寄存器。它通常包含硬件和软件对系统进行配置和控制的寄存器。 扩展RAM(XRAM)是一个可选的扩展存储器,用于增加单片机的数据存储容量。它可以与RAM组合使用,提供额外的存储空间。 扩展ROM(XROM)是另一个可选的扩展存储器,用于存储额外的程序代码。它可以与ROM组合使用,扩展程序存储的容量。 这5个独立的存储空间在MSC51单片机中起到了不同的作用,分别用于存储程序代码、数据、寄存器以及扩展存储。这些存储器的独立性和互补性,提供了MSC51单片机丰富的存储资源,确保了系统的正常运行和灵活性。 ### 回答3: MCS-51单片机有5个独立的存储空间,即程序存储器(ROM)、数据存储器(RAM)、特殊功能寄存器(SFR)、堆栈空间和外部存储器空间。 首先是程序存储器(ROM),用于存储程序的指令和常量数据。它是只读的,程序在运行过程中不能修改其中的内容。这个存储空间对程序的执行起关键作用,因为它存储了程序的指令。 其次是数据存储器(RAM),用于存储程序所使用的临时数据和变量。这个存储空间是读写的,程序可以在运行过程中修改其中的内容。RAM相对于ROM更加灵活,因为它可以根据程序需要动态地分配、修改和释放。 第三个存储空间是特殊功能寄存器(SFR),也被称为寄存器文件。它是一系列与单片机硬件功能相关的寄存器的集合,用来配置和控制各种硬件模块。例如,定时器和串口通信模块都有对应的寄存器来配置和控制它们。 堆栈空间用于存储函数调用的现场信息,包括函数的返回地址、局部变量等。在函数调用过程中,相关的数据会被压入栈中,函数返回时再从栈中恢复。堆栈是一种后进先出(LIFO)的数据结构。 最后是外部存储器空间,指的是连接在单片机外部的额外存储器。MCS-51单片机可以通过地址总线和数据总线来访问外部存储器,从而扩展存储容量。外部存储器可以是闪存、EEPROM、SRAM等多种类型,根据需求进行选择和连接。 这些独立的存储空间在MCS-51单片机中各自承担不同的功能,共同支持着单片机的正常运行和数据处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值