OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7275|回复: 5

STM32的RAM和内存分配

[复制链接]

22

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2017-9-18
在线时间
42 小时
发表于 2018-5-19 11:42:20 | 显示全部楼层 |阅读模式
1金钱
在网上看到关于MCU的一段资料,想问问看这对于我们用的芯片适用吗?

嵌入式MCU的片内RAM一般会被链接文件“分区”为如下几个段(section):
.bss:未初始化段,MCU启动 (boot/startup)过程中会将该RAM区初始化为0;
.data:数据段,该RAM区存放初始化值不为0的全局变量,其初始化值放置在编译结果的.copy(Flash/EEPROM)数据区,每次MCU启动(boot/startup)时,会将其初始值取出对.data区进行初始化;
.stack:栈段,该地址空间的大小在C工程的链接文件中给出,CPU会自动保留该区域,不对其进行任何初始化,但在进入C语言main () 函数之前必须将.stack的起始地址 (stack的最小地址或者最高地址,也称为栈顶—stack top,具体取决于该CPU架构的栈生长方式) 赋值给CPU的栈指针寄存器SP (stack pointer) ,该过程也被称为堆栈初始化;
.heap:堆段,该地址空间的大小在C工程的链接文件中给出,CPU会自动保留该区域,并初始化用于堆管理的指针链表;因为嵌入式MCU的片上RAM资源都非常小,是十分宝贵的资源,而使用heap对RAM空间进行动态管理效率极低,所以在嵌入式编程中极少使用heap,默认的嵌入式MCU C语言应用工程中是没有.heap段的
常见的嵌入式C语言应用工程各数据段、代码段和堆栈的分配如下图所示:
其中放在Flash/EEPROM等NVM(Non-VolatileMemory—非易失性存储器)中的默认段包括:
.text: 代码段,用于存放C应用工程中所有C函数代码的编译结果,比如启动函数startup,main函数等;
.copy:拷贝段,用于存放.data段的初始化值;
.const:常量段,用于存放工程中使用const修饰定义或者#define定义的常量;
interrupt vector table:中断向量表,用于存放包含默认复位向量在内的内核CPU异常和外设中断向量表,其为内核CPU异常或者外设中断的中断服务函数ISR地址数组;

普通人要怎么努力,才能超越勤奋的天才啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2017-9-18
在线时间
42 小时
 楼主| 发表于 2018-5-19 21:01:17 | 显示全部楼层
顶下。。。原子哥凌晨估计会来看。。
普通人要怎么努力,才能超越勤奋的天才啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-5-20 00:56:35 | 显示全部楼层
你理解的比我透彻
回复

使用道具 举报

22

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2017-9-18
在线时间
42 小时
 楼主| 发表于 2018-5-20 10:50:48 | 显示全部楼层
原子哥。。。这是我拷贝来的啊
普通人要怎么努力,才能超越勤奋的天才啊
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-6-30
在线时间
4 小时
发表于 2018-7-21 10:08:28 | 显示全部楼层
aswsd 发表于 2018-5-20 10:50
原子哥。。。这是我拷贝来的啊

楼主哪里拷的?能给个链接吗,感觉很有意思!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-7-30
在线时间
1 小时
发表于 2019-11-26 14:52:28 | 显示全部楼层
data段有多大
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表