STM32程序编译、存储、运行分析
1 程序的编译
MDK的编译过程如下图所示:
程序编译后,就变成了指令和数据。
数据又划分为只读数据、可读可写的数据、未初始化的数据。(有时有不同的划分方法:全局变量静态变量区、局部变量区、程序员开辟的数据区)
每一种类型归为一个域,程序在存储或运行的时候,不同的域会呈现不同的状态。
在keil里编译后,build output框有如下提示信息:
code:代码段
RO-data:read only(只读数据)
RW-data:read-write(读写数据)
ZI-data:zero initial(初始化为0的数据或没有初始化的数据)
2 STM32存储空间图
在程序运行的时候,一些数据会被搬移到RAM中去,如下图所示:
3 STM32程序在RAM里运行还是flash ROM里运行
参考
STM32中的程序在RAM还是FLASH里运行?
https://blog.csdn.net/yangkuiwu/article/details/78219995?locationNum=2&fps=1
STM32程序的组成、存储与运行
https://blog.csdn.net/qq_42900996/article/details/89458107
KEIL编译器区分RW-data和ZI-data