The ARM Cortex M3 is primarily considered a microcontroller, which contains elements of both a processor and peripheral interfaces and controllers. However, the Cortex M3 blurs the line between a traditional microcontroller and a standalone processor.
Key Characteristics of the Cortex M3
The Cortex M3 has several key features that give it both processor and controller capabilities:
- High performance 32-bit processor core based on the ARMv7-M architecture, capable of speeds up to 150 MHz
- Memory Protection Unit for robustness and security
- Nested Vectored Interrupt Controller for managing interrupts
- Low gate count logic, small silicon footprint
- Extensive peripheral interfaces including UARTs, SPI, I2C, ADC, DAC, timers, PWM, etc.
- Single cycle IO access for high throughput
- Dedicated debug components like Embedded Trace Macrocell
The combination of the high performance processor core with the integrated peripherals and interfaces gives the Cortex M3 microcontroller-like input/output control capabilities. However, the core itself resembles a standalone application processor in many regards.
Microcontroller or Processor
Given its blend of features, there is an argument to be made for the Cortex M3 being either a processor or a microcontroller:
Microcontroller Characteristics
- Integrates peripheral interfaces like UART, SPI, ADC which are hallmarks of microcontroller SoCs.
- Includes NVIC for interrupt handling typical of embedded systems.
- Focused on real-time responsiveness, low latency, and deterministic execution suitable for control tasks.
- Requires external components like oscillators, memory, and peripherals to function fully.
- Used widely in embedded applications for motor control, industrial automation, IoT nodes, etc.
These qualities make the Cortex M3 well suited for embedded control applications where microcontrollers are commonly used.
Processor Characteristics
- The core itself is a high performance 32-bit RISC processor capable of desktop-class performance.
- Superscalar multi-stage pipeline for instruction execution optimization.
- L1 memory system with cache to boost performance.
- Memory protection capabilities not traditionally found in microcontrollers.
- Can run an RTOS or rich operating system like Linux in some implementations.
- Used in applications like networking equipment and mobile computing requiring a processor.
These attributes allow the Cortex M3 to take on processing-intensive tasks commonly performed by standalone processors.
Blurred Lines
The ARM Cortex M3 blends the capabilities of microcontrollers and application processors in many ways:
- With its ARM Thumb-2 instruction set, the Cortex M3 supports both 32-bit and 16-bit instructions for a balance of high performance and code density.
- The core uses 3-stage pipelining for greater throughput but also includes predictable interrupt latencies for real-time applications.
- Though scales up to 150 MHz speeds, the Cortex M3 has clock gating and power saving modes suited for low power operation.
- Memory Protection Unit improves security, a processor feature, but simple MPU configuration reduces complexity in embedded systems.
The Cortex M3 was designed as an ‘application-class microcontroller’ – bringing higher performance 32-bit computing to the microcontroller world. This makes the lines between microcontroller, microprocessor, and application processor blurred in comparison to older 8-bit and 16-bit microcontroller designs.
Uses Cases
Given its hybrid nature, the Cortex M3 is flexible enough for both control-oriented and processing-intensive use cases:
Control Applications
- Motor control in appliances, robots, industrial machinery
- Industrial automation systems
- Automotive body applications like window, seat, and mirror control
- Embedded control in medical devices
- Drone/UAV flight controllers
- 3D printers
- Smart energy and smart grid systems
The real-time response, peripheral interfaces, and reliability of the Cortex M3 make it suitable for these control applications.
Processing Applications
- Point-of-sale terminals
- Barcode scanners
- Network switches and routers
- Voice over IP and other communication infrastructure
- Automotive infotainment and instrument clusters
- Traffic control and management systems
- AR/VR wearables and headsets
The high performance, memory protection, and OS support of the Cortex M3 enable more complex tasks in these systems.
Cortex M3 Microcontrollers
The Cortex M3 core is widely used in system-on-chip (SoC) microcontrollers from leading vendors like:
- STMicroelectronics – STM32F1, STM32F2 series
- NXP – LPC1700, LPC1800 series
- Microchip – SAM3, SAM4 series
- Texas Instruments – TM4C, MSP432 series
- Cypress – PSoC3, PSoC4, PSoC5 series
These microcontrollers integrate the Cortex M3 core with memories, peripherals, IO interfaces, and other modules making them suitable for embedded applications. Even housed within a microcontroller SoC, the Cortex M3 maintains its processing capabilities.
Performance and Benchmarks
The Cortex M3 offers significantly higher performance than traditional 8-bit and 16-bit microcontroller cores. Some key performance benchmarks:
- DMIPS/MHz rating up to 1.25 (Dhrystone MIPS per MHz), whereas older cores achieve ~0.1 DMIPS/MHz
- CoreMark scores of 100+ at 100 MHz, comparing well against early ARM7 and ARM9 cores
- Drystone 2.1 MIPS at 100 MHz, Wetstone 1.55 MIPS at 100 MHz
- Compared to the earlier ARM7TDMI, the Cortex M3 achieved more than 5X higher CoreMark performance at the same clock speed
This shows the processing capabilities of the Cortex M3 resulting from its 32-bit RISC architecture, even while operating at microcontroller-level clock speeds.
Development Tools and Software
From a software development perspective, the Cortex M3 can be programmed like a microcontroller using toolchains like:
- Arm Keil MDK – C/C++ compiler and IDE tailored for Cortex M cores
- IAR Embedded Workbench – Popular IDE and debugger
- GCC ARM Embedded – GNU toolchain for ARM processors
These toolchains provide compile time optimizations for code density and performance. They enable debugging and analysis as well with IDE integration and JTAG/SWD debug probe support.
The Cortex M3 can also support more advanced RTOSes like FreeRTOS, Azure RTOS, Amazon FreeRTOS as well as embedded Linux distributions. This allows for application development using higher level languages and frameworks associated with these OS platforms.
Conclusion
While traditionally considered a microcontroller, the ARM Cortex M3 defies easy categorization. Its high performance processor core and memory protection capabilities edge toward being an application processor. Yet its tight integration with peripherals and real-time capabilities align with microcontroller use cases. The Cortex M3 brings higher performance 32-bit computing to cost and power constrained embedded applications associated with microcontrollers. In doing so, it blurs the line between microcontrollers and application processors.