打印

看着AVR-GCC编译出来的大文件,傻眼了

[复制链接]
3421|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dqyubsh|  楼主 | 2012-3-17 21:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个项目,用IAR AVR 5.1编写,已成功运行。今天心血来潮,试试AVR STUDIO 5.1,移植后,代码增大了一倍,单片机直接塞爆了。
AVR-GCC,编译通过,优化级别选Os显示为:


Device: atmega168pa

Program:   20140 bytes (122.9% Full)      ——超出16KB FLASH容量

(.text + .data + .bootloader)

Data:        128 bytes (12.5% Full)


这个软件在IAR AVR 5.1下编译,优化为最小Size,结果为:
9 372 bytes of CODE memory (+             48 range fill )
   176 bytes of DATA memory (+ 25 absolute )

两者相比较,GCC代码增加了一倍多,真是悲催。请教如何优化,将它弄到10K上下。

相关帖子

沙发
李富贵| | 2012-3-17 22:33 | 只看该作者
gcc能跟iar这么优秀的编译器相提并论么?
不过我已经有六年没摸过AVR了,根据以前的经验gcc在-o2的时候比iar大50%,-o3的时候大30%,悲剧的是开了-o3之后经常出来无法运行的代码,不知道这么多年来avr gcc有没有改过这个毛病。

使用特权

评论回复
板凳
dqyubsh|  楼主 | 2012-3-17 23:51 | 只看该作者
http://www.atmel.com/Images/doc32178.pdf

                                         Flash [KB]           RAM [KB]
GCC 4.4.3                         25.0 / 20.0         18.7 / 18.7     Speed / Size optimization
IAR EWAVR32 3.31.1        20.9 / 18.7         19.6 / 19.6


从这个例子来看,GCC大概比IAR文件大7%~20%,看来我的代码还是比较糙。

使用特权

评论回复
地板
李富贵| | 2012-3-18 10:56 | 只看该作者
AVR32和AVR是完全不同的处理器,EWAVR现在是6.x的版本了吧。

使用特权

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

本版积分规则

个人签名:yubsh@263.net

44

主题

2226

帖子

2

粉丝