stm32生成map文件

原文地址 https://blog.csdn.net/qlexcel/article/details/78884379

关于段的补充:段可以分为代码段和数据段,其中代码段的内容就是可执行代码。

stm32生成map文件

Code 代表执行的代码,程序中所有的函数都位于此处。

RO-data 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。

RW-data 代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。

ZI-data 代表未初始化的读写数据,程序中定义了但没有初始化的全局变量和静态变量位于此处。
stm32生成map文件

简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+ RO Data + RW Data = ROM

程序运行的时候,芯片内部RAM使用的空间为:              RW Data + ZI Data = RAM

 

因为MCU没上电时RAM中没有数据,所以此时所有的东西(包括代码、变量、初始值等)都是存放在flash中的,当上电后又要把变量等复制到RAM中才能正常运行。

stm32生成map文件

通过上面的框图可以看出,RW区也是要存储到ROM/Flash里面的。在执行映像之前,必须将已初始化的RW数据从ROM中复制到RAM中的执行地址并创建ZI Section(初始值为0的变量区),这样才算完成了MCU运行的准备