电子发烧友网 > 控制/MCU > 正文

MCU的内存分配详解

2018年11月04日 11:24 次阅读

谈到内存,我们都会想到PC,对于单片机或者arm来说也是存在内存的,简单的理解是:内存嘛……就是存放东西的地方,只不过这个东西是数据而已,好了,还是把重点放在mcu上面,对于一款mcu来说,在性能描述的时候都会告诉sram,flash的容量大小,对于初学者来说,也不会去考虑和理会这些东西,拿到东西就只用。其实不然,这些量都是十分重要的,仔细想想,代码为什么可以运行,代码量是多少,定义的int、short等等类型的变量究竟是怎么分配和存储的,这些问题都和内寸有关系。

首先单片机的内存可以大小分为ram和rom,这里就不再解释ram和rom的区别了,我们可以将其等效为flash和sram,其中根据flash和sram的定义可得,flash里面的数据掉电可保存,sram中的并不可以,但是sram的执行速度要快于flash,可以将单片机的程序分为code(代码存储区)、RO-data(只读数据存储区)、RW-data(读写数据存储区)和ZI-data(零初始化数据区)。在MDK编译器下可以观察到在代码中这4个量的值,如下图1所示:

图1:

MCU的内存分配详解

其中code和RO-data存储在flash中,所以两者之和为单片机中flash需要分配给它们的空间大小(并且等于代码所生成的.bin文件大小),另外RW-data和ZI-data存储在sram中,同样两者之和为单片机中sram需要分配给它们的空间大小。

另外,我们必然会想到栈区(stack)、堆区(heap)、全局区(静态区)(static)、文字常量区和程序代码区和上面所介绍的code、RO-data等的关系。

1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 这些值是可读写的,那么stack应该被包含在RW-data(读写数据存储区),也就是单片机的sram中。

2、堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。可以理解,这些也是被包含在单片机的sram中的。

3、全局区(静态区)(staTIc):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。这些数据也是可读可写的,和stack、heap一样,被包含在sram中。

4、文字常量区:常量字符串就是放在这里的。这些数据是只读的,分配在RO-data(只读数据存储区),则被包含在flash中。

5、程序代码区:存放函数体的二进制代码,可以想象也是被包含在flash,因为对于MCU来说,当其重新上电,代码还会继续运行,并不会消失,所以存储在flash中。

综上所述,MCU的内存分配基本如此,其中并没有提到存储空间所对应的flash和sram地址,这些后面还会讲到!如有错误,请指正。

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

开源一下可能是功能最全面的MP3蓝牙音频数传芯片模块方案

发表于 2018-11-03 16:07 34次阅读
开源一下可能是功能最全面的MP3蓝牙音频数传芯片模块方案

华虹半导体大力拓展物联网市场 扩大在MCU产品代...

华虹半导体有限公司宣布,公司2016年上半年微控制器(MCU)芯片出货量达12亿颗,较去年同期增长5...

发表于 2018-11-03 10:50 83次阅读
华虹半导体大力拓展物联网市场 扩大在MCU产品代...

物联网的出现 带动了32位MCU的迅速发展

2015年是MCU市场的一个分水岭。物联网与智能硬件的发展带动32位MCU需求快速上升,据相关数据显...

发表于 2018-11-03 10:45 98次阅读
物联网的出现 带动了32位MCU的迅速发展

单片机LED八路循环彩灯依次递减循环的代码怎么写?

发表于 2018-11-02 18:03 84次阅读
单片机LED八路循环彩灯依次递减循环的代码怎么写?

单片机、ARM、DSP与CPU之间的关系大揭秘

你知道单片机、ARM、DSP都是CPU吗,它们之间又有什么不同,小编进行了整理和编辑。

发表于 2018-11-02 17:38 116次阅读
单片机、ARM、DSP与CPU之间的关系大揭秘

HQ2084xx

发表于 2018-11-02 16:33 130次阅读
HQ2084xx

HQ2084x

发表于 2018-11-02 16:32 85次阅读
HQ2084x

HQ2082x

发表于 2018-11-02 16:31 100次阅读
HQ2082x

快速上手Linux

发表于 2018-11-02 16:29 72次阅读
快速上手Linux

HQ2080X

发表于 2018-11-02 16:25 37次阅读
HQ2080X

单片机中的上下拉电阻有什么作用

上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻也起到一个限流作用,下拉就是下拉到低电平...

发表于 2018-11-02 16:22 53次阅读
单片机中的上下拉电阻有什么作用

电子产品方案开发之LED驱动单片机芯片

发表于 2018-11-02 16:16 17次阅读
电子产品方案开发之LED驱动单片机芯片

单片机中的CY与OV详细解析

CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位...

发表于 2018-11-02 16:15 54次阅读
单片机中的CY与OV详细解析

智能电机未来的发展趋势,TI C2000 MCU...

无数的电动机和电机驱动器是强大的自动运转技术的核心,有时它们也被称为工业伺服驱动器。当今,越来越多的...

发表于 2018-11-02 15:48 442次阅读
智能电机未来的发展趋势,TI C2000 MCU...

基于STM32单片机的64Mbit单对单通信

简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。

发表于 2018-11-02 14:19 86次阅读
基于STM32单片机的64Mbit单对单通信

基于近红外光电传感技术的溢油监测系统设计

发表于 2018-11-02 10:46 73次阅读
基于近红外光电传感技术的溢油监测系统设计

基于单片机的多气体分析电子嗅觉系统设计方案

发表于 2018-11-02 10:44 52次阅读
基于单片机的多气体分析电子嗅觉系统设计方案

AVR系列单片机的主要特性及选型

AVR单片机是1997年由ATMEL公司研发 出的增强型内置Flash的RISC(Reduced I...

发表于 2018-11-02 09:20 157次阅读
AVR系列单片机的主要特性及选型

S32K通用demo板上接口与以太网通用节点解决...

针对通用型的汽车电子节点,我们推荐使用S32K+SBC的产品组合,两者作为配套产品,可以提供完整的开...

发表于 2018-11-01 18:52 244次阅读
S32K通用demo板上接口与以太网通用节点解决...

单片机中的冷复位和热复位是什么意思

冷复位用英文来表示是Restart,热复位用英文来表示是Reset。

发表于 2018-11-01 16:25 92次阅读
单片机中的冷复位和热复位是什么意思

单片机存储器的工作原理及选片与总线的概念解析

存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低...

发表于 2018-11-01 16:15 60次阅读
单片机存储器的工作原理及选片与总线的概念解析

兆易创新GD32E230系列MCU低至20美分,...

2018年11月1日,北京 — 日前,业界领先的半导体供应商兆易创新(GigaDevice)正式推出...

发表于 2018-11-01 11:03 720次阅读
兆易创新GD32E230系列MCU低至20美分,...

基于单片机的I2C和EEPROM连接

在实际的应用中,保存在单片机RAM中的数据,掉电后就丢失了,保存在单片机的FLASH 中的数据,又不...

发表于 2018-11-01 10:38 139次阅读
基于单片机的I2C和EEPROM连接

面对芯片及其相关的软件开发技术的快速发展变化如何...

单片机不是裸奔就是RTOS,其实玩过RTOS和linux的同学都知道,RTOS虽然也叫操作系统,但是...

发表于 2018-10-31 17:05 235次阅读
面对芯片及其相关的软件开发技术的快速发展变化如何...

单片机通用寄存器的分类及应用

通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特...

发表于 2018-10-31 16:50 70次阅读
单片机通用寄存器的分类及应用

单片机为何不能直接驱动继电器

虽然这个问题对于电子老白来说不值一提,不过对于初学单片机的朋友,问这个问题的人实在是太多了,以前总是...

发表于 2018-10-31 16:23 237次阅读
单片机为何不能直接驱动继电器

如何实现单片机UART串行数据与CAN数据之间相...

GCAN-601模块是嵌入式单片机UART串口转CAN模块,可实现将UART串行数据与CAN数据之间...

发表于 2018-10-31 16:00 160次阅读
如何实现单片机UART串行数据与CAN数据之间相...

单片机硬件电路设计的七个原则分享

一个单片机硬件系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RA...

发表于 2018-10-30 16:22 128次阅读
单片机硬件电路设计的七个原则分享

单片机实现利用中断复位的两种方式

如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。

发表于 2018-10-30 15:55 169次阅读
单片机实现利用中断复位的两种方式

简单分析树莓派的优点与缺点

关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文...

发表于 2018-10-30 15:08 90次阅读
简单分析树莓派的优点与缺点

Arduino/树莓派/单片机/arm区别分析

Arduino是一款由开源软件环境提供支撑的开源硬件原型平台。最早是意大利的一个团队的一个开源项目,...

发表于 2018-10-30 11:06 203次阅读
Arduino/树莓派/单片机/arm区别分析

浅谈树莓派与单片机的区别

树莓派指的是一款硬件开源的,树莓派是一个成品开发板,上面也有CPU、内存,但是它们都是以分立的芯片的...

发表于 2018-10-30 09:42 124次阅读
浅谈树莓派与单片机的区别

如何使用单片机中printf

1. 如c语言同:printf(“”);在控制台就会输出“”中的内容; 2. 通过串口输出:只...

发表于 2018-10-29 15:48 100次阅读
如何使用单片机中printf

如何对MCU程序中的数据进行可视化

概述FreeMASTER是恩智浦免费为用户提供的,一种在PC电脑上对MCU程序中数据可视化的工具。

发表于 2018-10-29 15:30 183次阅读
如何对MCU程序中的数据进行可视化

随着32位MCU的崛起,8位MCU或将消亡

似乎伴随着16位、32位MCU的崛起,关于8位MCU消亡的言论就从来没有消停过。但事实是,8位MCU...

发表于 2018-10-28 11:12 181次阅读
随着32位MCU的崛起,8位MCU或将消亡

关于TI助力智能制造,引领MCU技术革新的简单剖...

我们知道,工业自动化中,对于机器和智能设备的控制,需要发挥传感器的作用。在以前,一个编码器要对应着一...

发表于 2018-10-28 11:08 386次阅读
关于TI助力智能制造,引领MCU技术革新的简单剖...

远程代码执行漏洞现身运行内嵌式系统的流行操作系统

在主要用于智能家居及关键基础设施系统中的大部分微处理器与单片机的开源操作系统FreeRTOS中,已发...

发表于 2018-10-28 09:30 340次阅读
远程代码执行漏洞现身运行内嵌式系统的流行操作系统

STM32单片机如何超频工作超大约多少还能正常工...

根据微软学术的定义,所谓超频(OVERCLOCKING)就是强制将计算机或硬件运行于厂商指定的时钟频...

发表于 2018-10-28 09:26 335次阅读
STM32单片机如何超频工作超大约多少还能正常工...

基于单片机D/A输出程序编写分享

D/A 是和 A/D 刚好反方向的,一个 8 位的 D/A,从 0~255,代表了 0~2.55V ...

发表于 2018-10-26 16:03 102次阅读
基于单片机D/A输出程序编写分享

基于stm8s103k3单片机串口UART的正确...

我使用的是stm8s103k3,32脚单片机,这个使用手册上说了UART1,UART2,UART3。...

发表于 2018-10-26 15:43 66次阅读
基于stm8s103k3单片机串口UART的正确...

基于单片机在异形曲面在线检测系统中的应用设计

随着三维设计软件常利用对系统模拟优化分析、路况的反馈和理论的计算,能够设计出高水平曲面异形线和截面,...

发表于 2018-10-26 15:19 54次阅读
基于单片机在异形曲面在线检测系统中的应用设计

单片机中的定时器与计数器有何不同,二者的区别是什...

定时器实际上也是工作在计数方式下,只是计数的是固定周期的脉冲,由于脉冲周期固定,由计数值可以计算时间...

发表于 2018-10-26 14:58 91次阅读
单片机中的定时器与计数器有何不同,二者的区别是什...

网上单片机制作“2.4G频率计”方案之我见

注:本文是作者以前发表在其个人博客,现在发布到聚丰开发专栏 在网上看到有朋友发布一个单片机制作2.4...

发表于 2018-10-25 17:01 289次阅读
网上单片机制作“2.4G频率计”方案之我见

转学STM32的入门总结和学习步骤

大家可能是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩...

发表于 2018-10-25 16:19 338次阅读
转学STM32的入门总结和学习步骤

基于单片机应用程序编写的七大步骤分享

接到一个单片机项目设计文件之后,并不是马上动手编写程序,而是仔细研究用户提出的技术要求或者技术说明,...

发表于 2018-10-25 15:37 92次阅读
基于单片机应用程序编写的七大步骤分享

基于单片机Stm32f103 DAC电流输出解决...

用的是64封装的芯, 此芯ADC的基准Vref+和电源是同一个端口,Vref-共用电源地。在电池输出...

发表于 2018-10-25 15:20 95次阅读
基于单片机Stm32f103 DAC电流输出解决...

基于单片机设计堆栈的基本概念解析

向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈

发表于 2018-10-25 15:16 44次阅读
基于单片机设计堆栈的基本概念解析

ST推出STM32L5系列内核微控制器MCU,为...

意法半导体(STMicroelectronics,简称ST)推出新的STM32L5系列®Cortex...

发表于 2018-10-25 14:59 87次阅读
ST推出STM32L5系列内核微控制器MCU,为...

瑞萨电子成功开发出第三代32位RX微控制器MCU...

创新的 RXv3 核大幅提升了久经验证的瑞萨电子 RX CPU 核架构性能,实现了高达 5.8 Co...

发表于 2018-10-25 14:54 76次阅读
瑞萨电子成功开发出第三代32位RX微控制器MCU...

瑞萨电子开发出第三代32位 RX CPU核—RX...

RXv3核实现了5.8 CoreMark/MHz,能够提供最高的嵌入式处理性能和功效。

发表于 2018-10-25 11:44 868次阅读
瑞萨电子开发出第三代32位 RX CPU核—RX...

我被红外遥控闪了一下腰

发表于 2018-10-25 11:26 363次阅读
我被红外遥控闪了一下腰

基于KL16的指纹锁低功耗方案

ZLG基于数百厂家的需求共性,设计了基于NXP KL16的指纹锁方案,单触摸休眠状态下达到7.52u...

发表于 2018-10-25 10:26 378次阅读
基于KL16的指纹锁低功耗方案

学STM32对你来说有什么好处

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。

发表于 2018-10-25 09:06 1262次阅读
学STM32对你来说有什么好处

如何利用单片机来驱动继电器

注意:单片机的IO口驱动能力不够,加一片ULN2003来驱动继电器,一个ULN2003可以驱动7个继...

发表于 2018-10-24 16:02 159次阅读
如何利用单片机来驱动继电器

基于51单片机直流电机PWM调速程序

这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、...

发表于 2018-10-24 15:56 318次阅读
基于51单片机直流电机PWM调速程序

打破思维定式——两种键盘扫描方法比较分析

发表于 2018-10-24 11:24 230次阅读
打破思维定式——两种键盘扫描方法比较分析

应广双核单片机应用提示

发表于 2018-10-24 11:24 194次阅读
应广双核单片机应用提示

用一条IO口实现两个按键功能

发表于 2018-10-24 11:24 220次阅读
用一条IO口实现两个按键功能

东北石油大学-瑞萨电子嵌入式MCU联合实验室正式...

揭牌仪式后,瑞萨电子高级专家陈轶华为东北石油大学的同学们带来了精彩讲座,介绍了半导体行业趋势,以及瑞...

发表于 2018-10-24 09:42 439次阅读
东北石油大学-瑞萨电子嵌入式MCU联合实验室正式...

基于S3C6410裸机程序中可能用到的函数分享

*函数:voidSetEINT_TriggerMode(u8EINT0_N,u8Trigger) ...

发表于 2018-10-23 16:00 59次阅读
基于S3C6410裸机程序中可能用到的函数分享

基于LED图文显示屏控制系统的设计

LED显示屏系统组成 LED图文显示屏系统由软件控制系统、无线传输系统、设备主控制器、LED显示点阵...

发表于 2018-10-23 15:35 196次阅读
基于LED图文显示屏控制系统的设计

双核单片机之初体验--2

发表于 2018-10-23 10:08 226次阅读
双核单片机之初体验--2

双核单片机之初体验--1

注:本文是作者以前发表在其个人博客,现在 发布到 聚丰开发专栏 不 经意间,酷睿双核已经成为电脑CP...

发表于 2018-10-23 09:08 522次阅读
双核单片机之初体验--1

单片机的构成及功能特点解析

单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器)...

发表于 2018-10-22 15:23 109次阅读
单片机的构成及功能特点解析

51单片机4种简单的扩展方法

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展。

发表于 2018-10-22 10:37 378次阅读
51单片机4种简单的扩展方法

物联网的发展趋势与MCU市场的关系密不可分

根据市场研究公司IHS表示,针对连网汽车、可穿戴电子设备、建筑物自动化以及其他有关物联网(IoT)应...

发表于 2018-10-21 10:42 810次阅读
物联网的发展趋势与MCU市场的关系密不可分

意法半导体MCU在中国市场的布局浅析

“在8年的时间里,意法半导体微控制器在中国市场从2007年的22亿美元增长到2015年的27亿美元,...

发表于 2018-10-21 10:36 541次阅读
意法半导体MCU在中国市场的布局浅析

单片机的发展有哪几个阶段

单片机(Microcontrollers)诞生于1971年,早期的SCM单片机都是8位或4位的。其中...

发表于 2018-10-21 10:15 364次阅读
单片机的发展有哪几个阶段

如何使用FreeMASTER让PC对MCU程序中...

使用FreeMASTER工具,不需要在目标工程中引用同FreeMASTER相关的源代码,只须将需要实...

发表于 2018-10-20 11:58 431次阅读
如何使用FreeMASTER让PC对MCU程序中...

单片机控制继电器原理是怎样的?

单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大...

发表于 2018-10-20 11:43 654次阅读
单片机控制继电器原理是怎样的?

CC3200MOD SimpleLink Wi-...

使用业界首款可编程FCC,IC,CE和Wi-Fi认证无线微控制器(MCU)模块,内置Wi-Fi,开始您的设计连接。 SimpleLink CC3200MOD专为物联网(IoT)而创建,是一个集成了ARM Cortex-M4 MCU的无线MCU模块,允许客户使用单个设备开发整个应用程序。凭借片上Wi-Fi,互联网和强大的安全协议,无需先前的Wi-Fi体验即可加快开发速度。 CC3200MOD将所有必需的系统级硬件组件(包括时钟,SPI闪存,RF开关和无源元件)集成到LGA封装中,以便于组装和低成本PCB设计。 CC3200MOD作为完整的平台解决方案提供,包括软件,样本应用,工具,用户和编程指南,参考设计以及TI E2E支持社区。 应用MCU子系统包含行业标准的ARM Cortex- M4内核以80 MHz运行。 该器件包括各种外设,包括快速并行相机接口,I2S,SD /MMC,UART,SPI,I2C和四通道ADC。 CC3200系列包括用于代码和数据的灵活嵌入式RAM;带外部串行闪存引导程序和外设驱动程序的ROM;用于Wi-Fi网络处理器服务包,Wi-Fi证书和凭证的SPI闪存。 Wi-Fi网络处理器子系统具有Wi-Fi片上网络,并包含一个附加功能专用的ARM...

发表于 2018-08-20 17:53 66次阅读
CC3200MOD SimpleLink Wi-...