The ARM Cortex-M0 processor is a 32-bit reduced instruction set computing (RISC) processor designed for microcontroller applications. It is one of the most energy-efficient processors in the Cortex-M series and is intended for use in embedded systems that require minimal power consumption, such as wearable devices, sensors, small Internet of Things (IoT) nodes, and other battery-powered applications.
Key Features of Cortex-M0 Processor
Some of the key features of the Cortex-M0 processor are:
- 32-bit RISC architecture with Thumb-2 instruction set
- Up to 48MHz clock frequency
- As low as 9.2 CoreMark/MHz efficiency performance
- Single-cycle GPIO for fast IO operations
- Nested Vectored Interrupt Controller (NVIC)
- Wake up interrupt controller (WIC)
- Memory Protection Unit (MPU)
- ARMv6-M Thumb instruction set
- 3-stage pipeline
- Serial Wire Debug (SWD) interface
- Serial Wire Viewer (SWV) trace support
- Integrated sleep modes and wake up interrupt controller
- As low as 30 μA/MHz current consumption in active mode
The Cortex-M0 processor has a 32-bit RISC architecture built on the ARMv6-M architecture profile. It uses the Thumb-2 instruction set which provides a balance between code size and performance. The Thumb-2 instruction set has both 16-bit and 32-bit instructions to optimize code density without compromising performance.
The CPU core has a 3-stage pipeline – Fetch, Decode and Execute. This enables efficient execution of instructions. It has an integrated nested vectored interrupt controller (NVIC) to handle interrupts and exceptions in an efficient manner. The NVIC allows low latency exception and interrupt handling.
For debug operation, Cortex-M0 supports ARM’s Serial Wire Debug (SWD) interface and Serial Wire Viewer (SWV) for trace. This enables non-intrusive debugging of the software program flow. Breakpoints and watchpoints are supported for debugging.
The processor contains several power saving features such as an integrated sleep mode with automatic wake up using aWake Up Interrupt Controller (WIC). This enables the system to conserve power when idle. Dynamic voltage scaling and clock gating techniques are employed to minimize power consumption.
The Cortex-M0 processor is designed as an ultra low power processor with efficient execution performance. It can achieve up to 48 MHz max clock frequency in a TSMC 90nm process node. The reported max Dhrystone 2.1 MIPS performance is 25 DMIPS at 1.25V and 39 DMIPS at 1.8V while consuming only 30μA/MHz of active current.
According to ARM, the Cortex-M0 processor can execute 9.2 CoreMark/MHz. The CoreMark benchmark measures the overall CPU performance. So at max clock frequency, it can achieve up to 442 CoreMark score.
The high code density Thumb-2 instruction set results in excellent performance per MHz. The single cycle fast I/O allows 50MHz GPIO toggle rates. With just 27,000 gates the Cortex-M0 processor delivers significant performance in a small silicon footprint.
The Cortex-M0 processor is designed for embedded applications requiring minimal power consumption. Its high code density and low power features make it well suited for following applications:
- Internet of Things (IoT) devices
- Wearable electronics
- Sensor hubs
- Industrial automation
- Medical devices
- Motor control
- Home appliances
- Low power radio technologies like Bluetooth Low Energy, Zigbee etc.
The Cortex-M0 can be used in cost-sensitive and size constrained embedded applications like wireless sensors, fitness bands, smart watches, wireless mice/keyboards and other battery operated IoT endpoints. Its low power sleep modes allow these devices to operate for years on small batteries.
Development Tools and Software
ARM offers a complete ecosystem for Cortex-M0 processor based development. This includes:
- Cortex Microcontroller Software Interface Standard (CMSIS) for simplified software development across multiple vendors.
- Compiler toolchains for ARM GCC, IAR and Keil MDK.
- Debug probes for programming and debugging.
- Simulators for model based development.
- Evaluation boards to prototype Cortex-M0 based designs.
- OS support such as FreeRTOS, Micrium uC/OS, Amazon FreeRTOS etc.
- Extensive documentation and training material.
The Cortex Microcontroller Software Interface Standard (CMSIS) provides a common software framework across multiple Cortex-M vendors. It enables easy software re-use and portability across different microcontroller platforms. CMSIS compliant device support packs are available from various silicon vendors.
The Cortex-M0 processor can be programmed using GCC, IAR or Keil toolchains. Debug probes like Jlink, Ulink2, ST-Link and JTAG-ICE are used for programming flash memory and debugging. ARM offers HDK evaluation boards for early software development.
The Cortex-M0 processor is a synthesizable CPU IP core which is licensed to various semiconductor vendors. It is available in different variants like Cortex-M0+, M0+BE (big-endian) etc. Some of the popular vendor implementations are:
- Microchip SAMD21 Cortex-M0+ based MCUs
- NXP LPC11Cxx Cortex-M0 based MCUs
- STM32 F0 series Cortex-M0 based MCUs
- TI MSP430FRxx FRAM MCUs with Cortex-M0+ core
- Silicon Labs EFM32 Cortex-M0+ based MCUs
- Cypress PSoC4000S Cortex-M0+ based MCUs
These microcontrollers are available in different memory sizes, peripherals and packages. So designers have the flexibility to choose the appropriate Cortex-M0 based MCU for their application needs.
The Cortex-M0 processor delivers an optimal combination of low power, performance and small silicon area. Its power saving features and tiny gate count makes it well suited for size and power constrained embedded devices. The availability of a complete ecosystem enables faster time-to-market for Cortex-M0 based designs.