

de 24 MHz con memoria flash de 16 KB y RAM de 4 KB. Fabricado por STMicroelectronics .
ARM Cortex-M es un grupo de núcleos de procesadores ARM RISC de 32 bits con licencia de ARM Limited . Estos núcleos están optimizados para circuitos integrados de bajo coste y eficiencia energética, que se han integrado en decenas de miles de millones de dispositivos de consumo. [1] Aunque suelen ser el componente principal de los chips de microcontroladores , a veces también se integran en otros tipos de chips. La familia Cortex-M consta de 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] Hay una opción de unidad de punto flotante (FPU) disponible para los núcleos Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85, y cuando se incluyen en el silicio, estos núcleos a veces se conocen como "Cortex-MxF", donde "x" es la variante del núcleo.
Descripción general
La familia ARM Cortex-M son núcleos de microprocesadores ARM diseñados para su uso en microcontroladores , ASIC , ASSP , FPGA y SoC . Los núcleos Cortex-M se utilizan comúnmente como chips de microcontroladores dedicados, pero también están "ocultos" dentro de chips SoC como controladores de administración de energía, controladores de E/S, controladores de sistema, controladores de pantalla táctil, controladores de batería inteligente y controladores de sensores.
La principal diferencia con los núcleos Cortex-A es que los núcleos Cortex-M no tienen una unidad de gestión de memoria (MMU) para la memoria virtual , considerada esencial para los sistemas operativos "completos" . En cambio, los programas Cortex-M se ejecutan en hardware físico o en uno de los muchos sistemas operativos en tiempo real que admiten un Cortex-M .
Aunque los microcontroladores de 8 bits fueron muy populares en el pasado, Cortex-M ha ido ganando terreno lentamente en el mercado de 8 bits a medida que los precios de los chips Cortex-M de gama baja han ido bajando. Los Cortex-M se han convertido en un reemplazo popular de los chips de 8 bits en aplicaciones que se benefician de las operaciones matemáticas de 32 bits y reemplazan a los núcleos ARM heredados más antiguos, como ARM7 y ARM9 .
Licencia
ARM Limited no fabrica ni vende dispositivos de CPU basados en sus propios diseños, sino que otorga licencias sobre la arquitectura del procesador a las partes interesadas. Arm ofrece una variedad de condiciones de licencia, que varían en costo y resultados. A todos los licenciatarios, Arm les proporciona una descripción de hardware integrable del núcleo ARM, así como un conjunto completo de herramientas de desarrollo de software y el derecho a vender silicio fabricado que contenga la CPU ARM.
Personalización de silicio
Los fabricantes de dispositivos integrados (IDM) reciben la propiedad intelectual del procesador ARM como RTL sintetizable (escrito en Verilog ). De esta forma, tienen la capacidad de realizar optimizaciones y extensiones a nivel arquitectónico. Esto permite al fabricante lograr objetivos de diseño personalizados, como mayor velocidad de reloj, consumo de energía muy bajo, extensiones del conjunto de instrucciones (incluido el punto flotante), optimizaciones de tamaño, soporte de depuración, etc. Para determinar qué componentes se han incluido en un chip de CPU ARM en particular, consulte la hoja de datos del fabricante y la documentación relacionada.
Algunas de las opciones de silicio para los núcleos Cortex-M son:
- Temporizador SysTick: temporizador de sistema de 24 bits que amplía la funcionalidad tanto del procesador como del controlador de interrupciones vectoriales anidadas (NVIC). Cuando está presente, también proporciona una interrupción SysTick de prioridad configurable adicional. [14] [15] [16] Aunque el temporizador SysTick es opcional para M0/M0+/M1/M23, es extremadamente raro encontrar un microcontrolador Cortex-M sin él. Si un microcontrolador Cortex-M33/M35P/M52/M55/M85 tiene la opción de extensión de seguridad, entonces puede tener opcionalmente dos SysTicks (uno seguro, uno no seguro).
- Banda de bits: asigna una palabra completa de memoria a un solo bit en la región de banda de bits. Por ejemplo, escribir en una palabra alias activará o desactivará el bit correspondiente en la región de banda de bits. Esto permite que cada bit individual en la región de banda de bits sea directamente accesible desde una dirección alineada con palabras. En particular, los bits individuales se pueden activar, desactivar o alternar desde C/C++ sin realizar una secuencia de instrucciones de lectura-modificación-escritura. [14] [15] [16] Aunque la banda de bits es opcional, es menos común encontrar un microcontrolador Cortex-M3 y Cortex-M4 sin ella. Algunos microcontroladores Cortex-M0 y Cortex-M0+ tienen banda de bits.
- Unidad de protección de memoria (MPU): proporciona soporte para proteger regiones de memoria mediante la aplicación de reglas de acceso y privilegios. Admite hasta dieciséis regiones diferentes, cada una de las cuales se puede dividir en subregiones de igual tamaño. [14] [15] [16]
- Memoria estrechamente acoplada (TCM): SRAM de baja latencia ( estado de espera cero ) que se puede utilizar para almacenar la pila de llamadas , las estructuras de control del sistema operativo en tiempo real (RTOS), las estructuras de datos de interrupción, el código del controlador de interrupciones y el código crítico para la velocidad. Aparte de la memoria caché de la CPU , la TCM es la memoria más rápida en un microcontrolador ARM Cortex-M. Dado que la TCM no se almacena en caché y no se puede acceder a ella a la misma velocidad que el procesador y la memoria caché, se podría describir conceptualmente como una "memoria caché direccionable". Hay una ITCM (TCM de instrucciones) y una DTCM (TCM de datos) para permitir que un procesador de arquitectura Harvard lea de ambas simultáneamente. La DTCM no puede contener instrucciones, pero la ITCM puede contener datos. Dado que la TCM está estrechamente conectada al núcleo del procesador, es posible que los motores DMA no puedan acceder a la TCM en algunas implementaciones.
- Nota: la mayoría de los chips Cortex-M3 y M4 tienen banda de bits y MPU. La opción de banda de bits se puede agregar al M0/M0+ utilizando el kit de diseño de sistemas Cortex-M. [28]
- Nota: El software debe validar la existencia de cada característica antes de intentar utilizarla. [16]
- Nota: Hay información pública limitada disponible sobre el Cortex-M35P hasta que se publique su Manual de referencia técnica .
Opciones adicionales de silicio: [14] [15]
- Orden de bytes de los datos: little-endian o big-endian. A diferencia de los núcleos ARM tradicionales, el Cortex-M está fijado de forma permanente en silicio como una de estas opciones.
- Interrupciones: 1 a 32 (M0/M0+/M1), 1 a 240 (M3/M4/M7/M23), 1 a 480 (M33/M35P/M52/M55/M85).
- Controlador de interrupción de activación: Opcional.
- Registro de desplazamiento de tabla vectorial: opcional. (no disponible para M0).
- Ancho de búsqueda de instrucciones: solo 16 bits, o principalmente 32 bits.
- Soporte de usuarios/privilegios: Opcional.
- Restablecer todos los registros: Opcional.
- Puerto de E/S de ciclo único: Opcional. (M0+/M23).
- Puerto de acceso de depuración (DAP): Ninguno, SWD , JTAG y SWD. (opcional para todos los núcleos Cortex-M)
- Detener el soporte de depuración: Opcional.
- Número de comparadores de puntos de observación: 0 a 2 (M0/M0+/M1), 0 a 4 (M3/M4/M7/M23/M33/M35P/M52/M55/M85).
- Número de comparadores de puntos de interrupción: 0 a 4 (M0/M0+/M1/M23), 0 a 8 (M3/M4/M7/M33/M35P/M52/M55/M85).
Conjuntos de instrucciones
Los Cortex-M0 / M0+ / M1 implementan la arquitectura ARMv6-M , [14] el Cortex-M3 implementa la arquitectura ARMv7-M , [15] el Cortex-M4 / Cortex-M7 implementa la arquitectura ARMv7E-M , [15] el Cortex-M23 / M33 / M35P implementa la arquitectura ARMv8-M , [30] y el Cortex-M52 / M55 / M85 implementa la arquitectura ARMv8.1-M . [30] Las arquitecturas son compatibles con instrucciones binarias desde ARMv6-M a ARMv7-M a ARMv7E-M. Las instrucciones binarias disponibles para los Cortex-M0 / Cortex-M0+ / Cortex-M1 pueden ejecutarse sin modificaciones en los Cortex-M3 / Cortex-M4 / Cortex-M7. Las instrucciones binarias disponibles para Cortex-M3 se pueden ejecutar sin modificaciones en Cortex-M4 / Cortex-M7 / Cortex-M33 / Cortex-M35P. [14] [15] Solo los conjuntos de instrucciones Thumb-1 y Thumb-2 son compatibles con las arquitecturas Cortex-M; el conjunto de instrucciones ARM heredado de 32 bits no es compatible.
Todos los núcleos Cortex-M implementan un subconjunto común de instrucciones que consta principalmente de Thumb-1, algunas Thumb-2, incluida una multiplicación de resultados de 32 bits. Los Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23 se diseñaron para crear la matriz de silicio más pequeña, por lo que tienen la menor cantidad de instrucciones de la familia Cortex-M.
Los Cortex-M0 / M0+ / M1 incluyen instrucciones Thumb-1, excepto las nuevas instrucciones (CBZ, CBNZ, IT) que se agregaron en la arquitectura ARMv7-M. Los Cortex-M0 / M0+ / M1 incluyen un subconjunto menor de instrucciones Thumb-2 (BL, DMB, DSB, ISB, MRS, MSR). [14] Los Cortex-M3 / M4 / M7 / M33 / M35P tienen todas las instrucciones Thumb-1 y Thumb-2 base. El Cortex-M3 agrega tres instrucciones Thumb-1, todas las instrucciones Thumb-2, división de enteros de hardware e instrucciones aritméticas de saturación . El Cortex-M4 agrega instrucciones DSP y una unidad de punto flotante de precisión simple opcional (VFPv4-SP). El Cortex-M7 agrega una FPU de precisión doble opcional (VFPv5). [22] [15] Los Cortex-M23 / M33 / M35P / M52 / M55 / M85 agregan instrucciones TrustZone .
- Nota: El recuento de ciclos de latencia de interrupción supone: 1) la pila se encuentra en la RAM en estado de espera cero, 2) otra función de interrupción que no se está ejecutando en ese momento, 3) la opción de extensión de seguridad no existe, porque agrega ciclos adicionales. Los núcleos Cortex-M con una arquitectura informática Harvard tienen una latencia de interrupción más corta que los núcleos Cortex-M con una arquitectura informática Von Neumann.
- Nota: La serie Cortex-M incluye tres nuevas instrucciones Thumb-1 de 16 bits para el modo de suspensión: SEV, WFE, WFI.
- Nota: El Cortex-M0 / M0+ / M1 no incluye estas instrucciones Thumb-1 de 16 bits : CBZ, CBNZ, IT. [14] [15]
- Nota: Los Cortex-M0 / M0+ / M1 solo incluyen estas instrucciones Thumb-2 de 32 bits : BL, DMB, DSB, ISB, MRS, MSR. [14] [15]
- Nota: El Cortex-M0 / M0+ / M1 / M23 solo tiene instrucciones de multiplicación de 32 bits con un resultado de 32 bits inferior (32 bits × 32 bits = 32 bits inferiores), mientras que el Cortex-M3 / M4 / M7 / M33 / M35P incluye instrucciones de multiplicación adicionales de 32 bits con resultados de 64 bits (32 bits × 32 bits = 64 bits). El Cortex-M4 / M7 (opcionalmente M33 / M35P) incluye instrucciones DSP para multiplicaciones (16 bits × 16 bits = 32 bits), (32 bits × 16 bits = 32 bits superiores), (32 bits × 32 bits = 32 bits superiores). [14] [15]
- Nota: La cantidad de ciclos necesarios para completar las instrucciones de multiplicación y división varía según los diseños de núcleos ARM Cortex-M. Algunos núcleos tienen una opción de silicio para elegir entre velocidad rápida o tamaño pequeño (velocidad lenta), por lo que los núcleos tienen la opción de usar menos silicio con la desventaja de un mayor conteo de ciclos. Una interrupción que ocurre durante la ejecución de una instrucción de división o una instrucción de multiplicación iterativa lenta hará que el procesador abandone la instrucción y luego la reinicie después de que regrese la interrupción.
- Instrucciones de multiplicación "Resultado de 32 bits": Cortex-M0/M0+/M23 es una opción de silicio de 1 o 32 ciclos, Cortex-M1 es una opción de silicio de 3 o 33 ciclos, Cortex-M3/M4/M7/M33/M35P es de 1 ciclo.
- Instrucciones de multiplicación "resultado de 64 bits": Cortex-M3 es de 3 a 5 ciclos (según los valores), Cortex-M4/M7/M33/M35P es de 1 ciclo.
- Instrucciones de división: Cortex-M3/M4 es de 2 a 12 ciclos (según los valores), Cortex-M7 es de 3 a 20 ciclos (según los valores), Cortex-M23 es una opción de 17 o 34 ciclos, Cortex-M33 es de 2 a 11 ciclos (según los valores), Cortex-M35P es TBD.
- Nota: Algunos núcleos Cortex-M tienen opciones de silicio para varios tipos de unidades de punto flotante ( FPU ). El Cortex-M55/M85 tiene una opción para media precisión ( HP ), el Cortex-M4/M7/M33/M35P/M52/M55/M85 tiene una opción para precisión simple ( SP ), el Cortex-M7/M52/M55/M85 tiene una opción para precisión doble ( DP ). Cuando se incluye una FPU, el núcleo a veces se denomina "Cortex-MxF", donde 'x' es la variante del núcleo, como Cortex-M4 F. [14] [15]
- Nota: MOVW es un alias que significa instrucción MOV de "ancho" de 32 bits.
- Nota: BW es una rama incondicional de larga distancia (similar en codificación, operación y rango a BL, menos la configuración del registro LR).
- Nota: Para Cortex-M1, existen instrucciones WFE / WFI / SEV, pero se ejecutan como una instrucción NOP.
- Nota: Las instrucciones FPU de media precisión (HP) son válidas en Cortex-M52 / M55 / M85 solo cuando la opción FPU HP existe en el silicio.
- Nota: Las instrucciones FPU de precisión simple (SP) son válidas en Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 solo cuando la opción SP FPU existe en el silicio.
- Nota: Las instrucciones FPU de doble precisión (DP) son válidas en Cortex-M7 / M52 / M55 / M85 solo cuando la opción FPU DP existe en el silicio.
Desusos
La arquitectura ARM para la serie ARM Cortex-M eliminó algunas características de los núcleos heredados más antiguos: [14] [15]
- El conjunto de instrucciones ARM de 32 bits no está incluido en los núcleos Cortex-M.
- El orden de bits se elige en la implementación de silicio en los núcleos Cortex-M. Los núcleos antiguos permitían cambiar el modo de orden de bits de los datos "sobre la marcha" .
- Los coprocesadores no fueron compatibles con los núcleos Cortex-M hasta que se reintrodujo la opción de silicio en "ARMv8-M Mainline" para los núcleos ARM Cortex-M33/M35P.
Las capacidades del conjunto de instrucciones ARM de 32 bits se duplican de muchas maneras en los conjuntos de instrucciones Thumb-1 y Thumb-2, pero algunas características ARM no tienen una característica similar:
- Las instrucciones ARM SWP y SWPB (swap) no tienen una característica similar en Cortex-M.
El conjunto de instrucciones Thumb-1 de 16 bits ha evolucionado con el tiempo desde que se lanzó por primera vez en los núcleos ARM7T heredados con la arquitectura ARMv4T. Se agregaron nuevas instrucciones Thumb-1 a medida que se lanzaban las arquitecturas ARMv5 / ARMv6 / ARMv6T2 heredadas. Algunas instrucciones Thumb-1 de 16 bits se eliminaron de los núcleos Cortex-M:
- La instrucción "BLX <inmediato>" no existe porque se utilizó para cambiar del conjunto de instrucciones Thumb-1 al ARM. La instrucción "BLX <registro>" todavía está disponible en Cortex-M.
- SETEND no existe porque ya no se admite el cambio sobre la marcha del modo endian de datos.
- Las instrucciones del coprocesador no eran compatibles con los núcleos Cortex-M, hasta que se reintrodujo la opción de silicio en "ARMv8-M Mainline" para los núcleos ARM Cortex-M33/M35P.
- La instrucción SWI se renombró como SVC, aunque la codificación binaria de la instrucción es la misma. Sin embargo, el código del controlador SVC es diferente del código del controlador SWI, debido a los cambios en los modelos de excepción.
Corteza-M0
El núcleo Cortex-M0 está optimizado para chips de silicio de tamaño pequeño y para su uso en los chips de menor precio. [2]
Las características clave del núcleo Cortex-M0 son: [17]
- Arquitectura ARMv6-M [14]
- Tubería de 3 etapas
- Conjuntos de instrucciones:
- Pulgar 1 (la mayoría), falta CBZ, CBNZ, IT
- Pulgar-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR
- Multiplicación de números enteros de hardware de 32 bits con resultado de 32 bits
- 1 a 32 interrupciones , más NMI
Opciones de silicio:
- Velocidad de multiplicación de enteros de hardware: 1 o 32 ciclos.
Papas fritas

Los siguientes microcontroladores se basan en el núcleo Cortex-M0:
- SOBRE AC30M1x64
- Cypress PSoC 4000, 4100, 4100M, 4200, 4200DS, 4200L, 4200M
- Infineon XMC1100 , XMC1200, XMC1300, XMC1400, TLE984x
- Diálogo DA1458x, DA1468x
- Nórdico nRF51
- NXP LPC1100 , LPC1200
- Nuvoton NuMicro
- Sonix SN32F700
- ST STM32 F0
- Toshiba TX00
- Vorago VA10800 (temperatura extrema), VA10820 (resistente a la radiación)
Los siguientes chips tienen un Cortex-M0 como núcleo secundario:
- NXP LPC4300 (un Cortex-M4F + un Cortex-M0)
- MCU inalámbricos SimpleLink CC1310 y CC2650 de Texas Instruments (un procesador de red Cortex-M3 programable + un procesador de red Cortex-M0 + un motor controlador de sensor patentado)
Corteza-M0+
El Cortex-M0+ es un superconjunto optimizado del Cortex-M0. El Cortex-M0+ tiene una compatibilidad total con el conjunto de instrucciones del Cortex-M0, lo que permite el uso del mismo compilador y las mismas herramientas de depuración. La secuencia de comandos del Cortex-M0+ se redujo de 3 a 2 etapas, lo que reduce el consumo de energía y aumenta el rendimiento (mayor IPC promedio debido a que las ramas toman un ciclo menos). Además de las características de depuración del Cortex-M0 existente, se puede agregar una opción de silicio al Cortex-M0+ llamada Micro Trace Buffer (MTB) que proporciona un búfer de seguimiento de instrucciones simple. El Cortex-M0+ también recibió características de Cortex-M3 y Cortex-M4, que se pueden agregar como opciones de silicio, como la unidad de protección de memoria (MPU) y la reubicación de la tabla de vectores. [18]
Las características clave del núcleo Cortex-M0+ son: [18]
- Arquitectura ARMv6-M [14]
- Tubería de 2 etapas (una menos que Cortex-M0)
- Conjuntos de instrucciones: (igual que Cortex-M0)
- Pulgar 1 (la mayoría), falta CBZ, CBNZ, IT
- Pulgar-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR
- Multiplicación de números enteros de hardware de 32 bits con resultado de 32 bits
- 1 a 32 interrupciones , más NMI
Opciones de silicio:
- Velocidad de multiplicación de números enteros por hardware: 1 o 32 ciclos
- Unidad de protección de memoria (MPU) de 8 regiones (igual que M3 y M4)
- Reubicación de la tabla vectorial (igual que M3, M4)
- Puerto de E/S de ciclo único (disponible en M0+/M23)
- Tampón de micro trazas (MTB) (disponible en M0+/M23/M33/M35P)
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M0+:
- Semiconductores ABOV A31G11x, A31G12x, A31G314
- Cypress PSoC 4000S, 4100S, 4100S+, 4100PS, 4700S, FM0+
- Epson S1C31W74, S1C31D01, S1C31D50
- Holtek HT32F52000
- Microchip SAM C2, D0, D1, D2, DA, L2, R2, R3; y PIC32CM JH y MC [31]
- NXP LPC800 , LPC11E60, LPC11U60
- NXP ( Freescale ) Kinetis E, EA, L, M, V1, W0, S32K11x
- Raspberry Pi RP2040 (dos núcleos M0+)
- Renesas S124, S128, RE, RE01
- Silicon Labs ( Energy Micro ) EFM32 Cero, Feliz
- ST STM32 L0 , G0 , C0 , WL (un Cortex-M4 + un Cortex-M0+)
Los siguientes chips tienen un Cortex-M0+ como núcleo secundario:
Los microcontroladores ARM más pequeños son del tipo Cortex-M0+ (a partir de 2014, el más pequeño, con 1,6 mm por 2 mm en un paquete a escala de chip, es Kinetis KL03). [32]
El 21 de junio de 2018, investigadores de la Universidad de Michigan anunciaron el « ordenador más pequeño del mundo» o dispositivo informático, basado en el ARM Cortex-M0+ (e incluyendo RAM y transmisores y receptores inalámbricos basados en energía fotovoltaica ), en el Simposio de 2018 sobre tecnología y circuitos VLSI con el artículo «Un sistema de sensor inalámbrico y sin batería de 0,04 mm 3 16 nW con procesador Cortex-M0+ integrado y comunicación óptica para medición de temperatura celular». El dispositivo tiene una décima parte del tamaño del ordenador récord mundial que IBM afirmó haber alcanzado en marzo de 2018, que es más pequeño que un grano de sal.
Corteza-M1
El Cortex-M1 es un núcleo optimizado especialmente diseñado para ser cargado en chips FPGA . [4]
Las características clave del núcleo Cortex-M1 son: [19]
- Arquitectura ARMv6-M [14]
- Tubería de 3 etapas .
- Conjuntos de instrucciones:
- Pulgar-1 (la mayoría), falta CBZ, CBNZ, IT.
- Pulgar-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR.
- Multiplicación de enteros de hardware de 32 bits con resultado de 32 bits.
- 1 a 32 interrupciones , más NMI .
Opciones de silicio:
- Velocidad de multiplicación de enteros por hardware: 3 o 33 ciclos.
- Memoria estrechamente acoplada (TCM) opcional: 0 a 1 MB de instrucciones-TCM, 0 a 1 MB de datos-TCM, cada uno con ECC opcional.
- Interrupciones externas: 0, 1, 8, 16, 32.
- Depuración: ninguna, reducida, completa.
- Orden de bytes de datos: little-endian o BE-8 big-endian.
- Extensión del sistema operativo: presente o ausente.
Papas fritas
Los siguientes proveedores admiten el Cortex-M1 como núcleo blando en sus chips FPGA:
- Altera Ciclón-II, Ciclón-III, Stratix-II, Stratix-III
- GOWIN M1 [33]
- Actel / Microsemi / Microchip Fusion, IGLOO/e, ProASIC3L, ProASIC3/E
- Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [34]
Corteza-M3

_MCU.jpg/500px-LPCXpresso_DevelopmentBoard_with_NXP_LPC1343_(ARM_Cortex-M3)_MCU.jpg)
Las características clave del núcleo Cortex-M3 son: [20] [35]
- Arquitectura ARMv7-M [15]
- Tubería de 3 etapas con especulación de ramas .
- Conjuntos de instrucciones:
- Pulgar-1 (entero).
- Pulgar-2 (entero).
- Multiplicación de enteros de hardware de 32 bits con resultado de 32 o 64 bits, con signo o sin signo, se suma o resta después de la multiplicación. La multiplicación de 32 bits es 1 ciclo, pero la multiplicación de 64 bits y las instrucciones MAC requieren ciclos adicionales.
- División de enteros de hardware de 32 bits (2–12 ciclos).
- Soporte aritmético de saturación .
- 1 a 240 interrupciones , más NMI .
- Latencia de interrupción de 12 ciclos.
- Modos de sueño integrados.
Opciones de silicio:
- Unidad de protección de memoria (MPU) opcional: 0 u 8 regiones.
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M3:
- SOBRE AC33Mx128, AC33Mx064
- SmartFusion de Actel / Microsemi / Microchip , SmartFusion 2 (FPGA)
- Dispositivos analógicos ADUCM360, ADUCM361, ADUCM3029
- Chip wifi Broadcom BCM4319XKUBG
- Cypress PSoC 5000, 5000LP, FM3
- Holtek HT32F
- Infineon TLE9860, TLE987x
- Microchip (Atmel) SAM 3A, 3N, 3S, 3U, 3X
- NXP LPC1300 , LPC1700 , LPC1800
- EN Q32M210
- Realtek RTL8710
- Laboratorios de silicio Precision32
- Silicon Labs ( Energy Micro ) EFM32 Pequeño, Gecko, Leopardo, Gigante
- ST STM32 F1, F2, L1, W
- TDK-Micronas HVC4223F
- MCU inalámbricos Texas Instruments F28, LM3, TMS470, OMAP 4 y SimpleLink (CC1310 Sub-GHz y CC2650 BLE + Zigbee + 6LoWPAN )
- Toshiba TX03
- movimiento mental movimiento mental MM32
Los siguientes chips tienen un Cortex-M3 como núcleo secundario:
- Apple A9 (Cortex-M3 como coprocesador de movimiento M9 integrado )
- CSR Quatro 5300 (Cortex-M3 como coprocesador)
- Samsung Exynos 7420 (Cortex-M3 como microcontrolador DVS ) [36]
- Texas Instruments F28, LM3, TMS470, OMAP 4470 (un Cortex-A9 + dos Cortex-M3)
- XMOS XS1-XA (siete xCORE + un Cortex-M3)
Los siguientes FPGA incluyen un núcleo Cortex-M3:
- Sistema en chip SmartFusion2 de Microsemi
Los siguientes proveedores admiten el Cortex-M3 como núcleo blando en sus chips FPGA:
- Altera Ciclón-II, Ciclón-III, Stratix-II, Stratix-III
- Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [37]
Corteza-M4
En teoría, el Cortex-M4 es un Cortex-M3 más instrucciones DSP y una unidad de punto flotante (FPU) opcional. Un núcleo con una FPU se conoce como Cortex-M4F.
Las características clave del núcleo Cortex-M4 son: [21]
- Arquitectura ARMv7E-M [15]
- Tubería de 3 etapas con especulación de ramas .
- Conjuntos de instrucciones:
- Pulgar-1 (entero).
- Pulgar-2 (entero).
- Multiplicación de enteros de hardware de 32 bits con resultado de 32 bits o 64 bits, con signo o sin signo, se suma o resta después de la multiplicación. La multiplicación de 32 bits y MAC son 1 ciclo.
- División de enteros de hardware de 32 bits (2–12 ciclos).
- Soporte aritmético de saturación .
- Extensión DSP: MAC de ciclo único de 16/32 bits , MAC de ciclo único dual de 16 bits, aritmética SIMD de 8/16 bits .
- 1 a 240 interrupciones , más NMI .
- Latencia de interrupción de 12 ciclos.
- Modos de sueño integrados.
Opciones de silicio:
- Unidad de punto flotante opcional (FPU): solo precisión simple compatible con IEEE-754 . Se denomina extensión FPv4-SP.
- Unidad de protección de memoria (MPU) opcional: 0 u 8 regiones.
Papas fritas
_STM_M32F407IG.jpg/500px-Embedded_World_2016,_M32F407_(cropped)_STM_M32F407IG.jpg)
Los siguientes microcontroladores se basan en el núcleo Cortex-M4:
- Dispositivos analógicos ADSP-CM40x
- Microchip (Atmel) SAM 4L, 4N, 4S
- NXP ( Freescale ) Kinetis K, W2
- ST ( STM32 ) WL (un Cortex-M4 + un Cortex-M0+)
- Texas Instruments SimpleLink Wi-Fi CC32xx, CC32xxMOD
Los siguientes microcontroladores se basan en el núcleo Cortex-M4F (M4 + FPU ):
- Dispositivos analógicos ADUCM4050
- Cypress 6200 (un Cortex-M4F + un Cortex-M0+), FM4
- Infineon XMC4000
- Máximo Darwin
- Microchip (Atmel) SAM4C (doble núcleo: un Cortex-M4F + un Cortex-M4), SAM4E, SAM4L, SAM4N, SAM4S, SAMG5, SAMD5/E5x
- Nórdico nRF52
- Nuvoton NuMicro M480
- NXP LPC4000 , LPC4300 (un Cortex-M4F + un Cortex-M0), LPC54000
- NXP ( Freescale ) Kinetis K, V3, V4, S32K14x
- Renesas S3, S5, S7, RA4, RA6
- Laboratorios de silicio ( Energy Micro ) EFM32 Wonder
- ST STM32 F3, F4, L4, L4+, G4, WB (un Cortex-M4F + un Cortex-M0+)
- Texas Instruments LM4F, TM4C, MSP432 , CC13x2R, CC1352P, CC26x2R
- Toshiba TX04
Los siguientes chips tienen un Cortex-M4 o M4F como núcleo secundario:
- NXP ( Freescale ) Vybrid VF6 (un Cortex-A5 + un Cortex-M4F)
- NXP ( Freescale ) i.MX 6 SoloX (un Cortex-A9 + un Cortex-M4F)
- NXP ( Freescale ) i.MX 7 Solo/Dual (uno o dos Cortex-A7 + un Cortex-M4F)
- NXP ( Freescale ) i.MX 8 (dos Cortex-A72 + cuatro Cortex-A53 + dos Cortex-M4F)
- NXP ( Freescale ) i.MX 8M y 8M Mini (cuatro Cortex-A53 + un Cortex-M4F)
- NXP ( Freescale ) i.MX 8X (cuatro Cortex-A35 + un Cortex-M4F)
- ST STM32MP1 (uno o dos Cortex-A7 + un Cortex-M4)
- Texas Instruments OMAP 5 (dos Cortex-A15 + dos Cortex-M4)
- Texas Instruments Sitara AM5700 (uno o dos Cortex-A15 + dos Cortex-M4 como unidades de procesamiento de imágenes + dos Cortex-M4 como unidades de propósito general)
Corteza-M7

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]
- ARMv7E-M architecture.
- 6-stage pipeline with branch speculation. Second-longest of all ARM Cortex-M cores, with the first being Cortex-M85.
- Instruction sets:
- Thumb-1 (entire).
- Thumb-2 (entire).
- 32-bit hardware integer multiply with 32-bit or 64-bit result, signed or unsigned, add or subtract after the multiply. 32-bit Multiply and MAC are 1 cycle.
- 32-bit hardware integer divide (2–12 cycles).
- Saturation arithmetic support.
- DSP extension: Single cycle 16/32-bit MAC, single cycle dual 16-bit MAC, 8/16-bit SIMD arithmetic.
- 1 to 240 interrupts, plus NMI.
- 12 cycle interrupt latency.
- Integrated sleep modes.
Silicon options:
- Optional floating-point unit (FPU): (single precision) or (single and double-precision), both IEEE-754-2008 compliant. It is called the FPv5 extension.
- Optional CPU cache: 0 to 64 KB instruction-cache, 0 to 64 KB data-cache, each with optional ECC.
- Optional Tightly-Coupled Memory (TCM): 0 to 16 MB instruction-TCM, 0 to 16 MB data-TCM, each with optional ECC.
- Optional Memory Protection Unit (MPU): 8 or 16 regions.
- Optional Embedded Trace Macrocell (ETM): instruction-only, or instruction and data.
- Optional Retention Mode (with Arm Power Management Kit) for Sleep Modes.
- Optional dual-redundant lock-step operation.
Chips
The following microcontrollers are based on the Cortex-M7 core:
Cortex-M23
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]
- ARMv8-M Baseline architecture.[30]
- 2-stage pipeline. (similar to Cortex-M0+)
- TrustZone security instructions.
- 32-bit hardware integer divide (17 or 34 cycles).(slower than divide in all other cores)
- Stack limit boundaries. (available only with SAU option)
Silicon options:
- Hardware integer multiply speed: 1 or 32 cycles.
- Hardware integer divide speed: 17 or 34 cycles maximum. Depending on divisor, instruction may complete in fewer cycles.
- Optional Memory Protection Unit (MPU): 0, 4, 8, 12, 16 regions.
- Optional Security Attribution Unit (SAU): 0, 4, 8 regions.
- Single-cycle I/O port (available in M0+/M23).
- Micro Trace Buffer (MTB)
Chips
The following microcontrollers are based on the Cortex-M23 core:
- GigaDevice GD32E2xx
- Microchip SAM L10, L11, and PIC 32CM-LE 32CM-LS
- Nuvoton M23xx family, M2xx family, NUC1262, M2L31
- Renesas S1JA, RA2A1, RA2L1, RA2E1, RA2E2
Cortex-M33
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]
- ARMv8-M Mainline architecture.[30]
- 3-stage pipeline.
- TrustZone security instructions.
- 32-bit hardware integer divide (11 cycles maximum).
- Stack limit boundaries. (available only with SAU option)
Silicon options:
- Optional Floating-Point Unit (FPU): single-precision only IEEE-754 compliant. It is called the FPv5 extension.
- Optional Memory Protection Unit (MPU): 0, 4, 8, 12, 16 regions.
- Optional Security Attribution Unit (SAU): 0, 4, 8 regions.
- Micro Trace Buffer (MTB)
Chips
The following microcontrollers are based on the Cortex-M33 core:
- Analog Devices ADUCM4
- Dialog DA1469x
- GigaDevice GD32E5, GD32W5
- Nordic nRF91, nRF5340, nRF54
- NXP LPC5500, i.MX RT600, MCX N94x/54x (dual core)
- ON RSL15
- Renesas RA4, RA6
- ST STM32 H5, L5, U5, WBA
- Silicon Labs Wireless Gecko Series 2
- Raspberry Pi RP2350
The following chips have a Cortex-M33 or M33F as a secondary core:
Cortex-M35P
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:
- STMicroelectronics ST33K
Cortex-M52
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:
- ARMv8.1-M Mainline/Helium architecture.[30]
- 4-stage pipeline.
- Stack limit boundaries (available only with SAU option).
Silicon options:
- Helium (M-Profile Vector Extension, MVE)
- Single-Precision and Double-Precision floating-point
- Digital Signal Processing (DSP) extension support
- TrustZone security extension support
- Safety and reliability (RAS) support
- Coprocessor support
- Secure and Non-secure MPU with 0, 4, 8, 12, or 16 regions
- SAU with 0, 4, or 8 regions
- Instruction cache with size of up to 64 KB
- Data cache with size of up to 64 KB
- ECC on caches and TCMs
- 1–480 interrupts
- 3–8 exception priority bits
- Internal and external WIC options, optional CTI, ITM, and DWT
- ARM Custom Instructions
Chips
- As of December 2023, no chips have been announced.
Cortex-M55
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:
- ARMv8.1-M Mainline/Helium architecture.[30]
- 4-stage pipeline.
- Stack limit boundaries (available only with SAU option).
Silicon options:
- Helium (M-Profile Vector Extension, MVE)
- Single-Precision and Double-Precision floating-point
- Digital Signal Processing (DSP) extension support
- TrustZone security extension support
- Safety and reliability (RAS) support
- Coprocessor support
- Secure and Non-secure MPU with 0, 4, 8, 12, or 16 regions
- SAU with 0, 4, or 8 regions
- Instruction cache with size of 4 KB, 8 KB, 16 KB, 32 KB, 64 KB
- Data cache with size of 4 KB, 8 KB, 16 KB, 32 KB, 64 KB
- ECC on caches and TCMs
- 1–480 interrupts
- 3–8 exception priority bits
- Internal and external WIC options, optional CTI, ITM, and DWT
- ARM Custom Instructions
Chips
- Alif Semiconductor Ensemble MCU families offer single or dual Cortex-M55 cores, each paired with Ethos-U55 NPUs
- Infineon PSoC Edge
Cortex-M85
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:
- Optional CPU cache: 0 to 64 KB instruction-cache, 0 to 64 KB data-cache, each with optional ECC.
- Optional Tightly-Coupled Memory (TCM): 0 to 16 MB instruction-TCM, 0 to 16 MB data-TCM, each with optional ECC.
- Optional Memory Protection Unit (MPU): 16 regions. Can have separate ones for secure and non-secure mode if TrustZone is implemented.
- Up to 480 interrupts and NMI
- 3–8 exception priority bits
- Optional dual-redundant lock-step operation.
Chips
- Renesas RA8
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)
- IC manufacturer website.
- IC manufacturer marketing slides.
- IC manufacturer datasheet for the exact physical chip.
- IC manufacturer reference manual that describes common peripherals and aspects of a physical chip family.
- ARM core website.
- ARM core generic user guide.
- ARM core technical reference manual.
- 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
- ARM architecture
- List of ARM architectures and cores
- Interrupt, Interrupt handler
- Real-time operating system, Comparison of real-time operating systems
References
- ^ ARM Cortex-M website; ARM Limited.
- ^ a b "Cortex-M0 Home". ARM Limited.
- ^ "Cortex-M0+ Home". ARM Limited.
- ^ a b "Cortex-M1 Home". ARM Limited.
- ^ "Cortex-M3 Home". ARM Limited.
- ^ "Cortex-M4 Home". ARM Limited.
- ^ a b c "Cortex-M7 Home". ARM Limited.
- ^ a b "Cortex-M23 Home". ARM Limited.
- ^ a b "Cortex-M33 Home". ARM Limited.
- ^ a b c "Cortex-M35P Home". ARM Limited.
- ^ a b "Cortex-M52 Home". ARM Limited.
- ^ a b "Cortex-M55 Home". ARM Limited.
- ^ a b "Cortex-M85 Home". ARM Limited.
- ^ a b c d e f g h i j k l m n o p q r "ARMv6-M Architecture Reference Manual". ARM Limited.
- ^ a b c d e f g h i j k l m n o p q r "ARMv7-M Architecture Reference Manual". ARM Limited.
- ^ a b c d Cortex-M3 Embedded Software Development; App Note 179; ARM Limited.
- ^ a b c "Cortex-M0 Technical Reference Manual". ARM Limited.
- ^ a b c d "Cortex-M0+ Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M1 Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M3 Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M4 Technical Reference Manual". ARM Limited.
- ^ a b c d "Cortex-M7 Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M23 Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M33 Technical Reference Manual". ARM Limited.
- ^ a b "Cortex-M52 Technical Reference Manual". ARM Limited.
- ^ a b "Cortex-M55 Technical Reference Manual". ARM Limited.
- ^ a b "Cortex-M85 Technical Reference Manual". ARM Limited.
- ^ a b c "Cortex-M System Design Kit (CMSDK)". Arm Holdings. Archived from the original on March 4, 2016.
- ^ a b c d e f g h i j ARM Cortex-M Programming Guide to Memory Barrier Instructions; Section 3.6 System implementation requirements; AppNote 321; ARM Limited.
- ^ a b c d e f g h i j k l "ARMv8-M Architecture Reference Manual". ARM Limited.
- ^ 32-bit PIC and SAM Microcontrollers; Microchip.
- ^ Fingas, Jon (25 February 2014). "Freescale makes the world's smallest ARM controller chip even tinier". Retrieved 2 October 2014.
- ^ GOWIN Semiconductor joins ARM DesignStart offering free ARM Cortex-M1 Processors for its FPGA product families
- ^ Cortex-M1 DesignStart FPGA XilinxEdition; ARM Limited.
- ^ Sadasivan, Shyam. "An Introduction to the ARM Cortex-M3 Processor" (PDF). ARM Limited. Archived from the original (PDF) on July 26, 2014.
- ^ "Samsung Exynos 7420 Deep Dive - Inside a Modern 14nm SoC". AnandTech. Retrieved 2015-06-15.
- ^ Cortex-M3 DesignStart FPGA XilinxEdition
- ^ "ARM Supercharges MCU Market with High Performance Cortex-M7 Processor". ARM Limited (Press release). September 24, 2014.
- ^ a b c d New ARM Cortex-M processors offer the next industry standard for secure IoT; ARM Limited; October 25, 2016.
- ^ a b ARMv8-M Architecture Simplifies Security for Smart Embedded Devices; ARM Limited; November 10, 2015.
Further reading
- Designer's Guide to the Cortex-M Processor Family; 3rd Ed; Trevor Martin; 648 pages; 2022; ISBN 978-0323854948.
- Definitive Guide to the ARM Cortex-M0 and Cortex-M0+ Processors; 2nd Ed; Joseph Yiu; 784 pages; 2015; ISBN 978-0128032770.
- Definitive Guide to the ARM Cortex-M3 and Cortex-M4 Processors; 3rd Ed; Joseph Yiu; 864 pages; 2013; ISBN 978-0124080829.
- Definitive Guide to the ARM Cortex-M23 and Cortex-M33 Processors; 1st Ed; Joseph Yiu; 928 pages; 2020; ISBN 978-0128207352.
- Microcontrollers with C: Cortex-M and Beyond; 1st Ed; Klaus Elk; 227 pages; 2023; ISBN 979-8862003437.
- Embedded Systems with ARM Cortex-M Microcontrollers in Assembly Language and C; 4th Ed; Yifeng Zhu; 730 pages; 2023; ISBN 978-0982692677.
- ARM Assembly for Embedded Applications; 5th Ed; Daniel Lewis; 379 pages; 2019; ISBN 978-1092542234.
- Assembly Language Programming: ARM Cortex-M3; 1st Ed; Vincent Mahout; 256 pages; 2012; ISBN 978-1848213296.
- Digital Signal Processing and Applications Using the ARM Cortex-M4; 1st Ed; Donald Reay; 320 pages; 2015; ISBN 978-1118859049.
- Hands-On RTOS with Microcontrollers; 1st Ed; Brian Amos; 496 pages; 2020; ISBN 978-1838826734.
External links
- ARM Cortex-M official documents
- ARM Cortex-M official website
- Cortex-M for Beginners arm.com
- ARMv8-M Security Extensions arm.com
- Cortex Microcontroller Software Interface Standard (CMSIS) arm.com
- Quick reference cards
- Instructions: Thumb-1 (1), ARM and Thumb-2 (2), Vector Floating-Point (3) arm.com
- Opcodes: Thumb-1 (1, 2), ARM (3, 4), GNU Assembler Directives (5).
- Migrating
- Migrating from 8051 to Cortex-M3 – arm.com
- Migrating from PIC to Cortex-M3 – arm.com
- Migrating from ARM7TDMI to Cortex-M3 – arm.com
- Migrating from Cortex-M4 to Cortex-M7 – keil.com
- Other
- Bit Banding on STM32 Cortex-M microcontrollers