单片机mcu内存分布详解

一、内存分区:

  • 单片机内存分布

    • 中断向量表

      • .intvec

        • 中断向量表段

    • 代码区

      • .text

        • 函数代码段,存放函数体的二进制代码。

    • 数据区

      • .bss
        • 未初始化及初始化为0的全局和静态变量段

        • 不占用可执行文件控件,其内容由操作系统初始化(清零)

      • .rodata
        • 常量段

      • .data
        • 已初始化的全局和静态变量

        • 占用可执行文件控件,其内容由程序初始化

      • heap

        • 动态分配数据

        • 内存地址由低地址到高地址增长,用malloc等函数申请

      • stack

        • 编译器自动分配和释放

        • 内存地址由高地址到低地址,先进后出;

        • 存放局部变量,函数调用和返回时,其入口参数和返回值存放在栈区

    • 命令行参数

      • /

二、单片机内存分布

单片机内存被总分为flash(rom)和sram(ram),flash里面的数据掉电可保存,sram中的数据掉电就丢失;

flash(rom)空间大小为Code + RO-data + RW-data的总和;

SRAM空间(即RAM区),占用的空间为RW-data + ZI-data之和;

1、CodeRO-dataRW-dataZI-data

单片机通过keil/IAR编译后会在“Build Output”输出栏输出当前代码内存占用信息:

包括CodeRO-dataRW-dataZI-data的大小;

1.含义
Code:代码段,存放程序的执行代码。。

存储位置:ROM

特点:只读

RO-data:数据段,存放程序定义的常量。

存储位置:ROM

特点:只读

RW-data:数据段,存放已初始化的全局变量。

存储位置:ROM和RAM

特点:可读可写

ZI-data:数据段,存放未初始化或初始化为0的全局及静态变量。

存储位置:RAM

特点:可读可写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值