As the embedded industry now standardize on the GNU C/C++ tools (gcc compiler and gdb debugger) and the ECLIPSE IDE, more tool options have become available in the last year or two. In particular, free or low-cost Eclipse/GNU tools are widely available on the market for Cortex-M devices like STM32, Kinetis and LPC. Also available are high-end Eclipse/GNU tools like Atollic TrueSTUDIO, supporting the same devices with many commercial add-ons. And so, which one to choose?
A question is if the free tools really are free, and if they offer what you need? Factors to consider are out-of-the-box experience, quality and support options, as well as productivity and functionality, and managing project risks. Different development teams may well have different priorities and answer to these questions. Let’s see what factors there are to consider.
First, there are “soft” factors, involving questions like cost, productivity, quality and risk:
- What is the cost of project failure or delay? Does senior management accept commercial risk, in return for the investment saved on tool purchase?
- How do you value development team productivity (and hence project delivery time and cost)? I.e. what is the overall cost for less capable tools versus the upfront investment in a more advanced tool reducing development time and improving quality?
- Do you prefer a commercial quality product that gets the job done, or is it more important with a free or low-cost solution that may or may not work as intended?
- How vulnerable are you to project delays?
- Are powerful tool capabilities or short learning curve and ease of use of primary interest?
- Do you want a tool that only fits the needs right now, or do you want to future proof yourself with a tool that you can grow with as your needs increase over time?
- Do you need technical support and perhaps also training options, providing a safety net in case you run into problems?
Additionally, there are more “technical” factors, including features and capabilities you might expect or require for an efficiently and successfully run development project:
- Out-of-the-box experience and width of target support (CPU cores, microcontroller devices such as STM32 or Kinetis, evaluation boards, JTAG probes, example projects, etc.)
- Do you just need a basic edit/compile/debug IDE, or are you looking for a more complete embedded development platform, with features for advanced debugging? Very useful debugging capabilities usually not found in free tools include:
- Real-time updated “variable watch” view
- Hard fault crash analysis
- Event/data/software tracing using Serial Wire Viewer (SWV/SWO)
- Performance profiling
- printf() redirection using ITM
- Dual-core debugging
- Kernel aware RTOS debugging (FreeRTOS, Micrium uC/OS, Segger embOS, ExpressLogic ThreadX, MQX, etc.)
- SFR viewer
- Do you need other capabilities, like software quality features (MISRA-C checking or code complexity analysis), team collaboration (version control and bug database GUI integration), etc.?
- What about integration with related tools, such as STM32CubeMX or Freescale ProcessorExpert device driver generators, or different RTOS and middleware vendors?
- Do you need good integration with debug probes like SEGGER J-Link, ST-LINK, P&E Micro, etc.?
All teams may have different take on what they need and what is most important for them, but all teams (and in particular, the engineering manager responsible for commercial project risks) ought to consider them carefully. Small cost savings can end up in considerable extra costs, or even project failure. Who is held responsible if the project fails due to poor tool selection? Using quality assured tools with professional support ensures good sleep at night!
In my opinion, free or low-cost tools fit well for hobbyist and student projects, as well as some very small commercial projects with low commercial stakes. But for commercial projects of financial importance, an engineering manager need to mitigate project risks by choosing a high-quality tool with full technical support. Managers may value advanced tool capabilities differently, but it is my belief that the cost of commercial tools are easily compensated by reduced development time and project risk, compared to less capable free or low-cost tools.
In case you are interested to learn more on things to consider when using GNU gcc/gdb tools and the ECLIPSE IDE with ARM Cortex devices, read this whitepaper:
You may also want to read this white paper on tools and techniques for ARM Cortex development: