I'm using the AVR compiler for my project and it is ok. But some times it behaves very odd , like you just do some changes in data section and you will start getting errors from Mr. compiler. Of course it does not happen all the time except sometimes, anyhow I would still recommend to use this complier. There is another very powerful compiler from Keil
] and yet another popular compiler from CodeVision [
] with cute IDE. To me choosing a compile is very personal choice though the benefits you can get from AVR compiler are very strong. Yeah you can find very active forums here
] to discuss any problem during your project development.
Jack, our compiler is fully functional for 45 days, and 4K code limited for non-commercial use afterward so it's easy for you to do evaluation. We have different versions for different needs. Please feel free to contact me if you have any questions.
The winavr gcc setup is the best. Alot of people have mentioned problems with older versions that are now gone so make sure to get the latest version. Just make sure to turn on optimisation... for some reason it defaults to off. My code size reduce to 20% with no noticable speed drop o_O
The benefits of ImageCraft's compiler compared to winavr are ease of use, especially for relative newbies, although for more experienced developers, some of the "ease of use" features are actually a hindrance. The cost (prices on ImageCraft website, or from Richard) is pretty negligible for professional users. ImageCraft are also renowned for the quality of their support (like avr-gcc, your questions are answered by the people who wrote the compiler - without fighting through support 'bots checking your licensing and your tool versions). However, it can't compete with avr-gcc on compiler features or optimisation.
winavr gives you a pretty complete development kit "out of the box", as does ImageCraft. ImageCraft's is more integrated, which can be a good thing or a bad thing depending on your tastes.
One big difference in the compilers is how they deal with data in flash. Avr-gcc uses standards-compliant but ugly "progmem" macros, while ImageCraft's compiler abuses the "const" keyword. This means that ImageCraft's compiler, for the most part, does what people expect and intend - but fails on some perfectly legitimate code (such as casting to const).
I use avr-gcc myself for most newer projects (actually, I use msp430's more than avr - also supported by both gcc and ImageCraft), but I've a couple of older projects with ImageCraft, and I'd recommend both of them, depending on the user. Both are free to download and try out with real code.
I used WinAVR (GCC port) for my first AVR project at work. It worked well, with no compiler bugs found. A bit awkward storing ascii strings in FLASH though. I was impressed with WinAVR and you can't beat the price.
Eventually we had a serious need for agressive optimizations in order to cram as many features as possible into the AVR. We chose IAR C compiler. It was pricey at about $2000. Worth every penny. Code was crunched down by roughly 30%. The IAR environment, integration with Atmel ICE MKII, and ease of use (EE was a snap!) was top notch.
Only drawback is IAR has an iron fist regarding protecting their property. Required a dongle, and took a week to get the code to enable the dongle. The alternative to a dongle is to tie the compiler to a hard drive serial number. If hard drive crashed, you'd be in bad shape. Loose the dongle and you're hin bad shape. Can't resell IAR due to license restrictions.
Given all the alternatives, I'd pick IAR in a heartbeat.