ARM Cortex-M

Last updated
ARM Cortex-M0 and Cortex-M3 microcontroller ICs from NXP and Silicon Labs (Energy Micro) ARM Cortex-M0 and M3 ICs in SMD Packages.jpg
ARM Cortex-M0 and Cortex-M3 microcontroller ICs from NXP and Silicon Labs (Energy Micro)
Die from a STM32F100C4T6B IC.
24 MHz ARM Cortex-M3 microcontroller with 16 KB flash memory, 4 KB RAM. Manufactured by STMicroelectronics. STM32F100C4T6B-HD.jpg
Die from a STM32F100C4T6B IC.
24  MHz ARM Cortex-M3 microcontroller with 16  KB flash memory, 4 KB RAM. Manufactured by STMicroelectronics.

The ARM Cortex-M is a group of 32-bit RISC ARM processor cores licensed by ARM Limited. These cores are optimized for low-cost and energy-efficient integrated circuits, which have been embedded in tens of billions of consumer devices. [1] Though they are most often the main component of microcontroller chips, sometimes they are embedded inside other types of chips too. The Cortex-M family consists of Cortex-M0, [2] Cortex-M0+, [3] Cortex-M1, [4] Cortex-M3, [5] Cortex-M4, [6] Cortex-M7, [7] Cortex-M23, [8] Cortex-M33, [9] Cortex-M35P, [10] Cortex-M52, [11] Cortex-M55, [12] Cortex-M85. [13] A floating-point unit (FPU) option is available for Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 cores, and when included in the silicon these cores are sometimes known as "Cortex-MxF", where 'x' is the core variant.

Contents

Overview

32-bit
YearCore
2004 Cortex-M3
2007 Cortex-M1
2009 Cortex-M0
2010 Cortex-M4
2012 Cortex-M0+
2014 Cortex-M7
2016 Cortex-M23
2016 Cortex-M33
2018 Cortex-M35P
2020 Cortex-M55
2022 Cortex-M85
2023 Cortex-M52

The ARM Cortex-M family are ARM microprocessor cores that are designed for use in microcontrollers, ASICs, ASSPs, FPGAs, and SoCs. Cortex-M cores are commonly used as dedicated microcontroller chips, but also are "hidden" inside of SoC chips as power management controllers, I/O controllers, system controllers, touch screen controllers, smart battery controllers, and sensor controllers.

The main difference from Cortex-A cores is that Cortex-M cores have no memory management unit (MMU) for virtual memory, considered essential for "full-fledged" operating systems. Cortex-M programs instead run bare metal or on one of the many real-time operating systems which support a Cortex-M.

Though 8-bit microcontrollers were very popular in the past, Cortex-M has slowly been chipping away at the 8-bit market as the prices of low-end Cortex-M chips have moved downward. Cortex-M have become a popular replacements for 8-bit chips in applications that benefit from 32-bit math operations, and replacing older legacy ARM cores such as ARM7 and ARM9.

License

ARM Limited neither manufactures nor sells CPU devices based on its own designs, but rather licenses the processor architecture to interested parties. Arm offers a variety of licensing terms, varying in cost and deliverables. To all licensees, Arm provides an integratable hardware description of the ARM core, as well as complete software development toolset and the right to sell manufactured silicon containing the ARM CPU.

Silicon customization

Integrated Device Manufacturers (IDM) receive the ARM Processor IP as synthesizable RTL (written in Verilog). In this form, they have the ability to perform architectural level optimizations and extensions. This allows the manufacturer to achieve custom design goals, such as higher clock speed, very low power consumption, instruction set extensions (including floating point), optimizations for size, debug support, etc. To determine which components have been included in a particular ARM CPU chip, consult the manufacturer datasheet and related documentation.

Some of the silicon options for the Cortex-M cores are:

ARM Cortex-M optional components
ARM CoreCortex
M0 [17]
Cortex
M0+ [18]
Cortex
M1 [19]
Cortex
M3 [20]
Cortex
M4 [21]
Cortex
M7 [22]
Cortex
M23 [23]
Cortex
M33 [24]
Cortex
M35P [10]
Cortex
M52 [25]
Cortex
M55 [26]
Cortex
M85 [27]
SysTick 24-bit Timer Optional
(0,1)
Optional
(0, 1)
Optional
(0,1)
Yes
(1)
Yes
(1)
Yes
(1)
Optional
(0, 1, 2)
Yes
(1, 2)
Yes
(1, 2)
Yes
(1, 2)
Yes
(1, 2)
Yes
(1, 2)
Single-cycle I/O portNoOptionalNoNoNoNoOptionalNoNoNoNoNo
Bit-Band memoryNo [28] No [28] No*OptionalOptionalOptionalNoNoNoNoNoNo
Memory Protection
Unit (MPU)
NoOptional
(0, 8)
NoOptional
(0,8)
Optional
(0, 8)
Optional
(0, 8, 16)
Optional
(0, 4, 8, 12, 16)
Optional
(0, 4, 8, 12, 16)
Optional
(up to 16)*
Optional
(0, 4, 8, 12, 16)
Optional
(0, 4, 8, 12, 16)
Optional
(0, 4, 8, 12, 16)
Security Attribution
Unit (SAU) and
Stack Limits
NoNoNoNoNoNoOptional
(0, 4, 8)
Optional
(0, 4, 8)
Optional
(up to 8)*
Optional
(0, 4, 8)
Optional
(0, 4, 8)
Optional
(0, 4, 8)
Instruction Cache No [29] No [29] No [29] No [29] No [29] Optional
(up to 64 KB)
NoNoOptional
(up to 16 KB)
Optional
(up to 64 KB)
Optional
(up to 64 KB)
Optional
(up to 64 KB)
Data Cache No [29] No [29] No [29] No [29] No [29] Optional
(up to 64 KB)
NoNoNoOptional
(up to 64 KB)
Optional
(up to 64 KB)
Optional
(up to 64 KB)
Instruction TCM
(ITCM) Memory
NoNoOptional
(up to 1 MB)
NoNoOptional
(up to 16 MB)
NoNoNoOptional
(up to 16 MB)
Optional
(up to 16 MB)
Optional
(up to 16 MB)
Data TCM
(DTCM) Memory
NoNoOptional
(up to 1 MB)
NoNoOptional
(up to 16 MB)
NoNoNoOptional
(up to 16 MB)
Optional
(up to 16 MB)
Optional
(up to 16 MB)
ECC for TCM
and Cache
NoNoNoNoNoNoNoNoOptionalOptionalOptionalOptional
Vector Table Offset
Register (VTOR)
NoOptional
(0,1)
Optional
(0,1)
Optional
(0,1)
Optional
(0,1)
Optional
(0,1)
Optional
(0,1,2)
Yes
(1,2)
Yes
(1,2)
Yes
(1,2)
Yes
(1,2)
Yes
(1,2)

Additional silicon options: [14] [15]

Instruction sets

The Cortex-M0 / M0+ / M1 implement the ARMv6-M architecture, [14] the Cortex-M3 implements the ARMv7-M architecture, [15] the Cortex-M4 / Cortex-M7 implements the ARMv7E-M architecture, [15] the Cortex-M23 / M33 / M35P implement the ARMv8-M architecture, [30] and the Cortex-M52 / M55 / M85 implements the ARMv8.1-M architecture. [30] The architectures are binary instruction upward compatible from ARMv6-M to ARMv7-M to ARMv7E-M. Binary instructions available for the Cortex-M0 / Cortex-M0+ / Cortex-M1 can execute without modification on the Cortex-M3 / Cortex-M4 / Cortex-M7. Binary instructions available for the Cortex-M3 can execute without modification on the Cortex-M4 / Cortex-M7 / Cortex-M33 / Cortex-M35P. [14] [15] Only Thumb-1 and Thumb-2 instruction sets are supported in Cortex-M architectures; the legacy 32-bit ARM instruction set isn't supported.

All Cortex-M cores implement a common subset of instructions that consists of most Thumb-1, some Thumb-2, including a 32-bit result multiply. The Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23 were designed to create the smallest silicon die, thus having the fewest instructions of the Cortex-M family.

The Cortex-M0 / M0+ / M1 include Thumb-1 instructions, except new instructions (CBZ, CBNZ, IT) which were added in ARMv7-M architecture. The Cortex-M0 / M0+ / M1 include a minor subset of Thumb-2 instructions (BL, DMB, DSB, ISB, MRS, MSR). [14] The Cortex-M3 / M4 / M7 / M33 / M35P have all base Thumb-1 and Thumb-2 instructions. The Cortex-M3 adds three Thumb-1 instructions, all Thumb-2 instructions, hardware integer divide, and saturation arithmetic instructions. The Cortex-M4 adds DSP instructions and an optional single-precision floating-point unit (VFPv4-SP). The Cortex-M7 adds an optional double-precision FPU (VFPv5). [22] [15] The Cortex-M23 / M33 / M35P / M52 / M55 / M85 add TrustZone instructions.

ARM Cortex-M instruction variations
Arm CoreCortex
M0 [17]
Cortex
M0+ [18]
Cortex
M1 [19]
Cortex
M3 [20]
Cortex
M4 [21]
Cortex
M7 [22]
Cortex
M23 [23]
Cortex
M33 [24]
Cortex
M35P
Cortex
M52 [25]
Cortex
M55 [26]
Cortex
M85 [27]
ARM architecture ARMv6-M
[14]
ARMv6-M
[14]
ARMv6-M
[14]
ARMv7-M
[15]
ARMv7E-M
[15]
ARMv7E-M
[15]
ARMv8-M
Baseline [30]
ARMv8-M
Mainline [30]
ARMv8-M
Mainline [30]
Armv8.1-M
Mainline [30]
Armv8.1-M
Mainline [30]
Armv8.1-M
Mainline [30]
Computer architecture Von
Neumann
Von
Neumann
Von
Neumann
Harvard HarvardHarvardVon
Neumann
HarvardHarvardHarvardHarvardHarvard
Instruction pipeline 3 stages2 stages3 stages3 stages3 stages6 stages2 stages3 stages3 stages4 stages4-5 stages7 stages
Interrupt latency
(zero wait state memory)
16 cycles15 cycles23 for NMI,
26 for IRQ
12 cycles12 cycles12 cycles,
14 worst
case
15 cycles,
24 secure
to NS IRQ
12 cycles,
21 secure
to NS IRQ
TBDTBDTBDTBD
Thumb-1 instructionsMostMostMostEntireEntireEntireMostEntireEntireEntireEntireEntire
Thumb-2 instructionsSomeSomeSomeEntireEntireEntireSomeEntireEntireEntireEntireEntire
Multiply instructions
32×32 = 32-bit result
YesYesYesYesYesYesYesYesYesYesYesYes
Multiply instructions
32×32 = 64-bit result
NoNoNoYesYesYesNoYesYesYesYesYes
Divide instructions
32/32 = 32-bit quotient
NoNoNoYesYesYesYesYesYesYesYesYes
Saturated math instructionsNoNoNoSomeYesYesNoYesYesYesYesYes
DSP instructionsNoNoNoNoYesYesNoOptionalOptionalYesYesYes
Half-Precision (HP)
floating-point instructions
NoNoNoNoNoNoNoNoNoOptionalOptionalOptional
Single-Precision (SP)
floating-point instructions
NoNoNoNoOptionalOptionalNoOptionalOptionalOptionalOptionalOptional
Double-Precision (DP)
floating-point instructions
NoNoNoNoNoOptionalNoNoNoOptionalOptionalOptional
Helium vector instructionsNoNoNoNoNoNoNoNoNoOptionalOptionalOptional
TrustZone security instructionsNoNoNoNoNoNoOptionalOptionalOptionalOptionalOptionalYes
Co-processor instructionsNoNoNoNoNoNoNoOptionalOptionalOptionalOptionalOptional
ARM Custom Instructions (ACI)NoNoNoNoNoNoNoOptionalNoOptionalOptionalOptional
Pointer Authentication and Branch Target
Identification (PACBTI) instructions
NoNoNoNoNoNoNoNoNoOptionalNoOptional
ARM Cortex-M instruction groups
GroupInstr
bits
InstructionsCortex
M0, M0+, M1
Cortex
M3
Cortex
M4
Cortex
M7
Cortex
M23
Cortex
M33
Cortex
M35P
Cortex
M52
Cortex
M55
Cortex
M85
Thumb-116ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BLX, BX, CMN, CMP, CPS, EOR, LDM, LDR, LDRB, LDRH, LDRSB, LDRSH, LSL, LSR, MOV, MUL, MVN, NOP, ORR, POP, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STM, STR, STRB, STRH, SUB, SVC, SXTB, SXTH, TST, UXTB, UXTH, WFE, WFI, YIELDYesYesYesYesYesYesYesYesYesYes
Thumb-116CBNZ, CBZNoYesYesYesYesYesYesYesYesYes
Thumb-116ITNoYesYesYesNoYesYesYesYesYes
Thumb-232BL, DMB, DSB, ISB, MRS, MSRYesYesYesYesYesYesYesYesYesYes
Thumb-232SDIV, UDIV, MOVT, MOVW, B.W, LDREX, LDREXB, LDREXH, STREX, STREXB, STREXHNoYesYesYesYesYesYesYesYesYes
Thumb-232ADC, ADD, ADR, AND, ASR, B, BFC, BFI, BIC, CDP, CLREX, CLZ, CMN, CMP, DBG, EOR, LDC, LDM, LDR, LDRB, LDRBT, LDRD, LDRH, LDRHT, LDRSB, LDRSBT, LDRSH, LDRSHT, LDRT, LSL, LSR, MCR, MCRR, MLA, MLS, MRC, MRRC, MUL, MVN, NOP, ORN, ORR, PLD, PLDW, PLI, POP, PUSH, RBIT, REV, REV16, REVSH, ROR, RRX, RSB, SBC, SBFX, SEV, SMLAL, SMULL, SSAT, STC, STM, STR, STRB, STRBT, STRD, STRH, STRHT, STRT, SUB, SXTB, SXTH, TBB, TBH, TEQ, TST, UBFX, UMLAL, UMULL, USAT, UXTB, UXTH, WFE, WFI, YIELDNoYesYesYesNoYesYesYesYesYes
DSP 32PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, SMLAD, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, SXTAB, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, USUB16, USUB8, UXTAB, UXTAB16, UXTAH, UXTB16NoNoYesYesNoOptionalOptionalYesYesYes
SP Float 32VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA, VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR, VSUBNoNoOptionalOptionalNoOptionalOptionalOptionalOptionalOptional
DP Float 32VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSELNoNoNoOptionalNoNoNoOptionalOptionalOptional
Acquire/Release32LDA, LDAB, LDAH, LDAEX, LDAEXB, LDAEXH, STL, STLB, STLH, STLEX, STLEXB, STLEXHNoNoNoNoYesYesYesYesYesYes
TrustZone 16BLXNS, BXNSNoNoNoNoOptionalOptionalOptionalOptionalOptionalYes
32SG, TT, TTT, TTA, TTAT
Co-processor 16CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2NoNoNoNoNoOptionalOptionalOptionalOptionalOptional
ACI32CX1, CX1A, CX2, CX2A, CX3, CX3A, CX1D, CX1DA, CX2D, CX2DA, CX3D, CX3DA, VCX1, VCX1A, VCX2, VCX2A, VCX3, VCX3ANoNoNoNoNoOptionalNoOptionalOptionalOptional
PACBTI32AUT, AUTG, BTI, BXAUT, PAC, PACBTI, PACGNoNoNoNoNoNoNoOptionalNoOptional

Deprecations

The ARM architecture for ARM Cortex-M series removed some features from older legacy cores: [14] [15]

The capabilities of the 32-bit ARM instruction set is duplicated in many ways by the Thumb-1 and Thumb-2 instruction sets, but some ARM features don't have a similar feature:

The 16-bit Thumb-1 instruction set has evolved over time since it was first released in the legacy ARM7T cores with the ARMv4T architecture. New Thumb-1 instructions were added as each legacy ARMv5 / ARMv6 / ARMv6T2 architectures were released. Some 16-bit Thumb-1 instructions were removed from the Cortex-M cores:

Cortex-M0

Cortex-M0
Architecture and classification
Instruction set ARMv6-M (Thumb-1 (most),
Thumb-2 (some))

The Cortex-M0 core is optimized for small silicon die size and use in the lowest price chips. [2]

Key features of the Cortex-M0 core are: [17]

Silicon options:

Chips

nRF51822 M2 Health Bracelet - controller board - Nordic N51822-0627.jpg
nRF51822

The following microcontrollers are based on the Cortex-M0 core:

The following chips have a Cortex-M0 as a secondary core:

Cortex-M0+

Cortex-M0+
Architecture and classification
Microarchitecture ARMv6-M
Instruction set Thumb-1 (most),
Thumb-2 (some)
NXP (Freescale) FRDM-KL25Z Board with KL25Z128VLK (Kinetis L) Freescale FRDM-KL25Z board with KL25Z128VLK (ARM Cortex-M0+ MCU).JPG
NXP (Freescale) FRDM-KL25Z Board with KL25Z128VLK (Kinetis L)

The Cortex-M0+ is an optimized superset of the Cortex-M0. The Cortex-M0+ has complete instruction set compatibility with the Cortex-M0 thus allowing the use of the same compiler and debug tools. The Cortex-M0+ pipeline was reduced from 3 to 2 stages, which lowers the power usage and increases performance (higher average IPC due to branches taking one fewer cycle). In addition to debug features in the existing Cortex-M0, a silicon option can be added to the Cortex-M0+ called the Micro Trace Buffer (MTB) which provides a simple instruction trace buffer. The Cortex-M0+ also received Cortex-M3 and Cortex-M4 features, which can be added as silicon options, such as the memory protection unit (MPU) and the vector table relocation. [18]

Key features of the Cortex-M0+ core are: [18]

Silicon options:

Chips

The following microcontrollers are based on the Cortex-M0+ core:

The following chips have a Cortex-M0+ as a secondary core:

The smallest ARM microcontrollers are of the Cortex-M0+ type (as of 2014, smallest at 1.6 mm by 2 mm in a chip-scale package is Kinetis KL03). [32]

On 21 June 2018, the "world's smallest computer'", or computer device was announced  based on the ARM Cortex-M0+ (and including RAM and wireless transmitters and receivers based on photovoltaics)  by University of Michigan researchers at the 2018 Symposia on VLSI Technology and Circuits with the paper "A 0.04mm3 16nW Wireless and Batteryless Sensor System with Integrated Cortex-M0+ Processor and Optical Communication for Cellular Temperature Measurement." The device is one-tenth the size of IBM's previously claimed world-record-sized computer from months back in March 2018, which is smaller than a grain of salt.

Cortex-M1

Cortex-M1
Architecture and classification
Microarchitecture ARMv6-M
Instruction set Thumb-1 (most),
Thumb-2 (some)

The Cortex-M1 is an optimized core especially designed to be loaded into FPGA chips. [4]

Key features of the Cortex-M1 core are: [19]

Silicon options:

Chips

The following vendors support the Cortex-M1 as soft-cores on their FPGA chips:

Cortex-M3

Cortex-M3
Architecture and classification
Microarchitecture ARMv7-M
Instruction set Thumb-1, Thumb-2,
Saturated (some), Divide
Arduino Due board with Atmel ATSAM3X8E (ARM Cortex-M3 core) microcontroller ArduinoDue Front.jpg
Arduino Due board with Atmel ATSAM3X8E (ARM Cortex-M3 core) microcontroller
NXP LPCXpresso Development Board with LPC1343 LPCXpresso DevelopmentBoard with NXP LPC1343 (ARM Cortex-M3) MCU.jpg
NXP LPCXpresso Development Board with LPC1343

Key features of the Cortex-M3 core are: [20] [35]

Silicon options:

Chips

The following microcontrollers are based on the Cortex-M3 core:

The following chips have a Cortex-M3 as a secondary core:

The following FPGAs include a Cortex-M3 core:

The following vendors support the Cortex-M3 as soft-cores on their FPGA chips:

Cortex-M4

Cortex-M4
Architecture and classification
Microarchitecture ARMv7E-M
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (SP)
Silicon Labs (Energy Micro) Wonder Gecko STK Board with EFM32WG990 Energy Micro Woder Gecko STK showing EFM32WG990F256 (ARM Cortex-M4F) MCU.JPG
Silicon Labs (Energy Micro) Wonder Gecko STK Board with EFM32WG990
TI Stellaris Launchpad Board with LM4F120 TI Stellaris Launchpad showing LM4F120H (ARM Cortex-M4F) MCU.JPG
TI Stellaris Launchpad Board with LM4F120

Conceptually the Cortex-M4 is a Cortex-M3 plus DSP instructions, and optional floating-point unit (FPU). A core with an FPU is known as Cortex-M4F.

Key features of the Cortex-M4 core are: [21]

Silicon options:

Chips

nRF52833 on a micro bit v2 Micro-bit v2 (cropped) nRF52833.JPG
nRF52833 on a micro bit v2
STM32F407IGH6 Embedded World 2016, M32F407 (cropped) STM M32F407IG.jpg
STM32F407IGH6

The following microcontrollers are based on the Cortex-M4 core:

The following microcontrollers are based on the Cortex-M4F (M4 + FPU) core:

The following chips have either a Cortex-M4 or M4F as a secondary core:

Cortex-M7

Cortex-M7
Architecture and classification
Microarchitecture ARMv7E-M
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (SP & DP)

The Cortex-M7 is a high-performance core with almost double the power efficiency of the older Cortex-M4. [7] It features a 6-stage superscalar pipeline with branch prediction and an optional floating-point unit capable of single-precision and optionally double-precision operations. [7] [38] The instruction and data buses have been enlarged to 64-bit wide over the previous 32-bit buses. If a core contains an FPU, it is known as a Cortex-M7F, otherwise it is a Cortex-M7.

Key features of the Cortex-M7 core are: [22]

Silicon options:

Chips

The following microcontrollers are based on the Cortex-M7 core:

Cortex-M23

Cortex-M23
Architecture and classification
Microarchitecture ARMv8-M Baseline
Instruction set Thumb-1 (most),
Thumb-2 (some),
Divide, TrustZone

The Cortex-M23 core was announced in October 2016 [39] and based on the ARMv8-M architecture that was previously announced in November 2015. [40] Conceptually the Cortex-M23 is similar to a Cortex-M0+ plus integer divide instructions and TrustZone security features, and also has a 2-stage instruction pipeline. [8]

Key features of the Cortex-M23 core are: [23] [39]

Silicon options:

Chips

The following microcontrollers are based on the Cortex-M23 core:

Cortex-M33

Cortex-M33
Architecture and classification
Microarchitecture ARMv8-M Mainline
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (SP),
TrustZone, Co-processor

The Cortex-M33 core was announced in October 2016 [39] and based on the ARMv8-M architecture that was previously announced in November 2015. [40] Conceptually the Cortex-M33 is similar to a cross of Cortex-M4 and Cortex-M23, and also has a 3-stage instruction pipeline. [9]

Key features of the Cortex-M33 core are: [24] [39]

Silicon options:

Chips

The following microcontrollers are based on the Cortex-M33 core:

The following chips have a Cortex-M33 or M33F as a secondary core:

Cortex-M35P

Cortex-M35P
Architecture and classification
Microarchitecture ARMv8-M Mainline
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (SP),
TrustZone, Co-processor

The Cortex-M35P core was announced in May 2018 and based on the Armv8-M architecture. It is conceptually a Cortex-M33 core with a new instruction cache, plus new tamper-resistant hardware concepts borrowed from the ARM SecurCore family, and configurable parity and ECC features. [10]

Currently, information about the Cortex-M35P is limited, because its Technical Reference Manual and Generic User Guide haven't been released yet.

Chips

The following microcontrollers are based on the Cortex-M35P core:

Cortex-M52

Cortex-M52
Architecture and classification
Microarchitecture ARMv8.1-M Mainline Helium
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (VFPv5),
TrustZone, Coprocessor, MVE

The Cortex-M52 core was announced in November 2023 and based on the Armv8.1-M architecture. It has a 4 stage instruction pipeline. [11]

Key features of the Cortex-M52 core include:

Silicon options:

Chips

Cortex-M55

Cortex-M55
Architecture and classification
Microarchitecture ARMv8.1-M Mainline Helium
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (VFPv5),
TrustZone, Coprocessor, MVE

The Cortex-M55 core was announced in February 2020 and based on the Armv8.1-M architecture. It has a 4 or 5 stage instruction pipeline. [12]

Key features of the Cortex-M55 core include:

Silicon options:

Chips

Cortex-M85

Cortex-M85
Architecture and classification
Microarchitecture ARMv8.1-M Mainline Helium
Instruction set Thumb-1, Thumb-2,
Saturated, DSP,
Divide, FPU (VFPv5),
TrustZone, Coprocessor, MVE

The Cortex-M85 core was announced in April 2022 and based on the Armv8.1-M architecture. It has a 7-stage instruction pipeline. [13]

Silicon options:

Chips

Development tools

Documentation

The documentation for ARM chips is extensive. In the past, 8-bit microcontroller documentation would typically fit in a single document, but as microcontrollers have evolved, so has everything required to support them. A documentation package for ARM chips typically consists of a collection of documents from the IC manufacturer as well as the CPU core vendor (ARM Limited).

A typical top-down documentation tree is:

Documentation tree (top to bottom)
  1. IC manufacturer website.
  2. IC manufacturer marketing slides.
  3. IC manufacturer datasheet for the exact physical chip.
  4. IC manufacturer reference manual that describes common peripherals and aspects of a physical chip family.
  5. ARM core website.
  6. ARM core generic user guide.
  7. ARM core technical reference manual.
  8. ARM architecture reference manual.

IC manufacturers have additional documents, such as: evaluation board user manuals, application notes, getting started guides, software library documents, errata, and more. See External links section for links to official Arm documents.

See also

Related Research Articles

ARM is a family of RISC instruction set architectures (ISAs) for computer processors. Arm Ltd. develops the ISAs and licenses them to other companies, who build the physical devices that use the instruction set. It also designs and licenses cores that implement these ISAs.

Atmel ARM-based processors are microcontrollers and microprocessors integrated circuits, by Microchip Technology, that are based on various 32-bit ARM processor cores, with in-house designed peripherals and tool support.

<span class="mw-page-title-main">AVR32</span>

AVR32 is a 32-bit RISC microcontroller architecture produced by Atmel. The microcontroller architecture was designed by a handful of people educated at the Norwegian University of Science and Technology, including lead designer Øyvind Strøm and CPU architect Erik Renno in Atmel's Norwegian design center.

ARM9 is a group of 32-bit RISC ARM processor cores licensed by ARM Holdings for microcontroller use. The ARM9 core family consists of ARM9TDMI, ARM940T, ARM9E-S, ARM966E-S, ARM920T, ARM922T, ARM946E-S, ARM9EJ-S, ARM926EJ-S, ARM968E-S, ARM996HS. Since ARM9 cores were released from 1998 to 2006, they are no longer recommended for new IC designs, instead ARM Cortex-A, ARM Cortex-M, ARM Cortex-R cores are preferred.

<span class="mw-page-title-main">Cypress PSoC</span> Type of integrated circuit

PSoC is a family of microcontroller integrated circuits by Cypress Semiconductor. These chips include a CPU core and mixed-signal arrays of configurable integrated analog and digital peripherals.

IAR Systems is a Swedish computer software company that offers development tools for embedded systems. IAR Systems was founded in 1983, and is listed on Nasdaq Nordic in Stockholm. IAR is an abbreviation of Ingenjörsfirma Anders Rundgren, which means Anders Rundgren Engineering Company.

<span class="mw-page-title-main">Segger Microcontroller Systems</span> Private company in the embedded systems industry

Segger Microcontroller, founded in 1992, is a private company involved in the embedded systems industry. It provides products used to develop and manufacture four categories of embedded systems: real-time operating systems (RTOS) and software libraries (middleware), debugging and trace probes, programming tools, and in-system programmers. The company is headquartered in Monheim am Rhein, Germany, with remote offices in Gardner, Massachusetts; Milpitas, California; and Shanghai, China.

EFM32 Gecko MCUs are a family of mixed-signal 32-bit microcontroller integrated circuits from Energy Micro based on ARM Cortex-M CPUs, including the Cortex-M0+, Cortex-M3 and Cortex-M4.

<span class="mw-page-title-main">ARM Cortex-A9</span> 32-bit multicore processor developed by SR1

The ARM Cortex-A9 MPCore is a 32-bit multi-core processor that provides up to 4 cache-coherent cores, each implementing the ARM v7 architecture instruction set. It was introduced in 2007.

The ARM Cortex-A is a group of 32-bit and 64-bit RISC ARM processor cores licensed by Arm Holdings. The cores are intended for application use. The group consists of 32-bit only cores: ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17 MPCore, and ARM Cortex-A32, 32/64-bit mixed operation cores: ARM Cortex-A35, ARM Cortex-A53, ARM Cortex-A55, ARM Cortex-A57, ARM Cortex-A72, ARM Cortex-A73, ARM Cortex-A75, ARM Cortex-A76, ARM Cortex-A77, ARM Cortex-A78, ARM Cortex-A710, and ARM Cortex-A510 Refresh, and 64-bit only cores: ARM Cortex-A34, ARM Cortex-A65, ARM Cortex-A510 (2021), ARM Cortex-A715, ARM Cortex-A520, and ARM Cortex-A720.

<span class="mw-page-title-main">STM32</span> ARM Cortex-M based Microcontrollers by STMicroelectronics

STM32 is a family of 32-bit microcontroller integrated circuits by STMicroelectronics. The STM32 chips are grouped into related series that are based around the same 32-bit ARM processor core: Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M33. Internally, each microcontroller consists of ARM processor core(s), flash memory, static RAM, debugging interface, and various peripherals.

XMC is a family of microcontroller ICs by Infineon. The XMC microcontrollers use the 32-bit RISC ARM processor cores from ARM Holdings, such as Cortex-M4F and Cortex-M0. XMC stands for "cross-market microcontrollers", meaning that this family can cover due to compatibility and configuration options, a wide range in industrial applications. The family supports three essential trends in the industry: It increases the energy efficiency of the systems, supports a variety of communication standards and reduces software complexity in the development of the application's software environment with the parallel released eclipse-based software tool DAVE.

<span class="mw-page-title-main">NXP LPC</span> Family of 32-bit microcontroller integrated circuits

LPC is a family of 32-bit microcontroller integrated circuits by NXP Semiconductors. The LPC chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals. The earliest LPC series were based on the Intel 8-bit 80C51 core. As of February 2011, NXP had shipped over one billion ARM processor-based chips.

<span class="mw-page-title-main">AArch64</span> 64-bit extension of the ARM architecture

AArch64 or ARM64 is the 64-bit extension of the ARM architecture family. It was first introduced with the Armv8-A architecture, and had many extension updates.

This is a comparison of ARM instruction set architecture application processor cores designed by ARM Holdings and 3rd parties. It does not include ARM Cortex-R, ARM Cortex-M, or legacy ARM cores.

<span class="mw-page-title-main">Apache Mynewt</span> Real-time operating system

Apache Mynewt is a modular real-time operating system for connected Internet of things (IoT) devices that must operate for long times under power, memory, and storage constraints. It is free and open-source software incubating under the Apache Software Foundation, with source code distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of open-source software.

The ARM Cortex-A77 is a central processing unit implementing the ARMv8.2-A 64-bit instruction set designed by ARM Holdings' Austin design centre. ARM announced an increase of 23% and 35% in integer and floating point performance, respectively. Memory bandwidth increased 15% relative to the A76.

References

  1. ARM Cortex-M website; ARM Limited.
  2. 1 2 "Cortex-M0 Home". ARM Limited.
  3. "Cortex-M0+ Home". ARM Limited.
  4. 1 2 "Cortex-M1 Home". ARM Limited.
  5. "Cortex-M3 Home". ARM Limited.
  6. "Cortex-M4 Home". ARM Limited.
  7. 1 2 3 "Cortex-M7 Home". ARM Limited.
  8. 1 2 "Cortex-M23 Home". ARM Limited.
  9. 1 2 "Cortex-M33 Home". ARM Limited.
  10. 1 2 3 "Cortex-M35P Home". ARM Limited.
  11. 1 2 "Cortex-M52 Home". ARM Limited.
  12. 1 2 "Cortex-M55 Home". ARM Limited.
  13. 1 2 "Cortex-M85 Home". ARM Limited.
  14. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "ARMv6-M Architecture Reference Manual". ARM Limited.
  15. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "ARMv7-M Architecture Reference Manual". ARM Limited.
  16. 1 2 3 4 Cortex-M3 Embedded Software Development; App Note 179; ARM Limited.
  17. 1 2 3 "Cortex-M0 Technical Reference Manual". ARM Limited.
  18. 1 2 3 4 "Cortex-M0+ Technical Reference Manual". ARM Limited.
  19. 1 2 3 "Cortex-M1 Technical Reference Manual". ARM Limited.
  20. 1 2 3 "Cortex-M3 Technical Reference Manual". ARM Limited.
  21. 1 2 3 "Cortex-M4 Technical Reference Manual". ARM Limited.
  22. 1 2 3 4 "Cortex-M7 Technical Reference Manual". ARM Limited.
  23. 1 2 3 "Cortex-M23 Technical Reference Manual". ARM Limited.
  24. 1 2 3 "Cortex-M33 Technical Reference Manual". ARM Limited.
  25. 1 2 "Cortex-M52 Technical Reference Manual". ARM Limited.
  26. 1 2 "Cortex-M55 Technical Reference Manual". ARM Limited.
  27. 1 2 "Cortex-M85 Technical Reference Manual". ARM Limited.
  28. 1 2 3 Cortex-M System Design Kit; ARM Limited.
  29. 1 2 3 4 5 6 7 8 9 10 ARM Cortex-M Programming Guide to Memory Barrier Instructions; Section 3.6 System implementation requirements; AppNote 321; ARM Limited.
  30. 1 2 3 4 5 6 7 8 9 10 11 12 "ARMv8-M Architecture Reference Manual". ARM Limited.
  31. 32-bit PIC and SAM Microcontrollers; Microchip.
  32. Fingas, Jon (25 February 2014). "Freescale makes the world's smallest ARM controller chip even tinier" . Retrieved 2 October 2014.
  33. GOWIN Semiconductor joins ARM DesignStart offering free ARM Cortex-M1 Processors for its FPGA product families
  34. Cortex-M1 DesignStart FPGA XilinxEdition; ARM Limited.
  35. Sadasivan, Shyam. "An Introduction to the ARM Cortex-M3 Processor" (PDF). ARM Limited. Archived from the original (PDF) on July 26, 2014.
  36. "Samsung Exynos 7420 Deep Dive - Inside a Modern 14nm SoC". AnandTech. Retrieved 2015-06-15.
  37. Cortex-M3 DesignStart FPGA XilinxEdition
  38. "ARM Supercharges MCU Market with High Performance Cortex-M7 Processor". ARM Limited (Press release). September 24, 2014.
  39. 1 2 3 4 New ARM Cortex-M processors offer the next industry standard for secure IoT; ARM Limited; October 25, 2016.
  40. 1 2 ARMv8-M Architecture Simplifies Security for Smart Embedded Devices; ARM Limited; November 10, 2015.

Further reading

ARM Cortex-M official documents
ARM
core
Bit
width
ARM
website
ARM generic
user guide
ARM technical
reference manual
ARM architecture
reference manual
Cortex-M0 32 Link Link Link ARMv6-M
Cortex-M0+ 32 Link Link Link ARMv6-M
Cortex-M1 32 Link Link Link ARMv6-M
Cortex-M3 32 Link Link Link ARMv7-M
Cortex-M4 32 Link Link Link ARMv7E-M
Cortex-M7 32 Link Link Link ARMv7E-M
Cortex-M23 32 Link Link Link ARMv8-M
Cortex-M33 32 Link Link Link ARMv8-M
Cortex-M35P 32 Link N/A N/A ARMv8-M
Cortex-M52 32 Link N/A Link ARMv8.1-M
Cortex-M55 32 Link Link Link ARMv8.1-M
Cortex-M85 32 Link Link Link ARMv8.1-M
Quick reference cards
Migrating
Other