In terms of ARM development, many software developers spend a major part of the work week in front of their ARM development tools; primarily the IDE with its integrated C/C++ compiler and debugger. How does a modern ARM IDE compare to what embedded developers were using a few years ago?
ARM development: Now vs. years ago
The compiler and linker build system
Take the Serial Wire Viewer (SWV/SWD/ITM) event- and data tracing technologies for example. With SWV, debuggers can offer the following useful features:
- Profiling (execution time statistics)
- Execution time measurement (of an arbitrary code block)
- Interrupt and Exception event tracing
- Live variable watch
- Data access history log
- Oscilloscope-styled data plot charts
- Printf() redirection to a debugger console
- Software tracing
Team collaboration and code management tools
Isolated islands vs. one unified ecosystem
- Migration across different CPU vendors will be easier (second source)
- Device prices go down
- Less training across different CPU vendors and tools
- Tools and middleware can be used in different projects, across different CPU families
- Tool and middleware vendors will get better tools at lower cost
Proprietary lock-in vs. open standards
- CMSIS-DRIVER defines a generic peripheral access API standard – i.e. for device drivers or hardware abstraction layers.
- CMSIS-RTOS is a standardized set of RTOS API’s with the aim of making it even easier to move a project from one RTOS to another.
- CMSIS-PACK is a new standard for distribution of embedded software components like board support packages, device driver libraries, or middleware. CMSIS-PACK includes features for component discovery, dependency management, download, and installation.
- CMSIS-DSP is a common library of mathematical and digital signal processing functions for Cortex-M devices.
- CMSIS-SVD provides a unified mechanism to provide device information for embedded tools; for example, the data necessary to populate the SFR register view in the debugger.
- CMSIS-DAP is a standardized debug port firmware that can be used to build a debug probe using a Cortex-M device.