Login

Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.

Cortex-M0+ Processor

Cortex-M0+ Processor Image (View Larger Cortex-M0+ Processor Image)
The ARM Cortex™-M0+ processor is the most energy efficient ARM processor available. It builds on the very successful Cortex-M0 processor, retaining full instruction set and tool compatibility, while further reducing energy consumption and increasing performance. Along with the Cortex-M0 processor, the exceptionally small silicon area, low power and minimal code footprint of these processors enable developers to achieve 32-bit performance at an 8-bit price point, bypassing the step to 16-bit devices. The Cortex-M0+ processor comes with a wide selection of options to provide flexible development.
 


The most energy efficient ARM processor

An optimized architecture with a core pipeline of just two stages, enables the Cortex-M0+ processor to achieve a power consumption of just 11.2uW/MHz (90LP process, minimal configuration), while raising the performance to 2.15 CoreMark/MHz.  

Simplicity

The Cortex-M0+ processor keeps the same 56 instructions of the Cortex-M0 processor, enabling simple and quick development. The Thumb® instruction set offers an unrivaled code-density while providing access to 32-bit computation performance. The combination of these features make the Cortex-M0+ processor a natural and cost effective successor to 8/16-bit devices in a wide variety of applications, while retaining tool and binary upwards compatibility with the feature-rich Cortex-M3 and Cortex-M4 processors.  

Versatility

Each application is different and has its specific needs. To enable our Partners to design solutions fitting the widest range of applications, the Cortex-M0+ processor offers a wide choice of options. Many of these, such as the Memory Protection Unit and the re-locatable vector-table, are common to the Cortex-M3 and Cortex-M4 processors; others are specifically for this new processor, namely the single-cycle I/O interface for faster control and the Micro Trace Buffer for enhanced debug.


ARM Cortex-M0+ Features
ISA SupportThumb® / Thumb-2 subset
Pipeline2 stage
Performance Efficiency2.15 CoreMarks/MHz* - 0.93 to 1.08 DMIPS/MHz**
Memory ProtectionOptional 8 region MPU with sub regions and background region
InterruptsNon-maskable Interrupt (NMI) + 1 to 32 physical interrupts
Sleep ModesIntegrated WFI and WFE Instructions and Sleep On Exit capability
Sleep & Deep Sleep Signals
Optional Retention Mode with ARM Power Management Kit
Bit ManipulationBit banding region can be implemented with Cortex-M System Design Kit
Enhanced InstructionsHardware single-cycle (32x32) multiply option
DebugOptional JTAG & Serial-Wire Debug Ports Up to 4 Breakpoints and 2 Watchpoints
TraceOptional Micro Trace Buffer

* CoreMark: 1.0 : 21.46 /ARM C Compiler 5.03 [Build 24] -O3 --loop_optimization_level=2   -Otime  -DMICROLIB --library_type=microlib  --cpu=cortex-m0 / FPGA platform, Code in SRAM - Data in SRAM, memory and CPU clocked @10MHz

** The lower result is with inlining turned off (as per dhrystone recommendations), the higher result is with inlining turned on (as reported for other processor architectures). Dhrystone v2.1.


ARM Cortex-M0+ Implementation Data***
180ULL (7-track, typical 1.8v, 25C)90LP (7-track, typical 1.2v, 25C)40G (9-track, typical 0.9v, 25C)
Dynamic Power52 µW/MHz11 µW/MHz (9µA/MHz)3 µW/MHz
Floorplanned Area0.13 mm20.04 mm2>0.01 mm2

*** Base usable configuration includes 1 IRQ + NMI, excludes debug


ARM Cortex-M technologies

Each Cortex-M series processor delivers specific benefits, all underpinned by fundamental technologies that make Cortex-M processors ideal for a broad range of embedded applications.

RISC processor coreThumb-2® technology
  • High performance 32-bit CPU
  • Deterministic operation
  • Low latency 2-stage pipeline
  • Optimal blend of 16/32-bit instructions
  • 30% smaller code size than 8-bit devices
  • No compromise on performance
Low power modesNested Vectored Interrupt Controller (NVIC)
  • Integrated sleep state support
  • Multiple power domains
  • Architected software control
  • Low latency, low jitter interrupt response
  • No need for assembly programming
  • Interrupt service routines in pure C
Tools and RTOS supportCoreSight debug and trace
  • Broad 3rd party tools support
  • Cortex Microcontroller Software Interface Standard (CMSIS)
  • Maximizes software effort reuse
  • JTAG or 2-pin Serial Wire Debug (SWD) connection
  • Support for multiple processors
  • Support for trace

CMSIS

The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware, simplifying software re-use. CMSIS reduces the learning curve for new microcontroller developers, shortening the time to market for new products.

In-depth: Nested Vectored Interrupt Controller (NVIC)

The NVIC is an integral part of Cortex-M processors and provides the processors' outstanding interrupt handling abilities. The Cortex-M processor uses a vector table that contains the address of the function to be executed for a particular interrupt handler. On accepting an interrupt, the processor fetches the address from the vector table.

To reduce gate count and enhance system flexibility, the Cortex-M processor uses a stack based exception model. When an exception takes place, the Cortex-M processor pushes critical general-purpose onto the stack. Once the stacking and instruction fetch are completed, the interrupt service routine or fault handler is executed, followed by the automatic restoration of the registers to enable the interrupted program to resume normal execution. This approach removes the need to write assembler wrappers that are required to perform stack manipulation for traditional C-based interrupt service routines, making application development significantly easier. The NVIC supports nesting (stacking) of interrupts, allowing earlier servicing of an interrupt by exerting higher priority.

Complete response to interrupts in hardware

The interrupt response of Cortex-M series processor is the number of cycles from interrupt signal to execution of interrupt service routine. It includes:

  • Detecting the interrupt
  • Optimal handling of back-to-back or late arriving interrupts (see below)
  • Fetching the vector address
  • Stacking corruptible registers
  • Branching to the interrupt handler

These are tasks that are performed in hardware and included in the interrupt response cycle time quoted for Cortex-M processors. In many other architectures these tasks must be performed in a software in the interrupt handler, introducing latency and complexity.

Tail chaining in the NVIC

Back to back interrupt  time diagram

In the case of back-to-back interrupts, traditional systems would repeat the complete state save and restore cycle twice, resulting in higher latency. The Cortex-M processors simplify moving between active and pending interrupts by implementing tail-chaining technology in the NVIC hardware. In fewer cycles than a software implementation, the processor state is saved automatically on interrupt entry and restored on interrupt exit. This significantly enhances performance in low MHz systems.

Response of the NVIC to late arrival of higher priority interrupts

Late Interrupt arrival  time diagram

In case of the late arrival of a higher priority interrupt during the execution of the stack Push for a previous interrupt, the NVIC immediately fetches a new vector address to service the pending interrupt, as shown above. The Cortex-M NVIC provides deterministic response to these possibilities with support for late arrival and pre-emption.

Stack pop pre-emption by the NVIC

Preemption time diagram

Similarly, the NVIC abandons a stack Pop if an exception arrives and services the new interrupt immediately as shown above. By pre-empting and switching to the second interrupt without completing the state restore and save, the NVIC achieves lower latency in a deterministic manner.


ARM Cortex-M code size advantage explained

ARM Cortex-M processors offer superior code density to 8-bit and 16-bit architectures. This has significant advantages in terms of reduced memory requirements and maximizing the usage of precious on-chip Flash memory. In this section we examine the reasons for this advantage.

Instruction width

It is a common misconception that 8-bit microcontrollers use 8-bit instructions and ARM Cortex-M processor-based microcontrollers use 32-bit instructions. In reality for example, the PIC18 and PIC16 instruction sizes are 16-bit and 14-bit respectively. For the 8051 architecture, although some instructions are 1 byte long, many others are 2 or 3 bytes long. The same also applies to 16-bit architectures, where some instructions can take 6 bytes or more of memory.

The ARM Cortex-M3 and Cortex-M0 processors utilize the ARM Thumb®-2 technology which provides excellent code density. With Thumb-2 technology, the Cortex-M processors support a fundamental base of 16-bit Thumb instructions, extended to include more powerful 32-bit instructions. In many cases a C compiler will use the 16-bit version of the instruction unless the operation can be carried out more efficiently using a 32-bit version.

Instruction efficiency

This picture is not complete without also considering that ARM Cortex-M processor instructions are more powerful. There are many circumstances where a single Thumb instruction equates to several 8/16-bit microcontroller instructions; this means that Cortex-M devices have smaller code and achieve the same task at lower bus speed.

Comparing 16-bit multiply operations across processor architectures


8-bit example16-bit exampleARM Cortex-M

MOV A, XL ; 2 bytes

MOV B, YL ; 3 bytes

MUL AB; 1 byte

MOV R0, A; 1 byte

MOV R1, B; 3 bytes

MOV A, XL ; 2 bytes

MOV B, YH ; 3 bytes

MUL AB; 1 byte

ADD A, R1; 1 byte

MOV R1, A; 1 byte

MOV A, B ; 2 bytes

ADDC A, #0 ; 2 bytes

MOV R2, A; 1 byte

MOV A, XH ; 2 bytes

MOV B, YL ; 3 bytes

MUL AB; 1 byte

ADD A, R1; 1 byte

MOV R1, A; 1 byte

MOV A, B ; 2 bytes

ADDC A, R2 ; 1 bytes

MOV R2, A; 1 byte

MOV A, XH ; 2 bytes

MOV B, YH ; 3 bytes

MUL AB; 1 byte

ADD A, R2; 1 byte

MOV R2, A; 1 byte

MOV A, B ; 2 bytes

ADDC A, #0 ; 2 bytes

MOV R3, A; 1 byte

MOV R4,&0130h

MOV R5,&0138h

MOV SumLo,R6

MOV SumHi,R7

(Operands are moved to and from a memory mapped hardware multiply unit)

MULS r0,r1,r0

N.B. The Cortex-M multiply in fact performs a 32-bit multiply, here we assume r0 and r1 contain 16-bit data.

Compact data footprint

It is important to note that Cortex-M processors have support for 8-bit and 16-bit data tranfers, making efficient use of data memory. This means programmers can continue to use the same data-types as they have in 8/16-bit targeted software.

Energy efficiency advantage

The demand for ever lower-cost products with increasing connectivity (e.g. USB, Bluetooth, IEEE 802.15) and sophisticated analog sensors (e.g. accelerometers, touch screens) has resulted in the need to more tightly integrate analog devices with digital functionality to pre-process and communicate data. Most 8-bit devices do not offer the performance to sustain these tasks without significant increases in MHz and therefore power, and so embedded developers are required to look for alternative devices with more advanced processor technology. The 16-bit devices have previously been used to address energy efficiency concerns in microcontroller applications. However, the relative performance inefficiencies of 16-bit devices mean they will generally require a longer active duty cycle or higher clock frequency to accomplish the same task as a 32-bit device.

Ease of software development

Software development for ARM Cortex processor-based microcontrollers can be much easier than for 8-bit microcontroller products. Not only is the Cortex processor fully C programmable, it also comes with various enhanced debug features to help locating problems in software. There are also plenty of examples and tutorials on the internet, including many from ARM processor-based MCU vendor's websites, alongside any additional resources included in MCU development kits.


Resources

In this section, you will find useful documentation, white papers and tutorials on ARM Cortex-M processors and related technologies.

For further information including information on development tools, software, boards, and a device database, CMSIS and mBed visit the ARM Embedded Microsite

Books

Definitive Guide to the ARM Cortex-M0
A comprehensive guide to programming and implementing the groundbreaking ARM Cortex-M0 processor

Definitive Guide to the ARM Cortex-M3
A comprehensive guide to programming and implementing the groundbreaking ARM Cortex-M3 processor

 

Documentation for Cortex-M device users

Software development tools for Cortex-M device users

Find Cortex-M based microcontrollers

Universities

Related User Guides and App Notes

DesignStart for Processor IP

 
» 
Powered 19480
Go Left
Go Right

Maximise