ARM Cortex-M Technologies
ARM Cortex-M Technologies
Integrated sleep state support Low latency, low jitter interrupt respo
Multiple power domains No need for assembly programming
Architected software control Interrupt service routines in pure C
Broad 3rd party tools support JTAG or 2-pin Serial Wire Debug
Cortex Microcontroller Software Interface Standard (SWD)connection
(CMSIS) Support for multiple processors
Maximizes software reuse
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. With a reduced learning curve for new microcontroller developers, CMSIS
shortens the time to market for new products.
The architecture provides 8-bits of priority level settings for each programmable interrupt
or exception. To reduce gate count, only parts of these registers are implemented. In the
Cortex-M0, Cortex-M0+ and Cortex-M1 processors (ARMv6-M architecture), 4
programmable levels are provided. In the Cortex-M3 and Cortex-M4 processors
(ARMv7-M architecture), the designs allow from 8 priority levels to 256 levels.
To make the Cortex-M processors easier to use, the Cortex-M processor uses a stack
based exception model. When an exception takes place a number of registers are pushed
on to the stack. These registers are restored to their original values when the exception
handler completes. This allows the exception handlers to be written as normal C functions,
and also reduce the hidden software overhead ofin interrupt processing.
In addition, the Cortex-M processors use a vector table that contains the address of the
function to be executed for eacha particular interrupt handler. On accepting an interrupt,
the processor fetches the address from the vector table. Again, this avoids software
overhead and reduces interrupt latency.
Tail chaining – If another exception is pending when an ISR exits, the processor does not
restore all saved registers from the stack and instead moves on to the next ISR. This
reduces the latency when switching from one exception handler to another.
Stack pop pre-emption – If another exception occurs during the unstacking process of
an exception, the processor abandons the stack Pop 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.
Late arrival – If a higher priority interrupt arrives during the stacking of a lower priority
interrupt, the processor fetches a new vector address and processes the higher priority
interrupt first.
With these optimizations, the interrupt overhead reduces as the interrupt loading
increases, allowing high interrupt processing throughput in embedded systems.