I just saw an Application Note from Atmel about how to compile some code in IAR and I wonder, why would anyone use an external compiler if Atmel already provides the Atmel Studio, with a Visual Studio interface?

I expect that Atmel Studio will have the latest updates, optimizations and codes for all MCUs and CPUs from Atmel, so what's the advantages of using IAR? Is it just for people who are used to work with IAR or to maintain a standard across a big design team perhaps?

  • 4
    \$\begingroup\$ IAR make compilers for a wide range of microcontrollers that all operate in a (presumably) near-identical development environment. Makes it easy to change processors and still work in the same environment. \$\endgroup\$ – markt Aug 29 '13 at 8:14

While being the "manufacturer's own" compiler does have its marginal advantages, for Atmel Studio in this instance, the corresponding disadvantages are many:

  • Less people will see and report bugs, or suggest improvements, than for a product with greater reach, such as IAR - Not just Atmel users buy IAR. So less fixes or enhancements will get released. Here the reference is to Atmel-specific bugs and features, not generic development environment ones.
  • Development investment is more difficult to justify for a business (i.e. Atmel) whose primary business product is not the compiler. Hence, less features released per unit time.
  • For a lot of development houses, the time spent in learning one more new interface is an unjustifiable expense, if an already familiar development platform can be used instead. This reduces the re-training cost to the portions specific to the target hardware architecture alone. IAR is multiplatform, hence a better investment in this sense.
  • IAR specifically has useful features in the team / distributed development space, Microsoft's Visual Studio reserves its own such collaboration features for its enterprise versions, not the standalone version underlying Atmel Studio

Besides this, the question generically applies to all development platforms - Why would two or three or a dozen products commercially survive if there is one already existent that does the job?

For instance, I use Code Composer Studio whenever I have the option, even if I have access to IAR or Atmel Studio - not because CCS is definitively better in some specific way, but because it is what I am most comfortable with. Others similarly swear by their preferred flavor, just as with beverage preferences: "that subtle aroma of peat and that full-bodied richness from the seasoned casks".

  • 2
    \$\begingroup\$ Go with Laphroig. Nothing subtle about that peat. \$\endgroup\$ – Scott Seidman Aug 29 '13 at 11:26
  • \$\begingroup\$ That's what I thought...well, since I am more used with Visual Studio and Eclipse, Atmel Studio feels like home :) \$\endgroup\$ – mFeinstein Aug 29 '13 at 23:48
  • \$\begingroup\$ I wonder how easy it is to move from one IC to another, the pheriferals are different in general so the high level functions provided by the IDE can be hard to adapt, right? \$\endgroup\$ – mFeinstein Aug 29 '13 at 23:49
  • \$\begingroup\$ PS: I used to code in CCS too, but this one haha: ccsinfo.com \$\endgroup\$ – mFeinstein Aug 29 '13 at 23:50

It's very useful to have a non-interactive build process available, which can be automated and integrated into a larger testing and release process.

Also, IAR are "certified" (http://www.iar.com/en/Products/IAR-Embedded-Workbench/Certified-tools-for-functional-safety/) which is a requirement in some markets.


In addition to the reasons enumerated in the other answers, IAR can usually provide smaller output files when compared to avr-gcc (I've heard claims of 10% smaller, though good benchmarks are hard to come by). On a volume production run, the savings from being able to use a smaller processor can far outweigh the cost of the compiler.

  • \$\begingroup\$ I've not actually used IAR in particular, but on many embedded processors it's possible to improve code size considerably if one gives certain "hints" to the compiler (e.g. if variables will often be accessed consecutively, forcing them into the same bank may speed up such consecutive access). I know that the IAR compiler for the PIC allows more control over banking than do some other compilers for that part. Similar things may be true for the AVR. \$\endgroup\$ – supercat Aug 30 '13 at 15:29
  • \$\begingroup\$ Our company moved from Keil with GCC to IAR to fit ever growing firmware to existing HW. IAR reduced code size by 20% which gave us time to prepare new HW while still improving firmware for the existing. (AT91SAM7) \$\endgroup\$ – firda May 29 '18 at 12:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.