keil 编译STM32F103的程序后RW-DATA 80K远大于片子的RAM(20K),程.....

2019-07-14 17:10发布

问题 1  编译环境 keil v4.73  硬件 STM32F103CB  FLASH:128K ,RAM:20K
程序编译后RW-data 大小为80K还多,程序还可运行,是keil优化的结果吗?
问题2 当添加代码时code 增大,RW-data 减少。当减少代码时code减小,RW-data增大。
这里的代码仅仅是函数没有全局变量,即使我在main()函数的开始定义一个char型的const变量,code增加4个字节,而RW-data减少4个字节。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
7762642422d
2019-07-15 07:22
aaa2412 发表于 2018-10-2 12:02
本帖最后由 tszhao 于 2015-8-7 09:55 编辑

1 是把两个函数中的局部1KB算作两个,

1.你实测算作2个,那么编译器给的结论只是个参考(具体要看bin文件的构成、大小等)。
2.加入一个新的const变量,该变量存放在flash中,即代码段(code),当然是code增加,该const变量不会复制到内存,故不会占用ram,自然RW-DATA段不会增加。
3.没图。你要点下图片就能添加进回复里。

给你点建议:
a.提问题要非常清楚(别让回答你问题的字数比你问题的字数还多!),你都说不清楚还有谁比你清楚?
b.一定要仔细,比如如何添加图片,你如果加入图片后,仔细看就会知道如何添加图片(点下图片即可添加),尽管这是个简单的事情,但如果都自己办不好,那还是说明不仔细。
c.你多少去看下编译原理,可以先粗略的看下,或者看看汇编的书。力求能逐渐的自己解决问题。

一周热门 更多>