MDK的编译过程如下图所示:

STM32程序编译、存储、运行分析

程序编译后,就变成了指令和数据。

数据又划分为只读数据、可读可写的数据、未初始化的数据。(有时有不同的划分方法:全局变量静态变量区、局部变量区、程序员开辟的数据区)

每一种类型归为一个域,程序在存储或运行的时候,不同的域会呈现不同的状态。

在keil里编译后,build output框有如下提示信息:

STM32程序编译、存储、运行分析

code:代码段

RO-data:read only(只读数据)

RW-data:read-write(读写数据)

ZI-data:zero initial(初始化为0的数据或没有初始化的数据)

2 STM32存储空间图

STM32程序编译、存储、运行分析

在程序运行的时候,一些数据会被搬移到RAM中去,如下图所示:

 STM32程序编译、存储、运行分析

3 STM32程序在RAM里运行还是flash ROM里运行

STM32程序编译、存储、运行分析

参考

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

https://blog.csdn.net/xiaogu0322/article/details/78218638

相关文章:

  • 2021-09-21
  • 2021-07-31
  • 2021-12-10
  • 2021-07-12
  • 2021-06-06
  • 2021-10-19
  • 2021-12-31
猜你喜欢
  • 2021-04-20
  • 2021-11-11
  • 2022-12-23
  • 2021-04-08
  • 2022-02-26
  • 2021-11-07
相关资源
相似解决方案