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

关于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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版