[AVR单片机] atmega8,8k空间用了一半怎么就满了?

[复制链接]
3685|10
 楼主| 独占一江秋 发表于 2008-10-18 03:49 | 显示全部楼层 |阅读模式
cpu: atmega8
iccavr c
.lst 末行: 0E3E 9508      RET
编译信息末行:
bfunc_lit:0x26.0x2000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -F0xff -S2 @空调温控c.lk  
Device 88% full.
Done.
    地址刚用到0E3E,Device怎么就到88%了?
 楼主| 独占一江秋 发表于 2008-10-18 03:56 | 显示全部楼层

这个程序我在其它8k单片机上用汇编做完还剩4k多

怎么avr用c做了一半就做不下去了?
 楼主| 独占一江秋 发表于 2008-10-18 15:02 | 显示全部楼层

难道还得用汇编?

hl0716 发表于 2008-10-18 15:16 | 显示全部楼层

空调温控

空调温控 你做这个的么 
John_Lee 发表于 2008-10-18 15:17 | 显示全部楼层

启动文件和库

不能看lst,要看map。
 楼主| 独占一江秋 发表于 2008-10-18 15:41 | 显示全部楼层

谢谢楼上两位

回4楼:
   是空调温控。用飞利浦8k芯片做过了,汇编,空间还剩1半呢。飞利浦太贵,打算换mega。10年来一直用汇编,几乎所有人都强烈建议用c搞avr,于是想试一下用c,结果这个样子。不是我的c不精,10年前就用c在dos下搞大程序。
回5楼:
   map结果是这样的:
   Area                               Addr   Size   Decimal Bytes (Attributes)
--------------------------------   ----   ----   ------- ----- ------------
                            text   0062   1C1C =   7196. bytes (rel,con,rom)
   我认为icc的报告是正确的,我困惑c的效率难道这么差吗?
ATmega32L 发表于 2008-10-18 16:24 | 显示全部楼层

m8的8K是单位是BYTE

m8的8K是单位是字节.
AVR的程序空间单位是字,
8K字节实际上就是4K字空间。

地址刚用到0E3E,就是3648个字,也就是7292字节,
是总程序空间的88%。

另外,ICC是出来名的效率差,
用IAR吧,一般情况下比ICC节省30-40%的代码空间。
 楼主| 独占一江秋 发表于 2008-10-18 16:38 | 显示全部楼层

谢谢ATmega32L

就按你说的办,换IAR。差点考虑换汇编了。其实早就满了,我拼命优化删减了一顿才省出12%,结果程序很难阅读了。
ljxh401 发表于 2008-10-24 14:29 | 显示全部楼层

还是IAR省空间

刚用avr的时候也是用icc 几乎不想用avr 因为程序占用空间太大呃
AIRWILL 发表于 2008-10-30 09:50 | 显示全部楼层

咋就没有人推荐 GCCAVR

效率也不错呀
电子尘埃 发表于 2008-11-4 14:58 | 显示全部楼层

GCCAVR不好用吧

一个产品用GCCAVR装不下,改用IAR就装下了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

252

帖子

0

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