STM32关于IAR和Keil中如何查看代码段的大小

今天在看IAP下载的时候发现需要知道自己编译出来的代码段的大小来设置FLASH的偏移量,在keil下编译默认是会显示程序的大小的:

可以清除的看到代码(Code)占了29704个字节,只读常量(RO-data)占6456个字节,已初始化的全局变量(初始化非0的全局变量)(RW-data)占64个字节,未初始化的全局变量(未初始化和初始化为0的变量)(ZI-data)占62400个字节。那么哪些是存放在FLASH中,哪些是存放在RAM中呢?

Code存放在FLASH中是毋容置疑的,RW-data与ZI-data存放在RAM中也是毋容置疑的,那RO-data到底是存放在哪里呢?RO-data是常量的意思,常量在程序中如何表示,当然是添加Const。但是添加了Const的常量一定是存放在FLASH中吗?
这里就不验证了,直接说结论,有兴趣的朋友可以自己去验证。如果这个CONST是定义在全局的,那么它会被存放在FLASH中,如果这个CONST是在局部的,那么它会被存放在RAM中。但是查了很多资料,也没有人能说清这个RO-DATA到底是局部的常量,还是全局的常量,因此抱着“选大不选小”的原则,就把这个RO-DATA当做是存储在FLASH中,再做FLASH偏移的时候把它的大小也添加进去。

再说IAR。

IAR的编译器默认是不会打印编译的这些信息的,


点击IAR编辑栏的Tools按钮,选择Options..,


进入到IDE Options界面,点击Messages选项栏,在Show build message:下拉框中选择All,


这样在编辑的时候就会打印所有的编辑信息,当然也包括代码段的大小信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值