ARM processors and architectures are widely used in embedded systems and IoT devices. As such, having a good integrated development environment (IDE) is crucial for effectively writing, debugging and deploying code on these platforms. This article will examine some of the most popular IDEs used for ARM development and highlight their key features and differences to help you pick the right one for your needs.
ARM Development Studio
ARM Development Studio, offered by ARM themselves, is a complete IDE tailored specifically for ARM chips and SoCs. It comes in both free and paid versions with the paid ones including advanced debugging, profiling tools and technical support.
Key features of ARM Development Studio:
- Supports C, C++ and assembly programming languages
- Device configuration tools for easy set up of ARM microcontrollers
- Compiler optimizations for code size and performance
- Debugging capabilities like breakpoints, watchpoints and register inspection
- Profiling tools to identify performance bottlenecks
- Simulation functionality to test code without target hardware
- Project migration tools to move code between IDEs
- RTOS awareness and visualization for threads, stacks, mutexes etc.
- Works with most ARM Cortex-M, Cortex-R and Cortex-A processor cores
ARM Development Studio is a good choice for those working exclusively with ARM devices. The customization for ARM architectures makes the development experience streamlined. The built-in project migration tools also facilitate switching between different IDEs.
GNU Arm Embedded Toolchain
The GNU Arm Embedded Toolchain is a free, open source toolchain for ARM devices offered by Arm’s partner Mentor Graphics. It is part of the larger GNU toolchain and is widely used in open source ARM projects.
Key features of GNU Arm Embedded Toolchain:
- Includes GCC ARM compiler, GDB debugger and other GNU tools
- Support for C, C++, Ada, Fortran, Java, Rust and more
- Works with Cortex-M, Cortex-R and Cortex-A cores
- Bare metal and RTOS support
- Pre-built binaries for Mac, Windows, Linux
- Updated frequently with latest tools
- Big open source community for support
- Completely free even for commercial use
The GNU Arm Embedded toolchain is ideal for developers looking for a full-featured but zero cost setup for ARM development. The active open source community ensures robust toolchain maintenance and quick bug fixes. The limitation is the lack of a traditional IDE frontend.
Keil MDK
Keil MDK is a widely used commercial IDE and toolchain for ARM processors and microcontrollers. It offers a 30-day free trial after which a paid license is required.
Key features of Keil MDK:
- Supports C, C++, and assembly programming
- Drag-and-drop interface for easy project creation
- Built-in middleware libraries including USB, TCP/IP, and graphics
- Pack installer for simple MCU peripheral integration
- Advanced debugger with runtime variable monitoring
- Code coverage and profiling tools
- Supports both bare metal and RTOS environments
- Processor expertise for Cortex-M, Cortex-R and Cortex-A cores
- Cloud tools for remote monitoring and diagnosis
Keil MDK is a long time market leader in ARM IDEs combining a user-friendly interface with advanced debugging/profiling capabilities. The integration with middleware libraries can significantly speed up development. The main limitation of Keil MDK is its cost which may be prohibitive for some users.
IAR Embedded Workbench
IAR Embedded Workbench is a commercial IDE and toolchain for ARM and other architectures. Like Keil MDK, it also offers a 30-day evaluation period.
Key features of IAR Embedded Workbench:
- Supports C/C++, assembly, linkage from other languages
- Highly optimized compilers for code density and performance
- Built-in code quality metrics based on industry standards
- Integrated static and runtime code analysis
- Debugging tools like complex breakpoints and data logging
- Framework for unit testing and runtime error detection
- Interface for RTOS and middleware integration
- Options for remote device management
- Processor support for Cortex-M, Cortex-R and Cortex-A
IAR Embedded Workbench competes directly with Keil MDK in capabilities while emphasizing code quality tools. The highly optimized compilers can generate efficient code for constrained ARM devices. Cost is similar to Keil MDK and may limit adoption except for enterprise users.
STM32CubeIDE
STM32CubeIDE is an Eclipse based IDE tailored for STMicroelectronics ARM Cortex-M microcontrollers. It integrates the open source GCC toolchain with ST’s middleware libraries.
Key features of STM32CubeIDE:
- Eclipse IDE provides familiar interface
- Device configuration tools for easy setup
- Open source GCC toolchain under the hood
- STM32 middleware libraries for common peripherals
- Graphical debugging and diagnostic tools
- Code generation and completion capability
- Static code analysis for bugs and vulnerabilities
- Project templating for quick starts
- Supports C and C++ programming
STM32CubeIDE combines Eclipse’s flexibility with STM32-optimized libraries and tools. The tight integration allows fast development times for STM32 projects. The limitation is support for only STM32 ARM cores. The IDE and libraries are free for use.
PlatformIO
PlatformIO is an open source ecosystem for embedded development across multiple hardware platforms including ARM Cortex-M processors. It takes a different approach being a plugin that works with various IDEs.
Key features of PlatformIO:
- Plugin support for Atom, CLion, Eclipse, VSCode, etc.
- Works with 100+ embedded boards and external debuggers
- Multi-platform support for Mac, Windows, Linux
- Open source toolchain with GCC, GDB, mbed, Arduino
- Library manager for hardware abstraction and middleware
- Task runner for build, clean, upload, debugging
- Remote device monitoring and OTA updates
- CLI for CI/CD integration
- Free for individual developers and small teams
PlatformIO brings embedded development to a variety of popular IDEs through its plugin system. The unified environment and library manager make it easy to work across different hardware platforms. The main limitations are lack of a traditional visual IDE and limited technical support.
Choosing the Right IDE
When choosing an ARM development IDE, here are some key considerations:
- Cost – Open source and free options like GNU Arm toolchain reduce cost.
- Technical support – Paid versions often include better documentation and developer assistance.
- Debugging tools – Robust debugging capabilities can significantly boost productivity.
- Optimization – Compiler optimizations like code size and performance impact end products.
- Hardware support – Some IDEs are targeted towards specific ARM chips and boards.
- OS and middleware – Integration with RTOS and libraries speed up projects.
- Programing languages – C and C++ dominate but some IDEs support additional languages.
Evaluating IDEs based on these criteria and developmental needs will help identify the most suitable option. For example, STM32CubeIDE makes sense for STM32 work while Keil MDK shines for sophisticated debugging capabilities. With the complexity of modern IoT projects, getting started quickly with an ARM IDE can improve efficiency and reduce time to market.