avr-gcc 4.5.1 and avr-libc 1.7.0 for windows
|Deprecated! This has now been superceded by gcc-4.7.0 and avr-libc 1.8.0. Click here to go to my article that describes how to upgrade.|
The version of gcc included with WinAVR-20100110 is 4.3.3. If you’d like to update to avr-gcc 4.5.1 with avr-libc 1.7.0 then you’ve come to the right place.
Supported MCU names
Device support is considerably enhanced over 4.3.3. I have applied the latest patches to ensure that you get access to all these MCU’s.
AVR options: -mmcu=[avr-name] select microcontroller variant [avr-name] can be: avr1 - classic AVR core without data RAM avr2 - classic AVR core with up to 8K program memory avr25 - classic AVR core with up to 8K program memory plus the MOVW instruction avr3 - classic AVR core with up to 64K program memory avr31 - classic AVR core with up to 128K program memory avr35 - classic AVR core with up to 64K program memory plus the MOVW instruction avr4 - enhanced AVR core with up to 8K program memory avr5 - enhanced AVR core with up to 64K program memory avr51 - enhanced AVR core with up to 128K program memory avr6 - enhanced AVR core with up to 256K program memory or immediate microcontroller name. -mall-opcodes accept all AVR opcodes, even if not supported by MCU -mno-skip-bug disable warnings for skipping two-word instructions (default for avr4, avr5) -mno-wrap reject rjmp/rcall instructions with 8K wrap-around (default for avr3, avr5) Known MCU names: avr1 avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 at90s1200 attiny11 attiny12 attiny15 attiny28 at90s2313 at90s2323 at90s2333 at90s2343 attiny22 attiny26 at90s4414 at90s4433 at90s4434 at90s8515 at90c8534 at90s8535 attiny13 attiny13a attiny2313 attiny2313a attiny24 attiny24a attiny4313 attiny44 attiny44a attiny84 attiny25 attiny45 attiny85 attiny261 attiny261a attiny461 attiny861 attiny861a attiny87 attiny43u attiny48 attiny88 at86rf401 ata6289 at43usb355 at76c711 atmega103 at43usb320 attiny167 attiny327 at90usb82 at90usb162 atmega8u2 atmega16u2 atmega32u2 atmega8 atmega48 atmega48a atmega48p atmega88 atmega88a atmega88p atmega88pa atmega8515 atmega8535 atmega8hva atmega4hvd atmega8hvd atmega8c1 atmega8m1 at90pwm1 at90pwm2 at90pwm2b at90pwm3 at90pwm3b at90pwm81 atmega16 atmega16a atmega161 atmega162 atmega163 atmega164a atmega164p atmega165 atmega165p atmega168 atmega168a atmega168p atmega169 atmega169a atmega169p atmega169pa atmega16hva atmega16hvb atmega16c1 atmega32 atmega323 atmega324a atmega324p atmega324pa atmega325 atmega325p atmega3250 atmega3250p atmega328 atmega328p atmega329 atmega329p atmega329pa atmega3290 atmega3290p atmega32hvb atmega406 atmega64 atmega640 atmega644 atmega644a atmega644p atmega644pa atmega645 atmega645a atmega645p atmega649 atmega649p atmega649a atmega6450 atmega6450a atmega6450p atmega6490 atmega6490a atmega6490p atmega64hve atmega16hva atmega16hva2 atmega16hvb atmega32hvb at90can32 at90can64 at90pwm216 at90pwm316 atmega32c1 atmega64c1 atmega16m1 atmega32m1 atmega64m1 atmega16u4 atmega32u4 atmega32u6 at90usb646 at90usb647 at90scr100 at94k atmega128 atmega1280 atmega1281 atmega1284p atmega128rfa1 at90can128 at90usb1286 at90usb1287 m3000f m3000s m3001b atmega2560 atmega2561
Bug fix #29141 is patched in this release. The presence of this fix is one of the steps necessary to fixing the global constructor bug in gcc.
This gcc suite was compiled using mingw on Windows 7 x64. The binaries are 32-bit standalone Win32 executables, that is they do not depend on any other package being installed on your computer.
I have removed the warning “only initialized variables can be placed into program memory area” from this compilation of avr-gcc. Previously you would get this whenever you use the PSTR() macro to place strings into flash memory. It was highly annoying and totally bogus so it’s gone. Now you can compile your projects with the strict -Werror -Wall settings.
Click here to go to the downloads page. Download and install the setup package. Just in case you miss it, there is a warning on the setup package welcome screen that discourages you from choosing an installation directory that has spaces in it, such as Program Files. Please heed this warning, Unix tools such as gcc do not like directory or file names that contain spaces.
Configuring Eclipse to use your new installation
It’s simple to get Eclipse to use the new installation. You just need to change two configuration items. Select Window->Preferences and then AVR->Paths from the options on the left. Highlight “AVR-GCC” from the main list in the center and select Edit…. You will get a screen that looks like this one.
Use the Browse… button or type in the location of the bin directory that contains avr-gcc.exe. It is directly below your installation directory so if you installed to the default of c:\avr-gcc4.5.1 then you need to enter c:\avr-gcc4.5.1\bin.
Go back and do the same with the AVR Header Files path. This time you need to point it to the avr\include directory. So if you accepted the default installation location then your correct setting is c:\avr-gcc\4.5.1\avr\include. When you’re done, you would have settings that look similar to this:
Click image to magnify it.
Finally you need to make a small change to the toolchain in Eclipse. The final build step displays the size of your hex file so you can keep an eye on how much flash memory you are consuming. You need to change the output format because the default avr format is not supported.
Right-click on any AVR project in Eclipse and choose Properties or press Alt-Enter. Expand C/C++ Build and choose Settings. Click on Print Size -> General down at the bottom and change the Size Format to be Berkeley Format. It looks like this:
Click image to magnify it.
Configuring for non-Eclipse users
WinAVR will add it’s bin directory to your system PATH environment variable. Use the Windows control panel to change this to the bin directory in your new installation. If your makefiles set up INCLUDE and LIB directories then you’ll need to make similar changes there.
The official GNU documentation is included in the html subdirectory. The setup program will create shortcuts in your start menu that point to these.