[开发工具] RealView MDK一项功能,节约STM32芯片32%的CODE使用量

[复制链接]
5547|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 | 显示全部楼层

个人认为好的编译器最高级优化应该会做这些事情。
Swd21ic 发表于 2008-9-28 23:09 | 显示全部楼层

re

好落后..
IAR 不连接没有被调用的变量、函数早是N年前就可以了
nifengpiao 发表于 2008-9-29 13:29 | 显示全部楼层

楼上说的好虚

N年前就有了??希望楼上的拿出点数据或者事实证明一下啊,有没有这个功能俺们也不知道,虽然俺用IAR很久了
huoren 发表于 2008-9-29 13:37 | 显示全部楼层

Swd21ic

好像谁都知道没有被调用的变量、函数肯定是不会被链接的吧?但是编译器会不会为这些变量,函数分不分配存储空间就不太清楚了。谁有资料?研究一下
ATmega32L 发表于 2008-9-29 14:07 | 显示全部楼层

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

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

这很普通的功能。
IAR,GCC都有。
418425051 发表于 2008-9-29 14:53 | 显示全部楼层

IAR有这功能的

可以试一下。用IAR编译,没有用的模块在conf文件中全打开和不打开代码量是一样的!
fanxsd 发表于 2014-10-26 19:45 | 显示全部楼层
MDK的代码优化感觉就是。。。。,我优化完之后直接好多功能都丧失了。
diweo 发表于 2014-10-27 08:21 | 显示全部楼层
功能应该大家都有,只不过可能默认设置不同。
反正我用GCC,默认下是不会链接没有用到的变量或者函数的。
diweo 发表于 2014-10-27 08:22 | 显示全部楼层
呀,6年前的帖子。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部