解决疑惑 stm32flash和ram分别存储那些数据 疑惑---为什么ROM(flash)中还要存RW 为什么不包含ZI段呢

2 Keil MDK中的Code, RO-data , RW-data, ZI-data
2.1 Code(inc.Data) :
包含两部分,即代码和数据
code,即程序代码部分 -== inline data==. For example, literal pools(文字常量池), and short strings(短字符串)等. 这个一般被忽略,请大家注意!!!
2.2 RO Data:
read-only data,只读的数据 Shows how many bytes are occupied by read-only data. This is in addition to the inline data included in the Code (inc. data) column. 除inline data 之外的所有只读数据。
2.3 RW Data:
read write data,可读写的数据 Shows how many bytes are occupied by read-write data.
2.4 ZI Data:
zero initialized data,零初始化的可读写变量 Shows how many bytes are occupied by zero-initialized data. keil编译器默认是把你没有初始化的变量都赋值一个0。初始化为零,或者未初始化的变量,都存储于这个区域。

原文链接:https://blog.csdn.net/u012564117/article/details/95170275

存储Size:

RO size: Code + RO_data
RW size: RW_data + ZI_data
ROM (minimum)size = Code + RO_data + RW_data (即烧/下载程序到FLASH/ROM时,所占用的最小空间)
Total ROM Size (Code + RO Data + RW Data)这样所写的程序占用的ROM的字节总数,也就是说程序所下载到ROM flash 中的大小。

RAM size: RW Data + ZI Data (即程序运行的时,RAM使用的空间)

该文章关键部分

为什么ROM(flash)中还要存RW,因为掉电后RAM中所有数据都丢失了,每次上电RAM中的数据是被重新赋值的,每次这些固定的值就是存储在ROM中的,
为什么不包含ZI段呢,是因为ZI数据都是0,没必要包含,只要程序运行之前将ZI数据所在的区域一律清零即可。包含进去反而浪费存储空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值