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条回答
aaa2412
2019-07-15 02:12
7762642422d 发表于 2018-10-2 11:46
1.我估计KEIL不会把两个函数中局部的1KB算作1个而是算作2个。这就变成了2KB,你可以试下。
2.flash中的const值在使用时直接从Flash获取不走ram,加了const比不加,当然RW-DATA会减少。

本帖最后由 tszhao 于 2015-8-7 09:55 编辑

1 是把两个函数中的局部1KB算作两个,
2 我可能没说清楚,加入的const变量以前没有,不是说以前定义了个变量现在加上了const,而是以前就没有这个变量,我在别的keil STM32的程序中新加入一个const变量时只是code增加,RW-data不变,
刚才我在实验函数内部局部数组时如 uchar temp【10】,code增加,然而RW-data减少,而且是code增加多少RW-data就减少多少,他们的变化正好是相反的。
3还有个问题请教一下:
C:Documents and SettingsAdministrator桌面1.bmp
C:Documents and SettingsAdministrator桌面2.bmp
第一次提交图片,不知道能不能看到。关键是红 {MOD}圆圈标注的,我在FLASH中用绝对地址定义的一个两个字节的数组,此数组类型是不是const编译后RO-data变化太大了吧???

一周热门 更多>