Cortex-M resources

Over the years Arm has published many documents, papers, blogs about Cortex-M processors. Many of them are really useful, but finding them could be harder than catching Pokémon! :-)  Here is a list of links that might be useful to most Cortex-M developers (note: this also contains a few links to external content):

Processor documentation

There are three types of document listed here:

  • Device Generic User Guides – covering programmer’s model and instruction set.
  • Technical Reference Manual (TRM) – processor features and specification.
  • Software Developers Errata Notice (SDEN) (require registration on silver.arm.com)
Processors Devices Generic User Guide Technical Reference Manual (TRM) SDEN
Cortex-M0 r0p0 r0p0 NA
Cortex-M0+

r0p0

r0p1

r0p0

r0p1

r0

Cortex-M1  NA

r0p1

r1p0

NA

Cortex-M3 r2p1

r1p1

r2p0

r2p1

r2

Cortex-M4 r0p1

r0p0 (update)

r0p1

r0

Cortex-M7

r1p0

r1p1

r0p2

r1p0

r1p1

r1

r0

Cortex-M23 Coming soon r1p0 NA
Cortex-M33 r0p2 r0p2 NA
Cortex-M35P Coming soon Coming early 2019 NA

 

Architecture Reference Manuals

Document Applies to Links
Armv6-M Architecture Reference Manual Cortex-M0, Cortex-M0+, Cortex-M1 link  
Armv7-M Architecture Reference Manual Cortex-M3, Cortex-M4, Cortex-M7 link
Armv8-M Architecture Reference Manual Cortex-M23, Cortex-M33, Cortex-M35P link

 

Introductory information

Document Applies to Links
Getting started with Arm Microcontroller Resources All Cortex processors link
Cortex-M for beginners 2016 Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7 link
Cortex-M for beginners 2017 Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-M35P English, Chinese
Armv8-M architecture Armv8-M, Cortex-M23, Cortex-M33, Cortex-M35P link (Additional document links for Armv8-M can be found here).
Cortex-M Learning Platform All Cortex-M processors link
Arm videos on YouTube Arm technologies link
Cortex-M product page on developer.arm.com Overview of Cortex-M processor products link
M-profile architecture Architecture for Cortex-M link
CMSIS Arm technologies

CMSIS page on Arm website

CMSIS page on Keil website (detail documentation)

CMSIS 4 on Github

CMSIS 5 on Github  

Arm documentation (infocenter) Arm documentation link
Arm application notes on www.keil.com Keil development tool link
Training courses from Arm Training courses link
CMSIS-NN Arm technologies

Whitepaper: Efficient Neural Network Kernels for Arm Cortex-M CPUs

Blog: New CMSIS-NN Neural Network Kernels Boost Efficiency in Microcontrollers by ~5x

CMSIS-NN on Github

Whitepaper: Keyword Spotting on Microcontrollers

Blog: How to Achieve High-Accuracy Keyword Spotting on Cortex-M Processor

Keyword Spotting on Github

ArmNN page on Arm website

Blog: Arm NN: Build and Run ML Apps Seamlessly on Mobile and Embedded Devices

 

Technical papers and articles

Document Topics / applies to Links
Optimizing a processor design for low power control applications Cortex-M0+ link
Exploring the Arm Cortex-M7 Core: Providing Adaptability for the Internet of Tomorrow Cortex-M7 link
Easing development for next-generation connected embedded intelligence Cortex-M7 English, Chinese(中文) Portuguese
How to Optimize Usage of SAM S70/E70/V7x Architecture (Atmel) Cortex-M7 link
Armv8-M Architecture Technical Overview Armv8-M and links to various Armv8-M related resources link
EW2016 – The Next Steps in the Evolution of Embedded Processors for the Smart Connected Era Armv8-M architecture link
Security principles for TrustZone for Armv8-M TrustZone for Armv8-M (webinar) link
TrustZone for Armv8-M (community page) TrustZone for Armv8-M (community page) link
EW2017 - High-End Security Features for Low-End Microcontrollers TrustZone for Armv8-M deployment in mbedOS link
Armv8-M architecture: what's new for developers - YouTube video Armv8-M architecture: what's new for developers - YouTube video link
Cortex-M23 and Cortex-M33 - Security foundation for billions of devices Cortex-M23 and Cortex-M33 launch link
TrustZone for Armv8-M resource Links to various Armv8-M document link
Cortex-M in DSP applications? Why not?! Cortex-M4 and Cortex-M7 in DSP applications link
The DSP capabilities of Arm Cortex-M4 and Cortex-M7 Processors Cortex-M4 and Cortex-M7 in DSP applications link
Machine learning in low-power devices brings sound recognition to the smart home market Machine Learning and AI in Cortex processors, audio applications link
The Power of Speech: Supporting Voice-Driven Commands in Small, Low-Power Microcontrollers Voice command control, key-word spotting pdf, blog
New CMSIS-NN Neural Network Kernels Boost Efficiency in Microcontrollers by ~5x CMSIS-NN (Neural network on Cortex-M) link 
Using TrustZone on Armv8-M Keil MDK software development with TrustZone for Armv8-M link
Using CMSIS-DSP with Keil RTX5 Example of using CMSIS-DSP library in an RTOS link
Low power topics in “The definitive guide to Arm Cortex-M0/M0+” Low power applications

Low-power states

Wake-up operation

Ultra-Low Power Designs

Low power requirements

Benchmarking low power devices

Low power benchmark setup

The basics of low-power programming on the Cortex-M0 Low power applications link
Efficient Interrupts on Cortex-M Microcontrollers Interrupt handling link
A Beginner’s Guide on Interrupt Latency – and Interrupt Latency of the Arm Cortex-M Processors Interrupt latency link
Using Cortex-M3 and Cortex-M4 Fault Excpetions HardFault debugging link
Debugging a Cortex-M0 HardFault (forum post) HardFault debugging link
How much stack memory do I need for my Arm Cortex-M Applications? Stack memory on Cortex-M link
AN231: Arm Cortex-M Programming Guide to Memory Barrier Instructions DSB, DMB and ISB instructions link
AN298: Cortex-M4 Lazy Stacking and Context Switching Floating Point Unit (FPU) and exception stacking/unstacking link
Cortex-M Debug Connectors Debug,  PCB design link
Design of SoC for High Reliability Systems with Embedded Processors Functional safety link
Utilizing Features in a Arm Cortex-M Processor to Create Robust Systems Functional safety link
Code Size – a comprehensive comparison of microMIPS32 and Thumb code size using many Megabytes of customer code Code density link
Smart sensors – why Sensors need Intelligence? IoT – smart sensors link
How do the Arm Cortex-M Processors enable secure IoT Applications IoT link
Intelligent Flexible IoT Nodes IoT link
Cortex-M Processors and the Internet of Things (IoT) IoT link
Keil AN291: Using TrustZone on Armv8-M Armv8-M and using TrustZone support in Keil MDK link
The Many Ways of Programming an Arm Cortex-M MCU Alternate software development environments link
AN350: CoreMark Benchmarking for Arm Cortex Processors Benchmark link
AN273: Dhrystone Benchmarking for Arm Cortex Processors Benchmark link
CoreMark and Compiler Performance Benchmark link
Efficient C Code for Arm Devices Arm processor in general link
From “Which Cortex-M processor” to “Which C compiler” Benchmark and optimisation link
 What’s next for microcontrollers Why switch from 8/16-bit architectures to Cortex-M? link, link
Instructions for running uCLinux on the Arm MPS2 platform uCLinux on Cortex-M7 MPS2 FPGA link
What is eXecute-Only-Memory (XOM)? eXecute-Only-Memory (a firmware protection technique) link
Multi-layered security at the heart of your device Arm Cortex-M35P link

 

Software migration guides

Document Links
Migrate Arm Compiler 5 to Arm Compiler 6 link
AN237 – Migrating from 8051 to Cortex Microcontrollers link
AN234 – Migrating from PIC Microcontrollers to Cortex-M3 link
Migrating Cortex-M4 applications to Cortex-M7 link
Basics of porting C code to and between Arm CPUs (from “The Definitive Guide to the Arm Cortex-M0”)

From 8-/16-bits MCUs to Cortex-M0

The Cortex-M1 and Cortex-M0

Arm7TDMI and Cortex-M0

Arm Cortex-M3 Processor Software Development for ArmTDMI Processor Programmers link

 

Software architecture

Document Topics / applies to Links
Arm C Language Extension (ACLE) C language extensions including intrinsic link
Procedure Call Standard for Arm Architecture (AAPCS) Calling conventions - Interface between C functions/routines link
Armv8-M Security Extensions: Requiements on Development tools Cortex-M Security Extension (CMSE) for compilers link

 

Presentations, videos, tutorials

Document Topics / applies to Links
Arm Architecture Fundamentals Arm processors link
How to choose your Arm Cortex-M Processors Cortex-M processors link
Tutorial on Arm Cortex-M series – an overview Cortex-M0/M0+/M3/M4 processors (superseded) link
Efficiency software development with the Cortex Microcontroller Software Interface Standard Version 4 CMSIS 5 link
What’s new in CMSIS-RTOS2 and Keil RTX5 CMSIS 5 link
CMSIS DSP Library FIR Low Pass Filter example CMSIS-DSP link
DSP LiB exercise 1– Sine Wave Generation Using Interrupt Based I/O, DSP liB exercise result DSP experiment with STM32F4 with Wolfson Audio Card Part 1 link, part 2 link, result link
Armv8-M architecture: what’s new for developers Armv8-M (YouTube video) link
Using TrustZone on Cortex-M23 and Cortex-M33 Cortex-M23, Cortex-M33, Armv8-M (YouTube video) link
Tutorials on Arm Cortex-M Series Debug and Trace Debug and Trace on Cortex-M0/M0+/M3/M4 link
Trace tutorial for Arm Cortex-M Trace on Cortex-M3/M4 link
Blinky Project with MDK-Arm version 5 Keil MDK with STM32F4 Discovery link
Dynamic Software analysis with MDK event recorder Keil MDK link
Getting Started with STM32F7 Keil MDK with STM32F7 Discovery link
Arm Cortex M Optimized Code from MATLAB and Simulink Cortex-M code generation from MATLAB link
Arm Cortex-M Prototyping System FPGA board for Cortex-M system prototyping link
The Next Steps in the Evolution of Arm Cortex-M Armv8-M introduction in China Tech Symposia 2015 link  (slides only)
Arm Cortex-M and Cortex-R Embedded Processors Cortex-M7, Cortex-R5 link  (slides only)
Arm Cortex-M7: Bringing High Performance to the Cortex-M Processor Series Cortex-M7 link  (slides only)
Arm Cortex Processors driving the pace of multicore innovation Functional safety (all Cortex processors) link  (slides only)
The Anatomy of the Arm Cortex-M0+ Processor Cortex-M0+ link  (slides only)
Arm Microcontroller Updates – Markets, Technologies and Trends (2013) Market link  (slides only)

 

Arm tools

Tools   Links
Keil Microcontroller Development Kit (MDK) Development suite for Cortex-M, Cortex-R and classic Arm microcontrollers link
DS-MDK Development suite for heterogeneous multi-core systems with Cortex-A and Cortex-M. Part of MDK Professional link
DS-5 Development suite all Arm processors link
mbed Development platform for makers and IoT system designers link
GNU Arm Embedded Toolchain gcc tool chain for Cortex-M and Cortex-R link , older releases

 

Books on Cortex-M processors

Document Topics / applies to Links
Arm related books List of Arm related books (Arm website) Arm web page. List from 
The Definitive Guide to Arm Cortex-M0 and Cortex-M0+ Processors (2nd edition) Cortex-M0, Cortex-M0+ link, companion site, list of known errors.
The Definitive Guide to Arm Cortex-M3 and Cortex-M4+ Processors (3rd edition) Cortex-M3, Cortex-M4 link, companion site, list of known errors.
Embedded Systems: Introduction to Arm Cortex-M Microcontrollers (vol1) Real-Time Interfacing to Arm Cortex-M Microcontrollers (vol2) Real-Time Operating Systems for Arm Cortex-M Microcontrollers (vol3) Cortex-M microcontroller programming based on TI TM4C and MPS432. Vol1, vol2, vol3
The Design’s Guide to the Cortex-M Processor Family : A Tutorial Approach Cortex-M0/M0+/M3/M4 link
Fast and Effective Embedded System Design: Applying the Arm mbed Using mbed for software development link
The Insider’s Guide to the STM32 Arm Based Microcontroller Free e-book on STM32 microcontroller (registration required) link
Freescale Arm Cortex-M Embedded Programming Programming on KL25Z using Keil MDK link

 

Hardware design

Useful resources for SoC, microcontrollers and FPGA designers

Document Topics / applies to Links
Designing a SoC with an Arm Cortex-M Processor Cortex-M SoC design link
DesignStart processor IP homepage Cortex-M0 and Cortex-M3 DesignStart link
Training videos and resources for Cortex-M DesignStart Cortex-M0 and Cortex-M3 DesignStart link
Cortex-M Prototyping System (MPS2/MPS2+) FPGA prototyping board - from this page you can find links to various document and application notes link
Prototyping Cortex-M3 DesignStart with the Cortex-M Prototyping System FPGA design with Cortex-M3 DesignStart link
Cortex-M0 DesignStart and FPGA prototyping Cortex-M0 DesignStart, Cortex-M Prototyping System link
FPGA Prototyping walkthrough using Arm Cortex-M0 DesignStart and MPS2 Detail step by step guide to setup the Cortex-M0 DesignStart project link
MPS2+ Firmware for Mbed This is an update to the firmware for the MCC on the MPS2+ board. link 
DesignStart documentation DesignStart documentation on InfoCenter link
Prototyping of Arm Cortex-M processor systems in FPGA Cortex-M Prototyping System FPGA board link
EW2014 – Arm Cortex-M Processor based System Prototyping on FPGA FPGA design with Cortex-M link
How to debug: CoreSight basics CoreSight Part 1, Part 2, Part 3
Multi-core microcontroller design with Cortex-M processors and CoreSight SoC Cortex-M multi-core systems link
Software based Finite State Machine (FSM) with general purpose processors FSM coding and system design link
So you think developing an SoC needs to be complex or expensive? Think again Cortex-M0 DesignStart webinar link
AMBA AXI and ACE Protocol Specification Issue E AXI protocol link
AMBA 3 AHB-Lite Protocol Specification AHB Lite protocol link
AMBA 5 AHB Protocol Specification AHB5 protocol link
AMBA APB Protocol Specification APB protocol link
AMBA 4 ATB Protocol Specification ATB protocol for trace bus link
Low Power Interface Specification Q and P channel protocols (Q channels are used in Cortex-M23/M33 power control interface) link
EW2016 – Enhanced Security and Energy Efficiency of Microcontrollers and SoCs Armv8-M, AHB5, Q channels link
Cortex-M System Design Kit product page Cortex-M0/M0+/M3/M4 system designs link
10 Useful Facts of the Cortex-M System Design Kit (CMSDK) Cortex-M System Design Kit link
Cortex-M System Design Kit – Now what to do with two more wishes Cortex-M System Design Kit link
Cortex-M System Design Kit Technical Reference Manual Cortex-M0/M0+/M3/M4 system designs link
CoreLink SSE-100 Subsystem for Embedded product page IoT subsystem for Cortex-M3/M4 link, blog 
CoreLink SSE-200 Subsystem for Embedded product page IoT subsystem for Cortex-M33 link
Arm CoreLink CG092 AHB Flash Cache Technical Reference Manual AHB Flash Cache - Cortex-M0/M0+/M3/M4/M23/M33 system designs link
How to jump start your Arm-based IoT chip for free Cortex-M0 DesignStart link
Designing Arm Cortex-M0 Processor into a Mixed Signal Application Cortex-M0 design introduction link
Webinar: Addressing Smart Sensor Design Challenges for SoCs and IoT Joint webinar by Arm, Cadence and Coventor. MEMS sensors design with Cortex-M0, Cortex-M System Design Kit. link, intro 
Smart Sensor Design Links MEMS to IoT (Webinar) List of resources link
Video: Kickstart you IoT Design with Cadence and Arm Cortex-M0 DesignStart and Cadence Hosted Design Service link
Video: How Arm and Cadence Pertner to Accelerate IoT Design Cortex-M, IoT subsystem, mbedOS link
Pushing the Performance Boundaries of Arm Cortex-M Processors for Future Embedded Design Cortex-M7 Implementation with Cadence link
Arm and Cadence on Miniaturizing Sensing and Power for IoT Design Sensor design flow with Cadence mixed signal tools with Cortex-M designs link

 

Resources for debug tool vendors

Document Topics / applies to Links
CoreSight Architecture Specification Debug architecture (Note: it does not cover some Cortex-M specific areas, please see Architecture Reference Manual for those information) link
Embedded Trace Macrocell (ETMv3) Architecture Specification ETMv3 architecture for Cortex-M3/M4/M23 link
Embedded Trace Macrocell (ETMv3) Architecture Specification ETMv4 architecture for Cortex-M7/M33 link
CoreSight MTB-M0+ Technical Reference Manual MTB for Cortex-M0+ link
Arm CoreSight MTB-M23 Technical Reference Manual MTB for Cortex-M23 link
Arm Debug Interface Architecture Specification ADIv5.0 to ADIv5.2 Debug connections link
Cortex-M Debug Connectors Debug,  PCB design link
Anonymous