|
楼主 |
发表于 2019-10-20 20:55:43
|
显示全部楼层
感谢提醒,winavr的gcc版本很老了,是4.3.3,多年未更新了。
换了新版本的编译器好多了,版本是3.6.2,gcc版本是5.4.0从这里下载的:
https://www.microchip.com/mplab/ ... lchains-c-compilers
Arduino IDE可能用的也是这个版本。
我用的是avr studio4.19,手头上只有串口的那种jtagice,所以不想换新版本的ide。
avr studio4.19用新版本的编译器有几个地方需要注意,我也写在这里吧:
1.如果有#include <avr\pgmspace.h>,需要定义#define __PROG_TYPES_COMPAT__
2.编译选项-gdwarf-2要改为-gstrict-dwarf -gpubnames,不然点调试时程序会直接崩溃。
新版本编译器化好很多,同样的程序,同样是-Os,结果差别很大:
avr8-gnu-toolchain-3.6.2.1759-win32.any.x86编译结果:
AVR Memory Usage
----------------
Device: atmega16
Program: 16004 bytes (97.7% Full)
(.text + .data + .bootloader)
Data: 877 bytes (85.6% Full)
(.data + .bss + .noinit)
===================================================
WinAVR-20100110编译结果:
AVR Memory Usage
----------------
Device: atmega16
Program: 17256 bytes (105.3% Full)
(.text + .data + .bootloader)
Data: 887 bytes (86.6% Full)
(.data + .bss + .noinit)
|
|