资讯动态

Cortex-M3:为什么 .data 段在 Flash 中存放,却要在 RAM 中运行?

发布时间:2026/8/5 18:13:42 来源:尧图企业网站定制
难度:★本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。上一篇文章我们讲了“加载地址”和“执行地址”的区别。结论是:全局变量的初始值存在 Flash(加载地址),上电后由启动代码搬到 RAM(执行地址),然后在 RAM 里读写。但为什么非要这么折腾?为什么不让变量直接留在 Flash 里,省去搬家的麻烦?答案就藏在 Flash 的物理特性里。今天这篇文章,我们来把这个“为什么”彻底拆开,看看芯片设计者当年在 Flash 和 RAM 之间做的那道选择题。一、先看一个实验:如果强行在 Flash 里修改变量会怎样?写一段测试代码:constint*p_flash=(constint*)

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价