STM32中的内存映射
在STM32中,内存映射通常如下:
-
Flash:
-
存储
.text
段(代码)、.rodata
段(只读数据)和.data
段的初始值。
-
-
RAM:
-
存储
.data
段(运行时)、.bss
段、栈和堆。
-
4. 程序启动过程
在STM32中,程序启动时会发生以下操作:
-
从Flash中加载
.data
段的初始值到RAM。 -
将
.bss
段的内存区域清零。 -
初始化栈指针(SP)和堆指针(Heap)。
-
调用
main()
函数,开始执行用户程序。
5. 总结表格
内存区 | 存储内容 | 存储位置 | 特点 |
---|---|---|---|
.text |
程序代码、只读常量 | Flash | 只读,掉电不丢失 |
.data |
已初始化的全局变量和静态变量 | Flash(初始值) + RAM(运行时) | 可读写,启动时从Flash复制到RAM |
.bss |
未初始化的全局变量和静态变量 | RAM | 启动时清零,不占用Flash空间 |
.rodata |
只读数据(如字符串常量) | Flash | 只读,掉电不丢失 |
栈(Stack) | 局部变量、函数参数、返回地址 | RAM | 自动管理,空间有限 |
堆(Heap) | 动态分配的内存 | RAM | 手动管理,空间较大 |