你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于RW-DATA在ROM中被写flash操作改动的问题

[复制链接]
hb3196276564 提问时间:2019-7-17 15:49 /
悬赏2ST金币未解决
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息:
QQ图片20190717153717.png
  • 图中几个参数分别代表
    • Code:代码的大小
    • RO:常量所占空间
    • RW:程序中已经初始化的变量所占空间
    • ZI:未初始化的static变量和全局变量以及堆栈所占的空间
  • 上述参数和芯片Flash以及SRAM的对应关系是
    • Flash占用大小=Code+RO+RW
    • SRAM占用大小=RW+ZI
RW参数同时参与了Flash和SRAM占用量的计算,这是因为Flash部分的属性是Read-Only的,而SRAM虽然是Read-Write但里面数据不能掉电保存,所以只能把已经初始化的值保存到ROM里,上电后再拷贝到SRAM中进行读写操作,即两部分都需要留出RW变量所占用的空间。

如图:
QQ图片20190717154311.png


结合上图说下STM32的启动过程(采用Cortex-M4、Cortex-M3内核的芯片基本都是这个过程):上电后首先从 0x00000000(映射到0x08000000,这里只考虑从内部Flash启动)处获得中断向量表,然后在运行用户代码之前会在标号2处有一段引导代码负责把存在Flash中的初始化变量的值Copy到SRAM中对应的变量位置(标号3),之后把ZI区全部清零(标号4),之后才正式开始运行用户代码(标号5)。
所以RW-DATA的数据上电运行后会被Copy到RAM里。
*************************************************************************************************************************************************************************
然后我的问题是:如果程序运行过程中,我操作写flash,并且是在原RW-DATA的内存地址上写了新的数据,那岂不是原来的RW-DATA数据就会被清除,下次上电启动程序时,程序是否会启动失败?(我实际上写的程序运行过程中没有问题,即使重新上电运行,所以很迷茫这个问题,希望有人帮忙解答一下疑问)
*************************************************************************************************************************************************************************

收藏 评论5 发布时间:2019-7-17 15:49

举报

5个回答
@zyz 回答时间:2019-7-17 21:01:57
111111
Kevin_G 回答时间:2019-7-19 10:17:55
变量、函数、程序 地址分配是在编译时就已经分配好了,如果你的变量用到SRAM指定地址,这部分SRAM在编译时就会特定分配。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

wenyangzeng 回答时间:2019-7-19 15:30:07
楼主所述的:
“Flash占用大小=Code+RO+RW”一句

既然RW是变量,那么Flash大小就不可能包括RW,RW应该在SRAM中才是。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

hb3196276564 回答时间:2019-7-20 14:46:19
wenyangzeng 发表于 2019-7-19 15:30
楼主所述的:
“Flash占用大小=Code+RO+RW”一句

断电SRAM是不能保存数据的,所以RW-DATA保存在flash中,上电启动过程会被copy到SRAM中,供程序调用。
hb3196276564 回答时间:2019-7-20 14:47:22
Kevin201707 发表于 2019-7-19 10:17
变量、函数、程序 地址分配是在编译时就已经分配好了,如果你的变量用到SRAM指定地址,这部分SRAM在编译时 ...

但是断电的时候,RW是保存在flash中的,启动才被copy到SRAM的。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版