打印
[开发工具]

RealView MDK一项功能,节约STM32芯片32%的CODE使用量

[复制链接]
4346|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宛城君|  楼主 | 2008-9-27 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   安装了MDK3.23版本之后,在keilarmoardsembeststm32v100开发板例程中,使用Blinky的例程,该例程含有LCD显示,ADC,USART,GPIO,NVIC等功能,在C/C++选项中使用三级优化-o3选项后编译结果:Code=7764,RO-data=468,RW-data =24,ZI-data=1392.如果您再稍作调整,即在其他配置不变的情况下在C/C++中选择one ELF Section per Function的话,编译结果为Code=5260,RO-data=468,RW-data =24,ZI-data=1392 .Code节约了约32.25%。
分析原因:STM32芯片的编程大多采用ST公司提供的库文件。这些库文件中大量而全面的定义了芯片的结构以及初始化,但是有些库文件中的结构体或者函数根本在主程序中没有调用到,白白的占用了大量的代码空间,使用该选项后,则将这些冗余的配置全部删除了,因此节约了CODE空间。
    冗余去无踪,代码更出众!!!
沙发
athlon64fx| | 2008-9-27 16:33 | 只看该作者

这些事情完全可以手工去完成的

把没有用到的库文件从工程里删除,是不是一样的效果?

使用特权

评论回复
板凳
宛城君|  楼主 | 2008-9-27 16:47 | 只看该作者

并不只是优化文件

MDK的这个功能不仅仅是优化文件,她还删除了所有没有用到的结构体和函数,如果你愿意把每个结构体,每个函数都检查一遍有没有用到的话,那你就手工去完成了

使用特权

评论回复
地板
athlon64fx| | 2008-9-27 17:03 | 只看该作者

个人认为好的编译器最高级优化应该会做这些事情。

使用特权

评论回复
5
Swd21ic| | 2008-9-28 23:09 | 只看该作者

re

好落后..
IAR 不连接没有被调用的变量、函数早是N年前就可以了

使用特权

评论回复
6
nifengpiao| | 2008-9-29 13:29 | 只看该作者

楼上说的好虚

N年前就有了??希望楼上的拿出点数据或者事实证明一下啊,有没有这个功能俺们也不知道,虽然俺用IAR很久了

使用特权

评论回复
7
huoren| | 2008-9-29 13:37 | 只看该作者

Swd21ic

好像谁都知道没有被调用的变量、函数肯定是不会被链接的吧?但是编译器会不会为这些变量,函数分不分配存储空间就不太清楚了。谁有资料?研究一下

使用特权

评论回复
8
ATmega32L| | 2008-9-29 14:07 | 只看该作者

如果楼主只是说不连接未使用的函数

如果楼主只是说不连接未使用的函数,

这很普通的功能。
IAR,GCC都有。

使用特权

评论回复
9
418425051| | 2008-9-29 14:53 | 只看该作者

IAR有这功能的

可以试一下。用IAR编译,没有用的模块在conf文件中全打开和不打开代码量是一样的!

使用特权

评论回复
10
fanxsd| | 2014-10-26 19:45 | 只看该作者
MDK的代码优化感觉就是。。。。,我优化完之后直接好多功能都丧失了。

使用特权

评论回复
11
diweo| | 2014-10-27 08:21 | 只看该作者
功能应该大家都有,只不过可能默认设置不同。
反正我用GCC,默认下是不会链接没有用到的变量或者函数的。

使用特权

评论回复
12
diweo| | 2014-10-27 08:22 | 只看该作者
呀,6年前的帖子。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

52

帖子

0

粉丝