Cortex-M3:为什么 .data 段在 Flash 中存放,却要在 RAM 中运行?
2026/8/5 18:13:40 网站建设 项目流程

难度:★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


上一篇文章我们讲了“加载地址”和“执行地址”的区别。结论是:全局变量的初始值存在 Flash(加载地址),上电后由启动代码搬到 RAM(执行地址),然后在 RAM 里读写。

但为什么非要这么折腾?为什么不让变量直接留在 Flash 里,省去搬家的麻烦?

答案就藏在 Flash 的物理特性里。今天这篇文章,我们来把这个“为什么”彻底拆开,看看芯片设计者当年在 Flash 和 RAM 之间做的那道选择题。


一、先看一个实验:如果强行在 Flash 里修改变量会怎样?

写一段测试代码:

constint*p_flash=(constint*)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询