El ARM Cortex-M es un grupo de núcleos de procesador RISC ARM de 32 bits con licencia de Arm Holdings . Estos núcleos están optimizados para circuitos integrados de bajo costo 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 están incrustados dentro de otros tipos de chips. La familia Cortex-M consta de Cortex-M0, Cortex-M0 +, Cortex-M1, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-M35P, Cortex-M55. [2] [3] [4] [5] [6] [7] [8] Los núcleos Cortex-M4 / M7 / M33 / M35P / M55 tienen una opción de silicio FPU , y cuando se incluyen en el silicio, estos núcleos a veces se conocen como "Cortex-Mx con FPU" o "Cortex-MxF", donde 'x' es la variante principal.
Consulte también: Arquitectura ARM y Lista de núcleos ARM
La familia ARM Cortex-M son núcleos de microprocesador ARM que están 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 los 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 el núcleo Cortex-A es que no hay una unidad de gestión de memoria (MMU). Un sistema operativo completo normalmente no se ejecuta en esta clase de procesador.
Aunque los microcontroladores de 8 bits eran muy populares en el pasado, Cortex-M ha ido reduciendo lentamente el mercado de 8 bits a medida que los precios de los chips Cortex-M de gama baja se han movido a la baja. Cortex-M se ha convertido en un reemplazo popular para los chips de 8 bits en aplicaciones que se benefician de las operaciones matemáticas de 32 bits y reemplazan los núcleos ARM heredados más antiguos como ARM7 y ARM9 .
Licencia
Arm Holdings no fabrica ni vende dispositivos de CPU basados en sus propios diseños, sino que otorga licencias de la arquitectura del procesador a las partes interesadas. Arm ofrece una variedad de términos de licencia, que varían en costo y entregables. Para todos los licenciatarios, Arm 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 contiene la CPU ARM.
Personalización de silicio
Los fabricantes de dispositivos integrados (IDM) reciben la IP 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, muy bajo consumo de energía, 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 ARM en particular Chip de CPU, 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: un temporizador de sistema de 24 bits que amplía la funcionalidad tanto del procesador como del controlador de interrupción vectorial anidado (NVIC). Cuando está presente, también proporciona una interrupción SysTick de prioridad configurable adicional. [9] [10] [11] Aunque el temporizador SysTick es opcional, es muy raro encontrar un microcontrolador Cortex-M sin él. Si un microcontrolador Cortex-M33 tiene la opción de extensión de seguridad, entonces tiene dos SysTicks, uno seguro y otro no seguro.
Banda de bits: asigna una palabra completa de memoria a un solo bit en la región de la banda de bits. Por ejemplo, escribir en una palabra de alias activará o borrará el bit correspondiente en la región de la banda de bits. Esto permite que cada bit individual en la región de la banda de bits sea directamente accesible desde una dirección alineada por palabra. En particular, los bits individuales se pueden establecer, borrar o alternar desde C / C ++ sin realizar una secuencia de instrucciones de lectura-modificación-escritura. [9] [10] [11] 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 privilegio y acceso. Admite hasta ocho regiones diferentes, cada una de las cuales se puede dividir en otras ocho subregiones de igual tamaño. [9] [10] [11]
Tightly-Coupled Memory (TCM): RAM de baja latencia que se utiliza para almacenar rutinas, datos y pilas críticas. Aparte de la memoria caché, suele ser la RAM más rápida del microcontrolador.
Componentes opcionales ARM Cortex-M
ARM Core
Corteza M0 [2]
Corteza M0 + [3]
Corteza M1 [4]
Corteza M3 [5]
Corteza M4 [6]
Corteza M7 [7]
Corteza M23 [8]
Corteza M33 [12]
Corteza M35P
SysTick 24 bits Timer
Opcional (0,1)
Opcional (0,1)
Opcional (0,1)
Sí (1)
Sí (1)
Sí (1)
Opcional (0,1,2)
Sí (1,2)
Sí (1,2)
Puerto de E / S de ciclo único
No
Opcional
No
No
No
No
Opcional
No
No
Memoria de banda de bits
No [13]
No [13]
No*
Opcional
Opcional
Opcional
No
No
No
Unidad de protección de memoria (MPU)
No
Opcional (0,8)
No
Opcional (0,8)
Opcional (0,8)
Opcional (0,8,16)
Opcional (0,4,8,12,16)
Opcional (0,4,8,12,16)
Opcional *
Unidad de atribución de seguridad (SAU) y límites de pila
No
No
No
No
No
No
Opcional (0,4,8)
Opcional (0,4,8)
Opcional *
Instrucción TCM
No
No
Opcional
No
No
Opcional
No
No
No
TCM de datos
No
No
Opcional
No
No
Opcional
No
No
No
Caché de instrucciones
No [14]
No [14]
No [14]
No [14]
No [14]
Opcional
No
No
Opcional
Caché de datos
No [14]
No [14]
No [14]
No [14]
No [14]
Opcional
No
No
No
Registro de compensación de tabla de vectores (VTOR)
No
Opcional (0,1)
Opcional (0,1)
Opcional (0,1)
Opcional (0,1)
Opcional (0,1)
Opcional (0,1,2)
Sí (1,2)
Sí (1,2)
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 + usando el kit de diseño del sistema Cortex-M. [13]
Nota: El software debe validar la existencia de una función antes de intentar utilizarla. [11]
Nota: Hay información pública limitada disponible para el Cortex-M35P hasta que se publique su Manual de referencia técnica .
Opciones de silicio adicionales: [9] [10]
Endianidad de datos: Little-endian o big-endian. A diferencia de los núcleos ARM heredados, el Cortex-M se fija permanentemente 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).
Controlador de interrupción de despertador: Opcional.
Registro de compensación de tabla de vectores: 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).
Número de comparadores de puntos de ruptura: 0 a 4 (M0 / M0 + / M1 / M23), 0 a 8 (M3 / M4 / M7 / M33 / M35P).
Conjuntos de instrucciones
Ver también: Arquitectura ARM § Conjunto de instrucciones
El Cortex-M0 / M0 + / M1 implementa la arquitectura ARMv6-M , [9] el Cortex-M3 implementa la arquitectura ARMv7-M , [10] el Cortex-M4 / Cortex-M7 implementa la arquitectura ARMv7E-M , [10] el Cortex-M23 / M33 / M35P implementa la arquitectura ARMv8-M , [15] y el Cortex-M55 implementa la arquitectura ARMv8.1-M . [dieciséis] Las arquitecturas son compatibles con instrucciones binarias ascendentes de ARMv6-M a ARMv7-M a ARMv7E-M. Las instrucciones binarias disponibles para Cortex-M0 / Cortex-M0 + / Cortex-M1 se pueden ejecutar sin modificaciones en 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. [9] [10] 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 de la mayoría de Thumb-1, algunos Thumb-2, incluida una multiplicación de resultados de 32 bits. El Cortex-M0 / Cortex-M0 + / Cortex-M1 / Cortex-M23 fueron diseñados para crear el dado de silicio más pequeño, teniendo así la menor cantidad de instrucciones de la familia Cortex-M.
El Cortex-M0 / M0 + / M1 incluye instrucciones Thumb-1, excepto las nuevas instrucciones (CBZ, CBNZ, IT) que se agregaron en la arquitectura ARMv7-M. El Cortex-M0 / M0 + / M1 incluye un subconjunto menor de instrucciones Thumb-2 (BL, DMB, DSB, ISB, MRS, MSR). El Cortex-M3 / M4 / M7 / M33 / M35P tiene todas las instrucciones básicas Thumb-1 y Thumb-2. 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 opcional de punto flotante de precisión simple (VFPv4-SP). El Cortex-M7 agrega una FPU opcional de doble precisión (VFPv5). [9] [10] El Cortex-M23 / M33 agrega instrucciones TrustZone .
Variaciones de instrucción ARM Cortex-M
Núcleo del brazo
Corteza M0 [2]
Corteza M0 + [3]
Corteza M1 [4]
Corteza M3 [5]
Corteza M4 [6]
Corteza M7 [7]
Corteza M23 [8]
Corteza M33 [12]
Corteza M35P
Corteza M55
Arquitectura ARM
ARMv6-M [9]
ARMv6-M [9]
ARMv6-M [9]
ARMv7-M [10]
ARMv7E-M [10]
ARMv7E-M [10]
Línea de base ARMv8-M [15]
Línea principal ARMv8-M [15]
Línea principal ARMv8-M [15]
Armv8.1-M
Arquitectura de Computadores
Von Neumann
Von Neumann
Von Neumann
Harvard
Harvard
Harvard
Von Neumann
Harvard
Harvard
Harvard
Canalización de instrucciones
3 etapas
2 etapas
3 etapas
3 etapas
3 etapas
6 etapas
2 etapas
3 etapas
3 etapas
4 a 5 etapas
Instrucciones Thumb-1
La mayoría
La mayoría
La mayoría
Completo
Completo
Completo
La mayoría
Completo
Completo
Completo
Instrucciones Thumb-2
Algunos
Algunos
Algunos
Completo
Completo
Completo
Algunos
Completo
Completo
Completo
Instrucciones de multiplicación 32x32 = resultado de 32 bits
sí
sí
sí
sí
sí
sí
sí
sí
sí
sí
Instrucciones de multiplicación 32x32 = resultado de 64 bits
No
No
No
sí
sí
sí
No
sí
sí
sí
Dividir instrucciones 32/32 = cociente de 32 bits
No
No
No
sí
sí
sí
sí
sí
sí
sí
Instrucciones saturadas
No
No
No
Algunos
sí
sí
No
sí
sí
sí
Instrucciones DSP
No
No
No
No
sí
sí
No
Opcional
Opcional
Opcional
Instrucciones de punto flotante de precisión única (SP)
No
No
No
No
Opcional
Opcional
No
Opcional
Opcional
Opcional
Instrucciones de punto flotante de doble precisión (DP)
No
No
No
No
No
Opcional
No
No
No
Opcional
Media precisión (HP)
No
No
No
No
No
No
No
No
No
Opcional
Instrucciones de TrustZone
No
No
No
No
No
No
Opcional
Opcional
Opcional
Opcional
Instrucciones del coprocesador
No
No
No
No
No
No
No
Opcional
Opcional
Opcional
Tecnología de helio
No
No
No
No
No
No
No
No
No
Opcional
Interrumpir la latencia (si la RAM de estado de espera cero)
16 ciclos
15 ciclos
23 para NMI 26 para IRQ
12 ciclos
12 ciclos
12 ciclos 14 el peor de los casos
15 sin seguridad ext 27 seguridad ext
12 sin seguridad ext ? ext de seguridad
TBD
TBD
Nota: El Cortex-M0 / M0 + / M1 no incluye estas instrucciones Thumb-1 de 16 bits : CBZ, CBNZ, IT. [9] [10]
Nota: El Cortex-M0 / M0 + / M1 solo incluye estas instrucciones Thumb-2 de 32 bits : BL, DMB, DSB, ISB, MRS, MSR. [9] [10]
Nota: El Cortex-M0 / M0 + / M1 / M23 solo tiene instrucciones de multiplicación de 32 bits con un resultado inferior a 32 bits (32 bits × 32 bits = 32 bits inferiores), mientras que el Cortex-M3 / M4 / M7 / M33 / M35P incluye instrucciones adicionales de multiplicación 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 (16 bits × 16 bits = 32 bits), (32 bits × 16 bits = 32 bits superiores), (32 bits × 32 bits = 32 bits superiores) multiplicaciones. [9] [10]
Nota: El número de ciclos para completar las instrucciones de multiplicación y división varía según los diseños de núcleo de 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 recuento de ciclos. Una interrupción que ocurra 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.
Multiplica las instrucciones "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.
Multiplica las instrucciones "resultado de 64 bits": Cortex-M3 es de 3 a 5 ciclos (según los valores), Cortex-M4 / M7 / M33 / M35P es 1 ciclo.
Divida las instrucciones: 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 la opción de 17 o 34 ciclos, Cortex-M33 es de 2 a 11 ciclos (dependiendo de los valores), Cortex-M35P está por determinar.
Nota: El Cortex-M4 / M7 / M33 / M35P tiene una opción de silicio sin FPU o FPU de precisión simple ( SP ), y el Cortex-M7 agrega una tercera opción de silicio que admite precisión simple (SP) y doble -precisión ( DP ). Si el Cortex-M4 / M7 / M33 / M35P tiene una FPU, entonces se conoce como el Cortex-M4 F / Cortex-M7 F / Cortex-M33 F / Cortex-M35P F . [9] [10]
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 recuento de ciclos de latencia de interrupción asume: 1) la pila ubicada en la RAM de estado de espera cero, 2) otra función de interrupción que no se está ejecutando actualmente, 3) La opción de extensión de seguridad no existe porque agrega ciclos adicionales. Los núcleos Cortex-M con una arquitectura de computadora de Harvard tienen una latencia de interrupción más corta que los núcleos de Cortex-M con una arquitectura de computadora de Von Neumann.
Nota: MOVW es un alias que significa instrucción MOV "amplia" de 32 bits.
Nota: Para Cortex-M1, existen instrucciones WFE / WFI / SEV, pero se ejecutan como una instrucción NOP.
Nota: Las instrucciones de FPU de precisión simple (SP) son válidas en Cortex-M4 / M7 / M33 / M35P solo cuando la opción SP FPU existe en el silicio.
Nota: Las instrucciones FPU de doble precisión (DP) son válidas en el Cortex-M7 solo cuando la opción DP FPU existe en el silicio.
Desaprobaciones
La arquitectura ARM para la serie ARM Cortex-M eliminó algunas características de los núcleos heredados más antiguos: [9] [10]
El conjunto de instrucciones ARM de 32 bits no se incluye en los núcleos Cortex-M.
Endianness se elige en la implementación de silicio en núcleos Cortex-M. Los núcleos heredados permitían el cambio "sobre la marcha" del modo endian de datos .
Los coprocesadores 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.
Las capacidades del conjunto de instrucciones ARM de 32 bits se duplican de muchas formas mediante 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. Se eliminaron algunas instrucciones Thumb-1 de 16 bits de los núcleos Cortex-M:
La instrucción "BLX <immediate>" no existe porque se usó para cambiar del conjunto de instrucciones Thumb-1 al conjunto de instrucciones ARM. La instrucción "BLX <register>" todavía está disponible en el Cortex-M.
SETEND no existe porque la conmutación sobre la marcha del modo endian de datos ya no es compatible.
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ó a 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 cambios en los modelos de excepción.
Corteza-M0
Corteza-M0
Arquitectura y clasificación
Microarquitectura
ARMv6-M
Conjunto de instrucciones
Pulgar-1 (la mayoría), Pulgar-2 (algunos)
El núcleo Cortex-M0 está optimizado para un tamaño de troquel de silicio pequeño y se utiliza en chips de precio más bajo.
Las características clave del núcleo Cortex-M0 son: [2]
Arquitectura ARMv6-M [9]
Tubería de 3 etapas
Conjuntos de instrucciones:
Thumb-1 (la mayoría), falta CBZ, CBNZ, IT
Thumb-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR
Número entero de hardware de 32 bits multiplicar por resultado de 32 bits
1 a 32 interrupciones , más NMI
Opciones de silicona:
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:
Vorago VA10800 (temperatura extrema), VA10820 (endurecido por radiación)
Los siguientes chips tienen un Cortex-M0 como núcleo secundario:
NXP LPC4300 (una Cortex-M4F + una 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 +
Corteza-M0 +
Arquitectura y clasificación
Microarquitectura
ARMv6-M
Conjunto de instrucciones
Pulgar-1 (la mayoría) , Pulgar-2 (algunos)
Placa NXP ( Freescale ) FRDM-KL25Z con KL25Z128VLK (Kinetis L)
El Cortex-M0 + es un superconjunto optimizado del Cortex-M0. El Cortex-M0 + tiene un conjunto completo de instrucciones compatible con el Cortex-M0, lo que permite el uso del mismo compilador y herramientas de depuración. La tubería Cortex-M0 + se redujo de 3 a 2 etapas, lo que reduce el uso de energía. Además de las funciones de depuración en el 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. [3]
Las características clave del núcleo Cortex-M0 + son: [3]
Arquitectura ARMv6-M [9]
Tubería de 2 etapas (una menos que Cortex-M0)
Conjuntos de instrucciones: (igual que Cortex-M0)
Thumb-1 (la mayoría), falta CBZ, CBNZ, IT
Thumb-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR
Número entero de hardware de 32 bits multiplicar por resultado de 32 bits
1 a 32 interrupciones , más NMI
Opciones de silicona:
Velocidad de multiplicación de enteros de hardware: 1 o 32 ciclos
Unidad de protección de memoria de 8 regiones (MPU) (igual que M3 y M4)
Reubicación de la tabla de vectores (igual que M3, M4)
Puerto de E / S de ciclo único (disponible en M0 + / M23)
Microchip (Atmel) SAM C2, D0, D1, D2, DA, L2, R2, R3
NXP LPC800 , LPC11E60, LPC11U60
NXP ( escala libre) Kinetis E, EA, L, M, V1, W0
Raspberry Pi RP2040 (dos núcleos M0 +)
Renesas S124, S128, RE, RE01
Silicon Labs ( Energy Micro ) EFM32 Zero, Happy
ST STM32 L0 , G0
Los siguientes chips tienen un Cortex-M0 + como núcleo secundario:
Cypress PSoC 6200 (una Cortex-M4F + una Cortex-M0 +)
ST WB (una Cortex-M4F + una Cortex-M0 +)
Los microcontroladores ARM más pequeños son del tipo Cortex-M0 + (a partir de 2014, el más pequeño de 1,6 mm por 2 mm es Kinetis KL03). [17]
El 21 de junio de 2018, los investigadores de la Universidad de Michigan anunciaron la " computadora más pequeña del mundo ", o dispositivo informático, basado en ARM Cortex-M0 + (e incluyendo RAM y transmisores y receptores inalámbricos basados en energía fotovoltaica ), en los Simposios de 2018 sobre Tecnología y circuitos VLSI con el documento "Un sistema de sensor inalámbrico y sin batería de 0.04 mm 3 16nW 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 de la computadora de IBM, de tamaño récord mundial, de meses atrás en marzo de 2018, que es más pequeña que un grano de sal.
Corteza-M1
Corteza-M1
Arquitectura y clasificación
Microarquitectura
ARMv6-M
Conjunto de instrucciones
Pulgar-1 (la mayoría) , Pulgar-2 (algunos)
El Cortex-M1 es un núcleo optimizado especialmente diseñado para cargarse en chips FPGA .
Las características clave del núcleo Cortex-M1 son: [4]
Arquitectura ARMv6-M [9]
Tubería de 3 etapas .
Conjuntos de instrucciones:
Thumb-1 (la mayoría), falta CBZ, CBNZ, IT.
Thumb-2 (algunos), solo BL, DMB, DSB, ISB, MRS, MSR.
El entero de hardware de 32 bits se multiplica por el resultado de 32 bits.
1 a 32 interrupciones , más NMI .
Opciones de silicona:
Velocidad de multiplicación de enteros por hardware: 3 o 33 ciclos.
Memoria de acoplamiento compacto (TCM) opcional: TCM de instrucciones de 0 a 1 MB, TCM de datos de 0 a 1 MB, cada uno con ECC opcional.
Interrupciones externas: 0, 1, 8, 16, 32.
Depurar: ninguno, reducido, completo.
Endianidad de datos: little-endian o BE-8 big-endian.
Extensión del SO: presente o ausente.
Papas fritas
Los siguientes proveedores admiten el Cortex-M1 como soft-cores en sus chips FPGA:
Altera Cyclone-II, Cyclone-III, Stratix-II, Stratix-III
GOWIN M1 [18]
Microsemi ( Actel ) Fusion, IGLOO / e, ProASIC3L, ProASIC3 / E
Placa Arduino Due con microcontrolador Atmel ATSAM3X8E ( núcleo ARM Cortex-M3 )
Placa de desarrollo NXP LPCXpresso con LPC1343
Las características clave del núcleo Cortex-M3 son: [5] [20]
Arquitectura ARMv7-M [10]
Oleoducto de 3 etapas con especulación de sucursales .
Conjuntos de instrucciones:
Thumb-1 (entero).
Thumb-2 (entero).
El entero de hardware de 32 bits se multiplica por el resultado de 32 o 64 bits, con o sin signo, suma o resta después de la multiplicación. La multiplicación de 32 bits es de 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 suspensión integrados.
Opciones de silicona:
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:
Silicon Labs ( Energy Micro ) Tablero Wonder Gecko STK con EFM32 WG990
Placa de plataforma de lanzamiento Stellaris de TI con LM4F120
Conceptualmente, 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: [6]
Arquitectura ARMv7E-M [10]
Oleoducto de 3 etapas con especulación de sucursales .
Conjuntos de instrucciones:
Thumb-1 (entero).
Thumb-2 (entero).
El entero de hardware de 32 bits se multiplica por el resultado de 32 o 64 bits, con o sin signo, suma o resta después de la multiplicación. Multiplicación de 32 bits y MAC son de 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 dual de ciclo único 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 suspensión integrados.
Opciones de silicona:
Unidad de punto flotante (FPU) opcional: solo precisión simple compatible con IEEE-754 . Se llama extensión FPv4-SP.
Unidad de protección de memoria opcional (MPU): 0 u 8 regiones.
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M4:
Texas Instruments OMAP 5 (dos Cortex-A15s + 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)
El Cortex-M7 es un núcleo de alto rendimiento con casi el doble de eficiencia energética que el Cortex-M4 anterior. Cuenta con una tubería superescalar de 6 etapas con predicción de rama y una unidad de punto flotante opcional capaz de operaciones de precisión simple y, opcionalmente, de precisión doble . [23] [24] Los buses de instrucciones y datos se han ampliado a 64 bits de ancho con respecto a los anteriores buses de 32 bits. Si un núcleo contiene una FPU, se conoce como Cortex-M7F; de lo contrario, es Cortex-M7.
Las características clave del núcleo Cortex-M7 son: [7]
Arquitectura ARMv7E-M.
Oleoducto de 6 etapas con especulación de sucursales . El más largo de todos los núcleos ARM Cortex-M.
Conjuntos de instrucciones:
Thumb-1 (entero).
Thumb-2 (entero).
El entero de hardware de 32 bits se multiplica por el resultado de 32 o 64 bits, con o sin signo, suma o resta después de la multiplicación. Multiplicación de 32 bits y MAC son de 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 dual de ciclo único 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 suspensión integrados.
Opciones de silicona:
Unidad de coma flotante (FPU) opcional: (precisión simple) o (precisión simple y doble), ambas compatibles con IEEE-754-2008. Se llama extensión FPv5.
Caché de CPU opcional : caché de instrucciones de 0 a 64 KB, caché de datos de 0 a 64 KB, cada uno con ECC opcional .
Memoria de acoplamiento compacto (TCM) opcional: TCM de instrucciones de 0 a 16 MB, TCM de datos de 0 a 16 MB, cada uno con ECC opcional.
Unidad de protección de memoria (MPU) opcional: 8 o 16 regiones.
Macrocélula de seguimiento integrada (ETM) opcional: solo instrucción o instrucción y datos.
Modo de retención opcional (con kit de administración de energía del brazo) para modos de suspensión.
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M7:
Microchip (Atmel) SAM E7, S7, V7
NXP ( Freescale ) Kinetis KV5x, i.MX RT
ST STM32 F7, H7
Corteza-M23
Corteza-M23
Arquitectura y clasificación
Microarquitectura
Línea de base ARMv8-M
Conjunto de instrucciones
Thumb-1 (la mayoría) , Thumb-2 (algo) , Dividir, TrustZone
El núcleo Cortex-M23 se anunció en octubre de 2016 [25] y se basó en la arquitectura ARMv8-M más nueva que se anunció previamente en noviembre de 2015. [26] Conceptualmente, el Cortex-M23 es similar a un Cortex-M0 + más instrucciones de división de enteros y TrustZone cuenta con características de seguridad y también tiene una canalización de instrucciones de 2 etapas .
Las características clave del núcleo Cortex-M23 son: [8] [25]
Arquitectura de línea de base ARMv8-M. [15]
Tubería de 2 etapas. (similar a Cortex-M0 +)
Instrucciones de seguridad de TrustZone . (disponible solo en M23 / M33 / M35P)
División de enteros de hardware de 32 bits (17 o 34 ciclos). (no disponible en M0 / M0 + / M1) (más lento que dividir en todos los demás núcleos)
Límites de apilamiento. (disponible solo con la opción SAU) (disponible en M23 / M33 / M35P)
Opciones de silicona:
Velocidad de multiplicación de enteros de hardware: 1 o 32 ciclos.
Velocidad de división de enteros por hardware: 17 o 34 ciclos como máximo. Dependiendo del divisor, la instrucción puede completarse en menos ciclos.
Unidad de protección de memoria (MPU) opcional: 0, 4, 8, 12, 16 regiones.
Unidad de atribución de seguridad opcional (SAU): 0, 4, 8 regiones.
Puerto de E / S de ciclo único (disponible en M0 + / M23).
El núcleo Cortex-M33 se anunció en octubre de 2016 [25] y se basó en la arquitectura ARMv8-M más nueva que se anunció previamente en noviembre de 2015. [26] Conceptualmente, el Cortex-M33 es similar a un cruce de Cortex-M4 y Cortex- M23, y también tiene una canalización de instrucciones de 3 etapas .
Las características clave del núcleo Cortex-M33 son: [12] [25]
Arquitectura de línea principal ARMv8-M. [15]
Tubería de 3 etapas.
Instrucciones de seguridad de TrustZone . (disponible solo en M23 / M33 / M35P)
División de enteros de hardware de 32 bits (11 ciclos como máximo). (no disponible en M0 / M0 + / M1)
Límites de apilamiento. (disponible solo con la opción SAU) (disponible en M23 / M33 / M35P)
Opciones de silicona:
Unidad de coma flotante (FPU) opcional: solo precisión simple compatible con IEEE-754 . Se llama extensión FPv5.
Unidad de protección de memoria (MPU) opcional: 0, 4, 8, 12, 16 regiones.
Unidad de atribución de seguridad opcional (SAU): 0, 4, 8 regiones.
El núcleo Cortex-M35P se anunció en mayo de 2018. Conceptualmente es un núcleo Cortex-M33 con una nueva caché de instrucciones, además de nuevos conceptos de hardware a prueba de manipulaciones tomados de la familia ARM SecurCore y características de paridad configurable y ECC. [27]
Actualmente, hay información pública limitada disponible para el Cortex-M35P hasta que se publique su Manual de referencia técnica .
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M35P:
El núcleo Cortex-M55 se anunció en febrero de 2020 y se basa en la arquitectura Armv8.1-M que se anunció anteriormente en febrero de 2019. También tiene un canal de instrucción de 4 etapas.
Las características clave del núcleo Cortex-M55 incluyen:
Arquitectura de línea principal / helio ARMv8.1-M. [15]
Tubería de 4 etapas.
Límites de apilamiento (disponible solo con la opción SAU).
Opciones de silicona:
Helio (extensión vectorial de perfil M, MVE)
Punto flotante de precisión simple y precisión doble
Soporte de extensión de procesamiento de señal digital (DSP)
Soporte de extensión de seguridad TrustZone
Soporte de seguridad y confiabilidad (RAS)
Soporte de coprocesador
MPU seguro y no seguro con 0, 4, 8, 12 o 16 regiones
SAU con 0, 4 u 8 regiones
Caché de instrucciones con un tamaño de 4 KB, 8 KB, 16 KB, 32 KB, 64 KB
Caché de datos con tamaño de 4 KB, 8 KB, 16 KB, 32 KB, 64 KB
ECC en cachés y TCM
1-480 interrupciones
3-8 bits de prioridad de excepción
Opciones WIC internas y externas, CTI, ITM y DWT opcionales
Instrucciones personalizadas de ARM (disponibles en una versión futura)
Papas fritas
A septiembre de 2021, no se han anunciado chips.
Herramientas de desarrollo
Segger J-Link PRO. Sonda de depuración con interfaz SWD o JTAG para apuntar al chip ARM e interfaces USB o Ethernet a la computadora host.
Artículo principal: Lista de herramientas de desarrollo ARM Cortex-M
Documentación
La documentación de los chips ARM es extensa. En el pasado, la documentación de microcontroladores de 8 bits normalmente cabía en un solo documento, pero a medida que los microcontroladores han evolucionado, también lo ha hecho todo lo necesario para admitirlos. Un paquete de documentación para chips ARM generalmente consta de una colección de documentos del fabricante de circuitos integrados, así como del proveedor del núcleo de la CPU ( Arm Holdings ).
Un árbol de documentación de arriba hacia abajo típico es:
Árbol de documentación (de arriba a abajo)
Sitio web del fabricante de IC.
Diapositivas de marketing del fabricante de circuitos integrados.
Hoja de datos del fabricante de IC para el chip físico exacto.
Manual de referencia del fabricante de circuitos integrados que describe los periféricos comunes y los aspectos de una familia de chips físicos.
Sitio web principal de ARM.
Guía de usuario genérica de ARM core.
Manual de referencia técnica básica de ARM.
Manual de referencia de arquitectura ARM.
Los fabricantes de circuitos integrados tienen documentos adicionales, como: manuales de usuario de la placa de evaluación, notas de aplicación, guías de introducción, documentos de la biblioteca de software, erratas y más. Consulte la sección Enlaces externos para obtener enlaces a documentos oficiales de Arm.
Ver también
Portal de electrónica
Arquitectura ARM
Lista de arquitecturas y núcleos ARM
JTAG , SWD
Interrupción , manejador de interrupciones
Sistema operativo en tiempo real , Comparación de sistemas operativos en tiempo real
Referencias
^ Sitio web de ARM Cortex-M; arm.com
^ a b c d Manual de referencia técnica de Cortex-M0 r0p0; Arm Holdings.
^ a b c d e Manual de referencia técnica de Cortex-M0 + r0p0; Arm Holdings.
^ a b c d Manual de referencia técnica de Cortex-M1 r1p0; Arm Holdings.
^ a b c d Manual de referencia técnica de Cortex-M3 r2p1; Arm Holdings.
^ a b c d Manual de referencia técnica de Cortex-M4 r0p1; Arm Holdings.
^ a b c d Manual de referencia técnica de Cortex-M7 r0p2; Arm Holdings.
^ a b c d Manual de referencia técnica de Cortex-M23 r1p0; Arm Holdings.
^ a b c d e f g h i j k l m n o p q r Manual de referencia de arquitectura ARMv6-M; Arm Holdings.
^ a b c d e f g h i j k l m n o p q r Manual de referencia de arquitectura ARMv7-M; Arm Holdings.
^ a b c d Desarrollo de software integrado Cortex-M3; Nota de aplicación 179; Arm Holdings.
^ a b c Manual de referencia técnica de Cortex-M33 r0p3; Arm Holdings.
^ a b c Kit de diseño del sistema Cortex-M; Arm Holdings.
^ a b c d e f g h i j Guía de programación de ARM Cortex-M para instrucciones de barrera de memoria; Sección 3.6 Requisitos de implementación del sistema; AppNote 321; arm.com
^ a b c d e f g Manual de referencia de arquitectura ARMv8-M; Arm Holdings.
^ Manual de referencia de arquitectura ARMv8.1-M; Arm Holdings.
^ Fingas, Jon (25 de febrero de 2014). "Freescale hace que el chip controlador ARM más pequeño del mundo sea aún más pequeño" . Consultado el 2 de octubre de 2014 .
^ GOWIN Semiconductor se une a ARM DesignStart ofreciendo procesadores ARM Cortex-M1 gratuitos para sus familias de productos FPGA
^ Cortex-M1 DesignStart FPGA XilinxEdition
^ Sadasivan, Shyam. "Introducción al procesador ARM Cortex-M3" (PDF) . Arm Holdings . Archivado desde el original (PDF) el 26 de julio de 2014.
^ "El Samsung Exynos 7420 Deep Dive - Dentro de un moderno SoC de 14nm" . AnandTech . Consultado el 15 de junio de 2015 .
^ Cortex-M3 DesignStart FPGA XilinxEdition
^ "Procesador Cortex-M7" . Arm Holdings . Consultado el 24 de septiembre de 2014 .
^ "ARM sobrealimenta el mercado de MCU con procesador Cortex-M7 de alto rendimiento" . arm.com (Comunicado de prensa). 24 de septiembre de 2014.
^ a b c d Los nuevos procesadores ARM Cortex-M ofrecen el próximo estándar de la industria para IoT seguro; Arm Holdings; 25 de octubre de 2016.
^ a b La arquitectura ARMv8-M simplifica la seguridad de los dispositivos integrados inteligentes; Arm Holdings; 10 de noviembre de 2015.
^ "Procesador Cortex-M35P" . Arm Holdings . Consultado el 4 de junio de 2018 .
Otras lecturas
Sistemas integrados con microcontroladores ARM Cortex-M en lenguaje ensamblador y C ; 3ª Ed; Yifeng Zhu; 738 páginas; 2017; ISBN 978-0982692660 .
Guía del diseñador para la familia de procesadores Cortex-M ; 2nd Ed; Trevor Martin; 490 páginas; 2016; ISBN 978-0081006290 .
Ensamblaje ARM para aplicaciones integradas ; 3ª Ed; Daniel Lewis; 318 páginas; 2017; ISBN 978-1543908046 .
Guía definitiva para los procesadores ARM Cortex-M0 y Cortex-M0 + ; 2nd Ed; Joseph Yiu; 784 páginas; 2015; ISBN 978-0128032770 .
Guía definitiva para los procesadores ARM Cortex-M3 y Cortex-M4 ; 3ª Ed; Joseph Yiu; 600 páginas; 2013; ISBN 978-0124080829 .
Procesamiento de señales digitales y aplicaciones con ARM Cortex-M4 ; 1ª Ed; Donald Reay; 250 páginas; 2014; ISBN 978-1118859049 .
Sistemas integrados: Introducción a los microcontroladores ARM Cortex-M ; 5th Ed; Jonathan Valvano; 506 páginas; 2012; ISBN 978-1477508992 .
Programación en lenguaje ensamblador: ARM Cortex-M3 ; 1ª Ed; Vincent Mahout; 256 páginas; 2012; ISBN 978-1848213296 .
enlaces externos
Wikimedia Commons tiene medios relacionados con ARM Cortex-M .
Documentos oficiales ARM Cortex-M
Sitio web oficial de ARM Cortex-M
Cortex-M para principiantes - arm.com
Extensiones de seguridad ARMv8-M - arm.com
Estándar de interfaz de software del microcontrolador Cortex (CMSIS) - arm.com
Núcleo ARM
Ancho de bits
Sitio web de ARM
Guía de usuario genérica de ARM
Manual de referencia técnica ARM
Manual de referencia de arquitectura ARM
Corteza-M0
32
Enlace
Enlace
Enlace
ARMv6-M
Corteza-M0 +
32
Enlace
Enlace
Enlace
ARMv6-M
Corteza-M1
32
Enlace
Enlace
Enlace
ARMv6-M
Corteza-M3
32
Enlace
Enlace
Enlace
ARMv7-M
Corteza-M4
32
Enlace
Enlace
Enlace
ARMv7E-M
Corteza-M7
32
Enlace
Enlace
Enlace
ARMv7E-M
Corteza-M23
32
Enlace
Enlace
Enlace
ARMv8-M
Corteza-M33
32
Enlace
Enlace
Enlace
ARMv8-M
Corteza-M35P
32
Enlace
TBD
TBD
ARMv8-M
Corteza-M55
32
Enlace
TBD
TBD
ARMv8.1-M
Tarjetas de referencia rápida
Instrucciones: Thumb-1 ( 1 ), ARM y Thumb-2 ( 2 ), Vector Floating-Point ( 3 ) - arm.com
Códigos de operación: Thumb-1 ( 1 , 2 ), ARM ( 3 , 4 ), Directivas de ensamblador GNU ( 5 ).
Migrando
Migración de 8051 a Cortex-M3 - arm.com
Migración de PIC a Cortex-M3 - arm.com
Migración de ARM7TDMI a Cortex-M3 - arm.com
Migración de Cortex-M4 a Cortex-M7 - keil.com
Otro
Bandas de bits en microcontroladores STM32 Cortex-M