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] Una opción de unidad de punto flotante (FPU) está 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.
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. Arm proporciona a todos los licenciatarios 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 (dependiendo de 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.
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]
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]
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]
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 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).
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]
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).
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
El Cortex-M7 es un núcleo de alto rendimiento con casi el doble de eficiencia energética que el antiguo Cortex-M4. [7] Cuenta con una tubería superescalar de 6 etapas con predicción de ramificaciones y una unidad de punto flotante opcional capaz de realizar operaciones de precisión simple y, opcionalmente, de precisión doble . [7] [38] Los buses de instrucciones y datos se han ampliado a 64 bits de ancho en comparación con los buses de 32 bits anteriores. Si un núcleo contiene una FPU, se lo conoce como Cortex-M7F; de lo contrario, es un Cortex-M7.
Las características clave del núcleo Cortex-M7 son: [22]
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).
Unidad de coma flotante (FPU) opcional: (precisión simple) o (precisión simple y doble), ambas compatibles con IEEE-754-2008. Se denomina extensión FPv5.
Caché de CPU opcional : de 0 a 64 KB de caché de instrucciones, de 0 a 64 KB de caché de datos, cada uno con ECC opcional .
Memoria estrechamente acoplada opcional (TCM): 0 a 16 MB de instrucciones-TCM, 0 a 16 MB de datos-TCM, cada uno con ECC opcional.
Unidad de protección de memoria (MPU) opcional: 8 o 16 regiones.
Macrocelda de seguimiento integrado opcional (ETM): 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.
El núcleo Cortex-M23 se anunció en octubre de 2016 [39] y se basa en la arquitectura ARMv8-M que se anunció previamente en noviembre de 2015. [40] Conceptualmente, el Cortex-M23 es similar a un Cortex-M0+ más instrucciones de división de enteros y características de seguridad TrustZone, y también tiene una secuencia de instrucciones de 2 etapas . [8]
Las características clave del núcleo Cortex-M23 son: [23] [39]
El núcleo Cortex-M33 se anunció en octubre de 2016 [39] y se basa en la arquitectura ARMv8-M que se anunció previamente en noviembre de 2015. [40] Conceptualmente, el Cortex-M33 es similar a un cruce de Cortex-M4 y Cortex-M23, y también tiene un flujo de instrucciones de 3 etapas . [9]
Las características clave del núcleo Cortex-M33 son: [24] [39]
El núcleo Cortex-M35P se anunció en mayo de 2018 y se basa en la arquitectura Armv8-M . Es conceptualmente 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 funciones de paridad y ECC configurables. [10]
Actualmente, la información sobre el Cortex-M35P es limitada, porque su Manual de referencia técnica y su Guía de usuario genérica aún no se han publicado.
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex-M35P:
El núcleo Cortex-M52 se anunció en noviembre de 2023 y se basa en la arquitectura Armv8.1-M . Conceptualmente, puede verse como un cruce entre el Cortex-M33 y el Cortex-M55. Las diferencias clave son que su coprocesador Helium es de un solo latido (el M55 es de doble latido) y tiene un bus principal de 32 bits similar al M33 para facilitar la transición de aplicaciones. Tiene un flujo de instrucciones de 4 etapas. [11]
Las características clave del núcleo Cortex-M52 incluyen:
Arquitectura principal/Helium de ARMv8.1-M. [30]
Tubería de 4 etapas.
Límites de pila (disponibles solo con la opción SAU).
Bus principal de 32 bits (AHB o AXI) [11]
Opciones de silicio:
Helio (extensión vectorial de perfil M, MVE)
Extensión de autenticación de puntero e identificación de destino de rama
Punto flotante de precisión simple y doble precisión
Soporte de extensión de procesamiento de señal digital (DSP)
Compatibilidad con la extensión de seguridad TrustZone
Soporte de seguridad y confiabilidad (RAS)
Soporte de coprocesador
MPU segura y no segura con 0, 4, 8, 12 o 16 regiones
SAU con 0, 4 u 8 regiones
Caché de instrucciones con un tamaño de hasta 64 KB
Caché de datos con un tamaño de hasta 64 KB
ECC sobre cachés y TCM
1–480 interrupciones
3–8 bits de prioridad de excepción
Opciones de WIC internas y externas, CTI, ITM y DWT opcionales
Instrucciones personalizadas de ARM
Papas fritas
Los siguientes microcontroladores se basan en el núcleo Cortex M52
Semiconductor Geehy G32R5 [41]
Corteza-M55
El núcleo Cortex-M55 se anunció en febrero de 2020 y se basa en la arquitectura Armv8.1-M . Tiene un flujo de instrucciones de 4 o 5 etapas. [12]
Las características clave del núcleo Cortex-M55 incluyen:
Arquitectura principal/Helium de ARMv8.1-M. [30]
Tubería de 4 etapas.
Límites de pila (disponibles solo con la opción SAU).
Bus principal AXI de 64 bits [12]
Opciones de silicio:
Helio (extensión vectorial de perfil M, MVE)
Punto flotante de precisión simple y doble precisión
Soporte de extensión de procesamiento de señal digital (DSP)
Compatibilidad con la extensión de seguridad TrustZone
Soporte de seguridad y confiabilidad (RAS)
Soporte de coprocesador
MPU segura y no segura 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 un tamaño de 4 KB, 8 KB, 16 KB, 32 KB, 64 KB
ECC sobre cachés y TCM
1–480 interrupciones
3–8 bits de prioridad de excepción
Opciones de WIC internas y externas, CTI, ITM y DWT opcionales
Instrucciones personalizadas de ARM
Papas fritas
Las familias de MCU Alif Semiconductor Ensemble ofrecen núcleos Cortex-M55 simples o duales, cada uno emparejado con NPU Ethos-U55
El núcleo Cortex-M85 se anunció en abril de 2022 y se basa en la arquitectura Armv8.1-M . Tiene un flujo de instrucciones de 7 etapas. [13]
Opciones de silicio:
Caché de CPU opcional : de 0 a 64 KB de caché de instrucciones, de 0 a 64 KB de caché de datos, cada uno con ECC opcional .
Memoria estrechamente acoplada opcional (TCM): 0 a 16 MB de instrucciones-TCM, 0 a 16 MB de datos-TCM, cada uno con ECC opcional.
Unidad de protección de memoria (MPU) opcional: 16 regiones. Puede tener regiones independientes para el modo seguro y el no seguro si se implementa TrustZone .
La documentación de los chips ARM es extensa. En el pasado, la documentación de los microcontroladores de 8 bits cabía normalmente en un único documento, pero a medida que los microcontroladores han evolucionado, también lo ha hecho todo lo necesario para respaldarlos. Un paquete de documentación para chips ARM suele estar compuesto por una colección de documentos del fabricante del CI y del proveedor del núcleo de la CPU ( ARM Limited ).
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 del circuito integrado para el chip físico exacto.
Manual de referencia del fabricante de circuitos integrados que describe periféricos comunes y aspectos de una familia de chips físicos.
Sitio web principal de ARM.
Guía de usuario genérica del núcleo ARM.
Manual de referencia técnica del núcleo ARM.
Manual de referencia de la arquitectura ARM.
Los fabricantes de circuitos integrados tienen documentos adicionales, como manuales de usuario de placas de evaluación, notas de aplicación, guías de inicio, documentos de bibliotecas de software, erratas y más. Consulte la sección Enlaces externos para obtener enlaces a documentos oficiales de Arm.
^ abcdefghijklmnopqr "Manual de referencia de la arquitectura ARMv6-M". ARM Limited .
^ abcdefghijklmnopqr "Manual de referencia de la arquitectura ARMv7-M". ARM Limited .
^ abcd Desarrollo de software integrado Cortex-M3; Nota de aplicación 179; ARM Limited.
^ abc "Manual de referencia técnica de Cortex-M0". ARM Limited .
^ abcd "Manual de referencia técnica de Cortex-M0+". ARM Limited .
^ abc "Manual de referencia técnica de Cortex-M1". ARM Limited .
^ abc "Manual de referencia técnica de Cortex-M3". ARM Limited .
^ abc "Manual de referencia técnica de Cortex-M4". ARM Limited .
^ abcd "Manual de referencia técnica de Cortex-M7". ARM Limited .
^ abc "Manual de referencia técnica de Cortex-M23". ARM Limited .
^ abc "Manual de referencia técnica de Cortex-M33". ARM Limited .
^ ab "Manual de referencia técnica de Cortex-M52". ARM Limited .
^ ab "Manual de referencia técnica de Cortex-M55". ARM Limited .
^ ab "Manual de referencia técnica de Cortex-M85". ARM Limited .
^ abc "Kit de diseño de sistemas Cortex-M (CMSDK)". Arm Holdings . Archivado desde el original el 4 de marzo de 2016.
^ abcdefghij Guía de programación de instrucciones de barrera de memoria ARM Cortex-M; Sección 3.6 Requisitos de implementación del sistema; AppNote 321; ARM Limited.
^ abcdefghijkl "Manual de referencia de la arquitectura ARMv8-M". ARM Limited .
^ Microcontroladores PIC y SAM de 32 bits; Microchip.
^ 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 y ofrece procesadores ARM Cortex-M1 gratuitos para sus familias de productos FPGA
^ FPGA Cortex-M1 DesignStart XilinxEdition; ARM Limited.
^ Sadasivan, Shyam. "Introducción al procesador ARM Cortex-M3" (PDF) . ARM Limited. Archivado desde el original (PDF) el 26 de julio de 2014.
^ "Análisis en profundidad del Samsung Exynos 7420: el interior de un SoC moderno de 14 nm". AnandTech . Consultado el 15 de junio de 2015 .
^ FPGA Cortex-M3 DesignStart Edición Xilinx
^ "ARM potencia el mercado de microcontroladores con el procesador Cortex-M7 de alto rendimiento". ARM Limited (nota de prensa). 24 de septiembre de 2014.
^ abcd Los nuevos procesadores ARM Cortex-M ofrecen el próximo estándar industrial para IoT seguro; ARM Limited; 25 de octubre de 2016.
^ ab La arquitectura ARMv8-M simplifica la seguridad de los dispositivos integrados inteligentes; ARM Limited; 10 de noviembre de 2015.
^ "El primer MCU de control en tiempo real de doble núcleo del mundo con procesador Cortex-M52 se presentó en Electronica China 2024".
Lectura adicional
Guía del diseñador para la familia de procesadores Cortex-M ; 3.ª edición; Trevor Martin; 648 páginas; 2022; ISBN 978-0323854948 .
Guía definitiva de los procesadores ARM Cortex-M0 y Cortex-M0+ ; 2.a edición; Joseph Yiu; 784 páginas; 2015; ISBN 978-0128032770 .
Guía definitiva de los procesadores ARM Cortex-M3 y Cortex-M4 ; 3.ª edición; Joseph Yiu; 864 páginas; 2013; ISBN 978-0124080829 .
Guía definitiva de los procesadores ARM Cortex-M23 y Cortex-M33 ; 1.ª edición; Joseph Yiu; 928 páginas; 2020; ISBN 978-0128207352 .
Microcontroladores con C: Cortex-M y más allá ; 1.ª edición; Klaus Elk; 227 páginas; 2023; ISBN 979-8862003437 .
Sistemas integrados con microcontroladores ARM Cortex-M en lenguaje ensamblador y C ; 4.ª edición; Yifeng Zhu; 730 páginas; 2023; ISBN 978-0982692677 .
Ensamblaje ARM para aplicaciones integradas ; 5.ª edición; Daniel Lewis; 379 páginas; 2019; ISBN 978-1092542234 .
Programación en lenguaje ensamblador: ARM Cortex-M3 ; 1.ª edición; Vincent Mahout; 256 páginas; 2012; ISBN 978-1848213296 .
Procesamiento de señales digitales y aplicaciones utilizando ARM Cortex-M4 ; 1.ª edición; Donald Reay; 320 páginas; 2015; ISBN 978-1118859049 .
RTOS práctico con microcontroladores ; 1.ª edición; Brian Amos; 496 páginas; 2020; ISBN 978-1838826734 .
Enlaces externos
Wikimedia Commons tiene medios relacionados con ARM Cortex-M .
Documentos oficiales de 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 para microcontroladores Cortex (CMSIS) arm.com
Tarjetas de referencia rápida
Instrucciones: Thumb-1 (1), ARM y Thumb-2 (2), Vector de punto flotante (3) arm.com
Códigos de operación: Thumb-1 (1, 2), ARM (3, 4), Directivas del 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