Ingeniería inversa de MCU

Desbloqueo de Microcontroladores - MikaTech

Nuestros valores y objetivos

Acerca de MikaTech

El tiempo pasó rápido, desde el día que hicimos nuestro primer proyecto de ingeniería inversa de MCU 8051 en 1998, hasta el día que establecimos nuestro laboratorio de ingeniería inversa de un millón de dólares en 2012, pasaron 14 años. Ahora comenzamos nuestro nuevo negocio de desarrollo de sistemas visuales embebidos, esperamos poder servir otros 10 años.

firma Peter Lee Co-Fundador y CEO

Ingeniería inversa de microcontroladores con arquitectura ARM

  • Introducción a la arquitectura ARM
  • Introducción a la arquitectura ARM La arquitectura ARM se refiere a una familia completa de diseños de procesadores de computación de conjunto de instrucciones reducido (RISC) creados originalmente y actualmente licenciados por la empresa de tecnología ARM Holdings, con sede en el Reino Unido. La arquitectura se originó en la década de 1980[2], cuando Acorn Computers Ltd diseñó el núcleo del procesador para impulsar su línea de computadoras de escritorio. La tecnología se separó más tarde en una entidad comercial independiente, que evolucionó hasta convertirse en la actual ARM Holdings. Estadísticamente, ARM se clasificó como el conjunto de instrucciones de 32 bits más prevalente del mundo en términos de volumen de producción a partir de 2013.[3][4] Según datos oficiales publicados por ARM Holdings, los fabricantes de chips enviaron un total de 6.1 mil millones de unidades de procesamiento basadas en ARM solo en 2010. Estos dispositivos representaron el 95% de todos los teléfonos inteligentes, el 35% de los televisores digitales y decodificadores, y el 10% de los dispositivos informáticos móviles en todo el mundo.

    Operando puramente como un proveedor de propiedad intelectual (IP), ARM Holdings nunca fabrica chips semiconductores físicos por sí mismo. En cambio, la empresa comercializa sus planos de procesadores mediante la concesión de licencias de diseño a fabricantes de semiconductores externos en toda la industria. Una amplia gama de productos modernos de sistema en chip (SoC) adoptan núcleos de procesador ARM, incluidos Qualcomm Snapdragon, NVIDIA Tegra, Marvell XScale y plataformas Texas Instruments OMAP, junto con la propia familia de procesadores Cortex de ARM y los SoC personalizados de Apple implementados dentro de los dispositivos iPhone. El término ARM comenzó como una abreviatura de Acorn RISC Machine[6]; tras la eliminación gradual de la marca Acorn, la definición se cambió a Advanced RISC Machine. Construido sobre principios fundamentales de diseño RISC, el hardware del procesador ARM requiere muchos menos transistores que los procesadores convencionales de conjunto de instrucciones complejo (CISC) utilizados en las computadoras de escritorio tradicionales. Esta estructura de hardware simplificada ofrece importantes ventajas, incluido un menor costo de fabricación, menor disipación térmica y un consumo de energía drásticamente reducido. Estas características hacen que las arquitecturas ARM sean especialmente adecuadas para dispositivos livianos, portátiles y dependientes de baterías, como teléfonos inteligentes y tabletas.[7] Gracias a su complejidad simplificada, los diseñadores pueden integrar núcleos ARM en sistemas embebidos compactos y de bajo consumo que combinan memoria en el chip, interfaces periféricas, módulos de radio inalámbrica y otros componentes funcionales. El asistente digital personal (PDA) Apple Newton sirvió como uno de los primeros ejemplos comerciales de esta metodología de diseño, mientras que la misma filosofía de optimización sustenta los procesadores Apple A4 y A5 utilizados en las primeras generaciones de iPad. Más allá de los dispositivos embebidos móviles, la simplicidad inherente de los diseños ARM basados en RISC también permite implementaciones de CPU multinúcleo rentables. Los ingenieros pueden implementar mayores densidades de núcleos con una eficiencia energética mejorada, ofreciendo un rendimiento computacional general más sólido para servidores modernos, portátiles y plataformas de computación portátiles.


  • MCU con arquitectura ARM que Mikatech puede desbloquear mediante ingeniería inversa
  • Serie Atmel AT91SAMxxx:
    AT91SAM9XE512 AT91SAM9XE256 AT91SAM9XE128 AT91SAM7S64B AT91SAM7S32B AT91SAM7SE512 AT91SAM7SE256 AT91SAM7SE32 AT91SAM7XC512 AT91SAM7XC256 AT91SAM7XC128 AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 AT91SAM7S161 AT91SAM7S512 AT91SAM7S256 AT91SAM7S128 AT91SAM7S64 AT91SAM7S321 ...
  • Serie NXP LPC (antes Philips):
    LPC1769 LPC1768 LPC1767 LPC1766 LPC1765 LPC1764 LPC1759 LPC1758 LPC1756 LPC1754 LPC1752 LPC1751 LPC1343 LPC1342 LPC1313 LPC1311 LPC1114 LPC1113 LPC1112 LPC1111 LPC2106 LPC2109 LPC2114 LPC2119 LPC2124 LPC2129 LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC2141 LPC2142 LPC2144 LPC2146 LPC2148 LPC2194 LPC2212 LPC2214 LPC2292 LPC2294 LPC2364 LPC2366 LPC2368 LPC2378 LPC1102 LPC1104 LPC1110 LPC1111/002 LPC1111/101 LPC1111/102 LPC1111/103 LPC1111/201 LPC1111/202 LPC1111/203 LPC1112/101 LPC1112/102 LPC1112/103 LPC1112/201 LPC1112/202 LPC1112/203 LPC1113/201 LPC1113/202 LPC1113/203 LPC1113/301 LPC1113/302 LPC1113/303 LPC1114/102 LPC1114/201 LPC1114/202 LPC1114/203 LPC1114/301 LPC1114/302 LPC1114/303 LPC1114/323 LPC1114/333 LPC1115/303 LPC11A02 LPC11A04 LPC11A11/001 LPC11A12/101 LPC11A13/201 LPC11A14/301 LPC11C12/301 LPC11C14/301 LPC11C22/301 LPC11C24/301 LPC11D14/302 LPC11E11/101 LPC11E12/201 LPC11E13/301 LPC11E14/401 LPC11E36/501 LPC11E37/501 LPC11U12/201 LPC11U13/201 LPC11U14/201 LPC11U23/301 LPC11U24/301 LPC11U24/401 LPC11U34/311 LPC11U34/421 LPC11U35/401 LPC11U35/501 LPC11U36/401 LPC11U37/401 LPC11U37/501 LPC1224 LPC1225 LPC1226 LPC1227 LPC12D27 LPC1311 LPC1313 LPC1315 LPC1316 LPC1317 LPC1342 LPC1343 LPC1345 LPC1346 LPC1347 LPC1751 LPC1752 LPC1754 LPC1756 LPC1758 LPC1759 LPC1763 LPC1764 LPC1765 LPC1766 LPC1767 LPC1768 LPC1769 LPC1772 LPC1774 LPC1776 LPC1777 LPC1778 LPC1785 LPC1786 LPC1787 LPC1788 LPC4072 LPC4074 LPC4076 LPC4078 LPC4088 LPC810 LPC811 LPC812 LPC1800 LPC1810 LPC1820 LPC1830 LPC1850 LPC1853 LPC1857 LPC2000 LPC2101 LPC2102 LPC2103 LPC2104 LPC2105 LPC2106 LPC2109 LPC2114 LPC2119 LPC2124 LPC2129 LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC2141 LPC2142 LPC2144 LPC2146 LPC2148 LPC2157 LPC2158 LPC2194 LPC2210 LPC2212 LPC2214 LPC2220 LPC2290 LPC2292 LPC2294 LPC2361 LPC2362 LPC2364 LPC2365 LPC2366 LPC2367 LPC2368 LPC2377 LPC2378 LPC2387 LPC2388 LPC2420 LPC2458 LPC2460 LPC2468 LPC2470 LPC2478 LPC288x LPC2880 LPC2888 LPC3100 LPC3130 LPC3131 LPC3141 LPC3143 LPC3152 LPC3154 LPC3200 LPC3180 LPC3220 LPC3230 LPC3240 LPC3250 LPC4300 LPC4310 LPC4320 LPC4330 LPC4350 LPC4353 LPC4357...
  • Serie ST STM32xxx:
    STM32F100V STM32F101 STM32F103 STM32F105 STM32F107RC STM32L151 STM32L152 STM32F205 STM32F207 STM32F215 STM32F217 STM32F405 STM32F407 STM32F415 STM32F417 STM32L151 STM32L152 STM32F101RE STM32F101RD STM32F205RC STM32F101VE STM32F101VD STM32F100RE STM32F103RE STM32F100VE STM32F100RD STM32F103RD STM32F100VD STM32F103VD STM32F100ZD STM32F205VC STM32F207VC STM32F205ZC STM32F105VC STM32F105RC STM32F101RC STM32F107RC STM32F101VC STM32F107VC STM32F101ZC STM32F100RC STM32F103RC STM32F100VC STM32F103VC STM32F100ZC STM32F205RB STM32L151CB STM32L152CB STM32L151RB STM32L152RB STM32F205VB STM32L15VB STM32F105VB STM32L152VB STM32F103ZC STM32F103TB STM32F101CB STM32F103CB STM32F101RB STM32F103RB STM32F101VB STM32F107VB STM32F101TB STM32F100CC STM32F102CB STM32F100RB STM32F102RB STM32F100VB STM32F103VB STM32L151C8 STM32L152C8 STM32F103C8 STM32F102C8 STM32L152C6 STM32F103C6 STM32F102C6 STM32F103C4 STM32F102C4 STM32L151R8 STM32F105R8 STM32F103T8 STM32F101T8 STM32F101C8 STM32F100C8 STM32L151C6 STM32F101R8 STM32F100R8 STM32L151R6 STM32F101R6 STM32F100R6 STM32F101R4 STM32F100R4 STM32F407VG STM32F417VG STM32F407ZG STM32F417ZG STM32F405RG STM32F415RG STM32F405VG STM32F415VG STM32F405ZG STM32F415ZG STM32F207VG STM32F217VG STM32F207ZG STM32F217ZG STM32F205RG STM32F215RG STM32F205VG STM32F215VG STM32F205ZG STM32F215ZG STM32F101RG STM32F103RG STM32F101VG STM32F103VG STM32F101ZG STM32F103ZG STM32F205RF STM32F101RF STM32F103RF STM32F205VF STM32F101VF STM32F407VE STM32F207VE STM32F207VF STM32F103VF STM32F417VE STM32F217VE STM32F215VE STM32F103VE STM32F205ZF STM32F101ZF STM32F407ZE STM32F207ZE STM32F205ZE STM32F101ZE STM32F100ZE STM32F101ZD STM32F103ZD STM32F207ZC STM32F207IC STM32F103VE STM32F207ZF STM32F103ZF STM32F417ZE STM32F217ZE STM32F215ZE STM32F407IE STM32F207IE STM32F417IE STM32F217IE STM32F207IF STM32F207IG STM32F217IG STM32F407IG STM32F417IG STM32F205RE STM32F215RE STM32F205VE ...

  • Lista de núcleos de microprocesador ARM
  • Los núcleos de microprocesador de ARM Holdings se enumeran aquí, ordenados por generación y nombre. ARM proporciona un resumen de los numerosos proveedores que implementan núcleos ARM en sus diseños.[1] Keil también proporciona un resumen algo más reciente de proveedores de procesadores basados en ARM.[2] ARM también proporciona un gráfico[3] que muestra una visión general de la línea de procesadores ARM con rendimiento y funcionalidad frente a capacidades para las familias de dispositivos ARM7, ARM9, ARM11, Cortex-M, Cortex-R y Cortex-A más recientes.

    Núcleos de microprocesador ARM[editar]Diseñados por ARM[editar]Familia ARM Arquitectura ARM Núcleo ARM Característica Caché (I/D), MMU MIPS típicos @ MHz
    ARM1 ARMv1 ARM1 Primera implementación Ninguna
    ARM2 ARMv2 ARM2 ARMv2 añadió la instrucción MUL (multiplicar) Ninguna 4 MIPS @ 8 MHz
    0.33 DMIPS/MHz
    ARMv2a ARM250 MEMC integrado (MMU), gráficos y procesador de E/S. ARMv2a añadió las instrucciones SWP y SWPB (intercambio). Ninguna, MEMC1a 7 MIPS @ 12 MHz
    ARM3 ARMv2a ARM3 Primera caché de memoria integrada. 4 KB unificada 12 MIPS @ 25 MHz
    0.50 DMIPS/MHz
    ARM6 ARMv3 ARM60 ARMv3 primero en admitir espacio de direcciones de memoria de 32 bits (anteriormente 26 bits) Ninguna 10 MIPS @ 12 MHz
    ARM600 Como ARM60, caché y bus de coprocesador (para unidad de punto flotante FPA10). 4 KB unificada 28 MIPS @ 33 MHz
    ARM610 Como ARM60, caché, sin bus de coprocesador. 4 KB unificada 17 MIPS @ 20 MHz
    0.65 DMIPS/MHz
    ARM7 ARMv3 ARM700 8 KB unificada 40 MHz
    ARM710 Como ARM700, sin bus de coprocesador. 8 KB unificada 40 MHz
    ARM710a Como ARM710 8 KB unificada 40 MHz
    0.68 DMIPS/MHz
    ARM7TDMI ARMv4T ARM7TDMI(-S) Pipeline de 3 etapas, Thumb ninguna 15 MIPS @ 16.8 MHz
    63 DMIPS @ 70 MHz
    ARM710T Como ARM7TDMI, caché 8 KB unificada, MMU 36 MIPS @ 40 MHz
    ARM720T Como ARM7TDMI, caché 8 KB unificada, MMU con extensión de cambio de contexto rápido 60 MIPS @ 59.8 MHz
    ARM740T Como ARM7TDMI, caché MPU
    ARM7EJ ARMv5TEJ ARM7EJ-S Pipeline de 5 etapas, Thumb, Jazelle DBX, instrucciones DSP mejoradas ninguna
    ARM8 ARMv4 ARM810[4][5] Pipeline de 5 etapas, predicción de salto estática, memoria de doble ancho de banda 8 KB unificada, MMU 84 MIPS @ 72 MHz
    1.16 DMIPS/MHz
    ARM9TDMI ARMv4T ARM9TDMI Pipeline de 5 etapas, Thumb ninguna
    ARM920T Como ARM9TDMI, caché 16 KB/16 KB, MMU con FCSE (Extensión de cambio de contexto rápido)[6] 200 MIPS @ 180 MHz
    ARM922T Como ARM9TDMI, cachés 8 KB/8 KB, MMU
    ARM940T Como ARM9TDMI, cachés 4 KB/4 KB, MPU
    ARM9E ARMv5TE ARM946E-S Thumb, instrucciones DSP mejoradas, cachés variables, memorias acopladas, MPU
    ARM966E-S Thumb, instrucciones DSP mejoradas sin caché, TCM
    ARM968E-S Como ARM966E-S sin caché, TCM
    ARMv5TEJ ARM926EJ-S Thumb, Jazelle DBX, instrucciones DSP mejoradas variables, TCM, MMU 220 MIPS @ 200 MHz
    ARMv5TE ARM996HS Procesador sin reloj, como ARM966E-S sin cachés, TCM, MPU
    ARM10E ARMv5TE ARM1020E Pipeline de 6 etapas, Thumb, instrucciones DSP mejoradas, (VFP) 32 KB/32 KB, MMU
    ARM1022E Como ARM1020E 16 KB/16 KB, MMU
    ARMv5TEJ ARM1026EJ-S Thumb, Jazelle DBX, instrucciones DSP mejoradas, (VFP) variable, MMU o MPU
    ARM11 ARMv6 ARM1136J(F)-S[7] Pipeline de 8 etapas, SIMD, Thumb, Jazelle DBX, (VFP), instrucciones DSP mejoradas variable, MMU 740 @ 532–665 MHz (SoC i.MX31), 400–528 MHz
    ARMv6T2 ARM1156T2(F)-S Pipeline de 8 etapas, SIMD, Thumb-2, (VFP), instrucciones DSP mejoradas variable, MPU
    ARMv6Z ARM1176JZ(F)-S Como ARM1136EJ(F)-S variable, MMU + TrustZone 965 DMIPS @ 772 MHz, hasta 2 600 DMIPS con cuatro procesadores[8]
    ARMv6K ARM11 MPCore Como ARM1136EJ(F)-S, 1–4 núcleos SMP variable, MMU
    SecureCore ARMv6-M SC000 0.9 DMIPS/MHz
    ARMv4T SC100
    ARMv7-M SC300 1.25 DMIPS/MHz
    Cortex-M ARMv6-M Cortex-M0 [9] Perfil de microcontrolador, Thumb + subconjunto Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instrucción de multiplicación de hardware (opcional pequeña), temporizador de sistema opcional, mapeo de bits opcional Sin caché, sin TCM, sin MPU 0.84 DMIPS/MHz
    Cortex-M0+ [11] Perfil de microcontrolador, Thumb + subconjunto Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instrucción de multiplicación de hardware (opcional pequeña), temporizador de sistema opcional, mapeo de bits opcional Sin caché, sin TCM, MPU opcional con 8 regiones 0.93 DMIPS/MHz
    Cortex-M1 [12] Perfil de microcontrolador, Thumb + subconjunto Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instrucción de multiplicación de hardware (opcional pequeña), opción OS añade SVC / puntero de pila bancado, temporizador de sistema opcional, sin mapeo de bits Sin caché, 0-1024 KB I-TCM, 0-1024 KB D-TCM, sin MPU 136 DMIPS @ 170 MHz,[13] (0.8 DMIPS/MHz dependiente de FPGA)[14]
    ARMv7-M Cortex-M3 [15] Perfil de microcontrolador, Thumb / Thumb-2, instrucciones de multiplicación y división de hardware, mapeo de bits opcional Sin caché, sin TCM, MPU opcional con 8 regiones 1.25 DMIPS/MHz
    ARMv7E-M Cortex-M4 [16] Perfil de microcontrolador, Thumb / Thumb-2 / DSP / FPv4 de precisión simple opcional, instrucciones de multiplicación y división de hardware, mapeo de bits opcional Sin caché, sin TCM, MPU opcional con 8 regiones 1.25 DMIPS/MHz
    Cortex-R ARMv7-R Cortex-R4 [17] Perfil de tiempo real, Thumb / Thumb-2 / DSP / VFPv3 opcional, multiplicación de hardware y división opcional, paridad y ECC opcionales para buses internos / caché / TCM, pipeline de 8 etapas de doble núcleo ejecutándose en modo lockstep con lógica de fallos 0-64 KB / 0-64 KB, 0-2 de 0-8 MB TCM, MPU opcional con 8/12 regiones
    Cortex-R5 (MPCore) [18] Perfil de tiempo real, Thumb / Thumb-2 / DSP / VFPv3 opcional y precisión, multiplicación de hardware y división opcional, paridad y ECC opcionales para buses internos / caché / TCM, pipeline de 8 etapas de doble núcleo en lockstep con lógica de fallos / opcional como 2 núcleos independientes, puerto periférico de baja latencia (LLPP), puerto de coherencia de acelerador (ACP) [19] 0-64 KB / 0-64 KB, 0-2 de 0-8 MB TCM, MPU opcional con 12/16 regiones
    Cortex-R7 (MPCore) [20] Perfil de tiempo real, Thumb / Thumb-2 / DSP / VFPv3 opcional y precisión, multiplicación de hardware y división opcional, paridad y ECC opcionales para buses internos / caché / TCM, pipeline de 11 etapas de doble núcleo en lockstep con lógica de fallos / ejecución fuera de orden / renombramiento dinámico de registros / opcional como 2 núcleos independientes, puerto periférico de baja latencia (LLPP), ACP [19] 0-64 KB / 0-64 KB, ? de 0-128 KB TCM, MPU opcional con 16 regiones
    Cortex-A ARMv7-A Cortex-A5 [21] Perfil de aplicación, ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4-D16 opcional / NEON opcional / Jazelle RCT y DBX, 1–4 núcleos / MPCore opcional, unidad de control de snoop (SCU), controlador de interrupciones genérico (GIC), puerto de coherencia de acelerador (ACP) 4-64 KB / 4-64 KB L1, MMU + TrustZone 1.57 DMIPS / MHz por núcleo
    Cortex-A7 MPCore [22] Perfil de aplicación, ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 / NEON / Jazelle RCT y DBX / Virtualización de hardware, ejecución en orden, superescalar, 1–4 núcleos SMP, Extensiones de direcciones físicas grandes (LPAE), unidad de control de snoop (SCU), controlador de interrupciones genérico (GIC), ACP, arquitectura y conjunto de características idénticos a A15, pipeline de 8-10 etapas, diseño de bajo consumo[23] 32 KB / 32 KB L1, 0-4 MB L2, L1 y L2 con paridad y ECC, MMU + TrustZone 1.9 DMIPS / MHz por núcleo
    Cortex-A8 [24] Perfil de aplicación, ARM / Thumb / Thumb-2 / VFPv3 / NEON / Jazelle RCT y DAC, pipeline superescalar de 13 etapas 16-32 KB / 16-32 KB L1, 0-1 MB L2 con ECC opcional, MMU + TrustZone hasta 2000 (2.0 DMIPS/MHz en velocidad de 600 MHz a más de 1 GHz)
    Cortex-A9 MPCore [25] Perfil de aplicación, ARM / Thumb / Thumb-2 / DSP / VFPv3 opcional / NEON opcional / Jazelle RCT y DBX, emisión especulativa fuera de orden superescalar, 1–4 núcleos SMP, unidad de control de snoop (SCU), controlador de interrupciones genérico (GIC), puerto de coherencia de acelerador (ACP) 16-64 KB / 16-64 KB L1, 0-8 MB L2 con paridad opcional, MMU + TrustZone 2.5 DMIPS/MHz por núcleo, 10,000 DMIPS @ 2 GHz en TSMC 40G optimizado para rendimiento (doble núcleo)
    ARM Cortex-A12 [26] Perfil de aplicación, ARM / Thumb-2 / DSP / VFPv4 / NEON / Virtualización de hardware, emisión especulativa fuera de orden superescalar, 1–4 núcleos SMP, Extensiones de direcciones físicas grandes (LPAE), unidad de control de snoop (SCU), controlador de interrupciones genérico (GIC), puerto de coherencia de acelerador (ACP) 32-64KB / 32 KB L1, 256KB-8 MB L2 3.0 DMIPS / MHz por núcleo
    Cortex-A15 MPCore [27] Perfil de aplicación, ARM / Thumb / Thumb-2 / DSP / VFPv4 / NEON / Jazelle RCT / Virtualización de hardware, emisión especulativa fuera de orden superescalar, 1–4 núcleos SMP, Extensiones de direcciones físicas grandes (LPAE), unidad de control de snoop (SCU), controlador de interrupciones genérico (GIC), ACP, pipeline de 15-24 etapas[23] 32 KB / 32 KB L1, 0-4 MB L2, L1 y L2 con paridad y ECC, MMU + TrustZone Al menos 3.5 DMIPS/MHz por núcleo (hasta 4.01 DMIPS/MHz según implementación).[28]
    Cortex-A50 ARMv8-A Cortex-A53[29] Perfil de aplicación, AArch32 y AArch64, 1-4 núcleos SMP, Trustzone, NEON SIMD avanzado, VFPv4, virtualización de hardware, emisión doble, pipeline en orden 8~64 KB/8~64 KB L1 por núcleo, 128 KB~2 MB L2 compartida, direcciones físicas de 40 bits 2.3 DMIPS/MHz
    Cortex-A57[30] Perfil de aplicación, AArch32 y AArch64, 1-4 núcleos SMP, Trustzone, NEON SIMD avanzado, VFPv4, virtualización de hardware, emisión múltiple, pipeline fuera de orden profundo 48 KB/32 KB L1 por núcleo, 512 KB~2 MB L2 compartida, direcciones físicas de 44 bits Al menos 4.1 DMIPS/MHz por núcleo (hasta 4.76 DMIPS/MHz según implementación).
    Familia ARM Arquitectura ARM Núcleo ARM Característica Caché (I/D), MMU MIPS típicos @ MHz

    Diseñados por terceros[editar]Estos núcleos implementan el conjunto de instrucciones ARM y fueron desarrollados independientemente por empresas con licencia arquitectónica de ARM.

    Familia ARM Arquitectura ARM Núcleo Característica Caché (I/D), MMU MIPS típicos @ MHz
    StrongARM ARMv4 SA-1 Pipeline de 5 etapas 16 KB/8–16 KB, MMU 133–206 MHz
    1.0 DMIPS/MHz
    Faraday[31] ARMv4 FA510 Pipeline de 6 etapas hasta 32 KB / 32 KB Caché, MPU 1.26 DMIPS/MHz
    100-200 MHz
    FA526 hasta 32 KB / 32 KB Caché, MMU 1.26 MIPS/MHz
    166-300 MHz
    FA626 Pipeline de 8 etapas 32 KB/32 KB Caché, MMU 1.35 DMIPS/MHz
    500 MHz
    ARMv5TE FA606TE Pipeline de 5 etapas sin caché, sin MMU 1.22 DMIPS/MHz
    200 MHz
    FA626TE Pipeline de 8 etapas 32 KB/32 KB Caché, MMU 1.43 MIPS/MHz
    800 MHz
    FMP626TE Pipeline de 8 etapas, SMP 1.43 MIPS/MHz
    500 MHz
    FA726TE Pipeline de 13 etapas, emisión dual 2.4 DMIPS/MHz
    1000 MHz
    XScale ARMv5TE XScale Pipeline de 7 etapas, Thumb, instrucciones DSP mejoradas 32 KB/32 KB, MMU 133–400 MHz
    Bulverde Wireless MMX, Wireless SpeedStep añadido 32 KB/32 KB, MMU 312–624 MHz
    Monahans[32] Wireless MMX2 añadido 32 KB/32 KB (L1), caché L2 opcional hasta 512 KB, MMU hasta 1.25 GHz
    Sheeva ARMv5 Feroceon Pipeline de 5-8 etapas, emisión única 16 KB / 16 KB, MMU 600-2000 MHz
    Jolteon Pipeline de 5-8 etapas, emisión dual 32 KB / 32 KB, MMU
    PJ1 (Mohawk) Pipeline de 5-8 etapas, emisión única, Wireless MMX2 32 KB / 32 KB, MMU 1.46 DMIPS/MHz
    1.06 GHz
    ARMv6/ARMv7-A PJ4 Pipeline de 6-9 etapas, emisión dual, Wireless MMX2, SMP 32 KB / 32 KB, MMU 2.41 DMIPS/MHz
    1.6 GHz
    Snapdragon ARMv7-A Scorpion [33] 1 o 2 núcleos. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv3 / NEON (128 bits) 256 KB L2 por núcleo 2.1 DMIPS / MHz por núcleo
    Krait [33] 1, 2 o 4 núcleos. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 / NEON (128 bits) 4 KB / 4 KB L0, 16 KB / 16 KB L1, 512 KB L2 por núcleo 3.3 DMIPS / MHz por núcleo
    Apple Ax ARMv7-A Apple Swift [34] 2 núcleos. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 / NEON L1: 32 kB instrucciones + 32 kB datos, L2: 1 MB 3.5 DMIPS / MHz por núcleo
    X-Gene ARMv8-A X-Gene 64 bits, emisión cuádruple, SMP Caché, MMU, Virtualización 3 GHz
    Denver ARMv8-A Parker 64 bits

    Véase también[editar] Portal de informática
    Portal de electrónica
    Arquitectura ARM
    Lista de aplicaciones de núcleos ARM
    Referencias[editar]^ "Line Card" (PDF). 2003. Consultado el 2011-01-06.
    ^ ARM Ltd y ARM Germany GmbH. "Device Database". Keil. Consultado el 2011-01-06.
    ^ "Processors". ARM. 2011. Consultado el 2011-01-06.
    ^ ARM Holdings (1996-08-07), ARM810 – Dancing to the Beat of a Different Drum (PDF), Hot Chips .
    ^ "VLSI Technology Now Shipping ARM810". EE Times. 26 de agosto de 1996. Consultado el 16 de marzo de 2012.
    ^ Registro 13, registro FCSE PID ARM920T Technical Reference Manual
    ^ "ARM1136J(F)-S – ARM Processor". Arm.com. Consultado el 2009-04-18.
    ^ "ARM11 Processor Family". ARM. Consultado el 2010-12-13.
    ^ Cortex-M0 Specification Summary; ARM Holdings.
    ^ a b c Cortex-M0/M0+/M1 Instruction Set; ARM Holding.
    ^ Cortex-M0+ Specification Summary; ARM Holdings.
    ^ Cortex-M1 Specification Summary; ARM Holdings.
    ^ "ARM Extends Cortex Family with First Processor Optimized for FPGA", comunicado de prensa de ARM, 19 de marzo de 2007. Consultado el 11 de abril de 2007.
    ^ "ARM Cortex-M1", sitio web del producto ARM. Consultado el 11 de abril de 2007.
    ^ Cortex-M3 Specification Summary; ARM Holdings.
    ^ Cortex-M4 Specification Summary; ARM Holdings.
    ^ Cortex-R4 Specification Summary; ARM Holdings.
    ^ Cortex-R5 Specification Summary; ARM Holdings.
    ^ a b Cortex-R5 & Cortex-R7 Press Release; ARM Holdings; 31 de enero de 2011.
    ^ Cortex-R7 Specification Summary; ARM Holdings.
    ^ Cortex-A5 Specification Summary; ARM Holdings.
    ^ Cortex-A7 Specification Summary; ARM Holdings.
    ^ a b Deep inside ARM's new Intel killer; The Register; 20 de octubre de 2011.
    ^ Cortex-A8 Specification Summary; ARM Holdings.
    ^ Cortex-A9 Specification Summary; ARM Holdings.
    ^ Cortex-A12 Summary; ARM Holdings.
    ^ Cortex-A15 Specification Summary; ARM Holdings.
    ^ Exclusive : ARM Cortex-A15 "40 Per Cent" Faster Than Cortex-A9 | ITProPortal.com
    ^ "Cortex-A53 Processor". ARM Holdings. Consultado el 2012-10-13.
    ^ "Cortex-A57 Processor". ARM Holdings. Consultado el 2012-10-13.
    ^ [1]
    ^ "3rd Generation Intel XScale Microarchitecture: Developer’s Manual". download.intel.com. Intel. Mayo de 2007. Consultado el 2 de diciembre de 2010.
    ^ a b Qualcomm's New Snapdragon S4: MSM8960 & Krait Architecture Explored; Anandtech.
    ^ Lal Shimpi, Anand (15 de septiembre de 2012). "The iPhone 5's A6 SoC: Not A15 or A9, a Custom Apple Core Instead". AnandTech. Consultado el 15 de septiembre de 2012.
    Lecturas adicionales[editar]The Definitive Guide to the ARM Cortex-M0; 1ª Edición; Joseph Yiu; Newnes; 552 páginas; 2011; ISBN 978-0-12-385477-3. (Muestra en línea)
    The Definitive Guide to the ARM Cortex-M3; 2ª Edición; Joseph Yiu; Newnes; 480 páginas; 2009; ISBN 978-1-85617-963-8. (Muestra en línea)

     

    [ocultar]v t eChips basados en ARM

    Arquitectura ARM Lista de núcleos de microprocesador ARM

    Procesadores de
    aplicación Cortex-A5 Actions ATM7025/7029 Qualcomm Snapdragon S4 Play/200 InfoTMIC iMAPx820/iMAPx15 Telechips TCC892x

    Cortex-A7 Allwinner A20/A31s/A31 HiSilicon K3V3 Leadcore LC1813 MediaTek MT6572/6589/6589T/6589M/8125/6599 Qualcomm Snapdragon 200/400 Samsung Exynos 5410

    Cortex-A8 Allwinner A10/A13/A10s Apple A4 Freescale i.MX5x Rockchip RK290x/RK291x Samsung Exynos 3110/S5PC110/S5PV210 Texas Instruments OMAP 3 ZiiLABS ZMS-08

    Cortex-A9 Amlogic AML8726 Apple A5/A5X Freescale i.MX6x HiSilicon K3V2/K3V2T/K3V2E MediaTek MT6575/6577 Nvidia Tegra 2/3/4i Nufront NuSmart 2816M/NS115/NS115M Renesas EMMA EV2 Rockchip RK292x/RK30xx/RK31xx Samsung Exynos 4 ST-Ericsson NovaThor Telechips TCC8803 Texas Instruments OMAP 4 VIA WonderMedia WM88x0/89x0 ZiiLABS ZMS-20, ZMS-40

    Cortex-A15 HiSilicon K3V3 MediaTek MT6599 Nvidia Tegra 4 Samsung Exynos 5 Texas Instruments OMAP 5

    ARMv7-A
    compatible Apple A6/A6X (Swift) Qualcomm Snapdragon S1/S2/S3 (Scorpion) Qualcomm Snapdragon S4 Plus/S4 Pro (Krait) Qualcomm Snapdragon 600/800 (Krait 300/Krait 400) Marvell P4J


    Microcontroladores
    embebidos Cortex-M0 Energy Micro EFM32 Zero NXP LPC1100, LPC1200 STMicroelectronics STM32 F0

    Cortex-M0+ Freescale Kinetis L NXP LPC800

    Cortex-M1 Actel FPGAs Altera FPGAs Xilinx FPGAs

    Cortex-M3 Actel SmartFusion, SmartFusion 2 Atmel AT91SAM3 Cypress PSoC 5 Energy Micro EFM32 Tiny, Gecko, Leopard, Giant Fujitsu FM3 NXP LPC1300, LPC1700, LPC1800 Silicon Labs Precision32 STMicroelectronics STM32 F1, F2, L1, W Texas Instruments F28, LM3, TMS470, OMAP 4 Toshiba TX03

    Cortex-M4 Atmel AT91SAM4 Freescale Kinetis K Texas Instruments OMAP 5

    Cortex-M4F Energy Micro EFM32 Wonder Freescale Kinetis K Infineon XMC4000 NXP LPC4000, LPC4300 STMicroelectronics STM32 F3, F4 Texas Instruments LM4F


    Microcontroladores
    de tiempo real Cortex-R4F Texas Instruments RM4, TMS570

    Cortex-R5F Scaleo OLEA


    Procesadores
    clásicos ARM7 Atmel AT91SAM7, AT91CAP7, AT91M, AT91R NXP LPC2100, LPC2200, LPC2300, LPC2400, LH7 STMicroelectronics STR7

    ARMv4
    compatible Digital Equipment Corporation StrongARM

    ARM9 Atmel AT91SAM9, AT91CAP9 Freescale i.MX1x, i.MX2x Rockchip RK27xx/RK28xx NXP LPC2900, LPC3100, LPC3200, LH7A ST-Ericsson Nomadik STn881x STMicroelectronics STR9 Texas Instruments OMAP 1, AM1x VIA WonderMedia WM8505/8650 ZiiLABS ZMS-05

    ARMv5
    compatible Digital Equipment Corporation XScaleMarvell Sheeva Feroceon Jolteon Mohawk

    ARM11 Broadcom BCM2835 (Raspberry Pi) Freescale i.MX3x Infotmic IMAPX210/220 Nvidia Tegra APX, 6xx Qualcomm MSM7000, Snapdragon S1 ST-Ericsson Nomadik STn882x Telechips TCC8902 TI OMAP 2 VIA WonderMedia WM87x0

    ARMv6
    compatible Mindspeed Comcerto 1000 .

  • Más información
  • La arquitectura ARM tiene licencia. Las empresas que son o han sido licenciatarias de ARM incluyen Advanced Micro Devices, Inc.,[11] Alcatel-Lucent, Altera, Apple Inc., copia de microcontrolador ARM AppliedMicro, Atmel, BlackBerry (antes Research In Motion), Broadcom, Cirrus Logic, CSR plc, Cypress Semiconductor, Digital Equipment Corporation, Ember, Energy Micro, Freescale (spin-off de Motorola en 2004), Fujitsu, Fuzhou Rockchip, Huawei, Intel (a través de DEC), LG, Marvell Technology Group, Microsemi, Microsoft, NEC, Nintendo, Nuvoton, Nvidia, NXP (antes Philips Semiconductor), Oki, ON Semiconductor, Panasonic, Qualcomm, Renesas, Samsung, Sharp, Silicon Labs, Sony, ST-Ericsson, STMicroelectronics, Symbios Logic, Texas Instruments, Toshiba, Yamaha, Xilinx y ZiiLABS.

    ARM ofrece varios diseños de núcleos de microprocesador, incluyendo ARM7, ARM9, ARM11, Cortex-A8, Cortex-A9 y Cortex-A15. Las empresas suelen licenciar estos diseños de ARM para fabricarlos e integrarlos en sus propios sistemas en chip (SoC) con otros componentes, como RAM, GPU o bandas base de radio (para teléfonos móviles).

    Los paquetes de sistema en chip que integran diseños de núcleo ARM incluyen las tres primeras generaciones de Nvidia Tegra, la familia Quatro de CSR plc, Nova y NovaThor de ST-Ericsson, Precision32 MCU de Silicon Labs, los productos OMAP de Texas Instruments, los productos Hummingbird y Exynos de Samsung, la línea Ax SoC de Apple y el i.MX de Freescale.

    Las empresas también pueden obtener una licencia arquitectónica de ARM para diseñar sus propios núcleos de CPU utilizando el conjunto de instrucciones ARM. Las implementaciones de arquitectura ARM distintas por parte de licenciatarios incluyen el A6 de Apple, X-Gene de AppliedMicro, Snapdragon y Krait de Qualcomm, StrongARM de DEC, XScale de Marvell (antes Intel) y el proyectado Project Denver de Nvidia.

    Historia[editar]Concebida originalmente por la empresa británica Acorn Computers para su uso en sus computadoras personales, los primeros productos basados en ARM fueron los módulos de coprocesador para la serie de computadoras BBC Micro. Después de lograr el éxito con la computadora BBC Micro, Acorn Computers consideró cómo pasar del relativamente simple procesador MOS Technology 6502 para abordar mercados empresariales como el que pronto sería dominado por el IBM PC, lanzado en 1981. El plan Acorn Business Computer (ABC) requería una serie de procesadores secundarios para que funcionaran con la plataforma BBC Micro, pero procesadores como el Motorola 68000 y el National Semiconductor 32016 se consideraron inadecuados, y el 6502 no era lo suficientemente potente para una interfaz de usuario basada en gráficos.[12]

    Después de probar todos los procesadores disponibles y encontrarlos deficientes, Acorn decidió que necesitaba una nueva arquitectura. Inspirado por los documentos técnicos del proyecto Berkeley RISC, Acorn consideró diseñar su propio procesador.[13] Una visita al Western Design Center en Phoenix, donde el 6502 estaba siendo actualizado por lo que era efectivamente una empresa de una sola persona, mostró a los ingenieros de Acorn Steve Furber y Sophie Wilson que no necesitaban recursos masivos ni instalaciones de investigación y desarrollo de última generación.[14]

    Wilson desarrolló el conjunto de instrucciones, escribiendo una simulación del procesador en BBC Basic que se ejecutaba en un BBC Micro con un segundo procesador 6502. Esto convenció a los ingenieros de Acorn de que estaban en el camino correcto. Wilson se acercó al CEO de Acorn, Hermann Hauser, y solicitó más recursos. Una vez que se dio la aprobación, se reunió un pequeño equipo para implementar el modelo de Wilson en hardware.


    Un procesador ARM de Conexant utilizado principalmente en enrutadoresAcorn RISC Machine: ARM2[editar]El proyecto oficial Acorn RISC Machine comenzó en octubre de 1983. VLSI Technology fue elegida como el "socio de silicio", ya que eran una fuente de ROM y chips personalizados para Acorn. El diseño fue dirigido por Wilson y Furber, y se implementó conscientemente con una ética de eficiencia similar al 6502.[15] Un objetivo de diseño clave fue lograr un manejo de entrada/salida (interrupciones) de baja latencia como el 6502. La arquitectura de acceso a memoria del 6502 había permitido a los desarrolladores producir máquinas rápidas sin utilizar costoso hardware de acceso directo a memoria. VLSI produjo el primer silicio ARM el 26 de abril de 1985, funcionó la primera vez y se conoció como ARM1 en abril de 1985.[2] Los primeros sistemas de producción denominados ARM2 estuvieron disponibles al año siguiente.


    El coprocesador ARM1 para el BBC MicroLa primera aplicación práctica del ARM fue como coprocesador para el BBC Micro, donde se utilizó para desarrollar el software de simulación para finalizar el desarrollo de los chips de soporte (VIDC, IOC, MEMC) y para acelerar el software CAD utilizado en el desarrollo de ARM2. Wilson reescribió posteriormente BBC Basic en lenguaje ensamblador ARM, y el profundo conocimiento obtenido al diseñar el conjunto de instrucciones permitió que el código fuera muy denso, lo que convirtió a ARM BBC Basic en una prueba excelente para cualquier emulador ARM. El objetivo original de una computadora principalmente basada en ARM se logró en 1987 con el lanzamiento del Acorn Archimedes.[16]

    En 1992, Acorn ganó nuevamente el Queen's Award for Technology por el ARM.

    El ARM2 contaba con un bus de datos de 32 bits, un espacio de direcciones de 26 bits y 27 registros de 32 bits. 8 bits del registro de contador de programa estaban disponibles para otros fines; los 6 bits superiores (disponibles debido al espacio de direcciones de 26 bits) servían como banderas de estado, y los 2 bits inferiores (disponibles porque el contador de programa siempre estaba alineado a palabras) se usaban para establecer modos. Aunque el bus de direcciones se extendió a 32 bits en el ARM6, el código del programa aún debía residir dentro de los primeros 64 megabytes de memoria en modo de compatibilidad de 26 bits, debido a los bits reservados para las banderas de estado.[17] El ARM2 tenía un recuento de transistores de solo 30,000, en comparación con el modelo 68000 de Motorola, seis años más antiguo, con 68,000.[18] Gran parte de esta simplicidad provenía de la falta de microcódigo (que representa aproximadamente una cuarta parte o un tercio del 68000) y de (como la mayoría de las CPU de la época) no incluir ninguna caché. Esta simplicidad permitía un bajo consumo de energía, pero un rendimiento superior al Intel 80286. Un sucesor, el ARM3, se produjo con una caché de 4 KB, lo que mejoró aún más el rendimiento.[19]

    Apple, DEC, Intel, Marvell: ARM6, StrongARM, XScale[editar]A finales de la década de 1980, Apple Computer y VLSI Technology comenzaron a trabajar con Acorn en versiones más nuevas del núcleo ARM. En 1990, Acorn escindió el equipo de diseño en una nueva empresa llamada Acorn RISC Machines Ltd., que se convirtió en ARM Ltd cuando su empresa matriz, ARM Holdings plc, cotizó en la Bolsa de Valores de Londres y NASDAQ en 1998.[20]

    El nuevo trabajo de Apple-ARM eventualmente evolucionaría hacia el ARM6, lanzado por primera vez a principios de 1992. Apple utilizó el ARM 610 basado en ARM6 como base para su asistente digital personal (PDA) Apple Newton. En 1994, Acorn utilizó el ARM 610 como unidad central de procesamiento (CPU) principal en sus computadoras Risc PC. DEC licenció la arquitectura ARM6 y produjo el StrongARM. A 233 MHz, esta CPU consumía solo un vatio (las versiones más nuevas consumen mucho menos). Este trabajo fue transferido posteriormente a Intel como parte de un acuerdo de demanda, e Intel aprovechó la oportunidad para complementar su línea i960 con el StrongARM. Intel desarrolló posteriormente su propia implementación de alto rendimiento llamada XScale, que desde entonces ha vendido a Marvell.

    Licenciamiento[editar]El núcleo ARM ha permanecido esencialmente del mismo tamaño a lo largo de estos cambios. ARM2 tenía 30,000 transistores, el ARM6 creció solo a 35,000. El negocio principal de ARM es la venta de núcleos IP, que los licenciatarios utilizan para crear microcontroladores y CPU basados en esos núcleos. El fabricante de diseño original combina el núcleo ARM con otras partes para producir una CPU completa, típicamente una que se puede construir en fundiciones de semiconductores existentes a bajo costo y aún así ofrecer un rendimiento sustancial. La implementación más exitosa ha sido el ARM7TDMI con cientos de millones vendidos. Atmel ha sido un centro de diseño precursor en el sistema embebido basado en ARM7TDMI.

    Las arquitecturas ARM utilizadas en teléfonos inteligentes, asistentes digitales personales y otros dispositivos móviles van desde ARMv5, utilizado en dispositivos de gama baja, hasta ARMv6, hasta la serie Cortex-A (ARMv7) en dispositivos de gama alta actuales. ARMv7 incluye una unidad de punto flotante de hardware, con una velocidad mejorada en comparación con el punto flotante basado en software.

    En 2009, algunos fabricantes introdujeron netbooks basados en CPU de arquitectura ARM, compitiendo directamente con netbooks basados en Intel Atom.[21] Según la firma de analistas IHS iSuppli, para 2015, se estima que los circuitos integrados ARM estarán en el 23% de todas las computadoras portátiles.[22]

    Núcleos ARM[editar]Artículo principal: Lista de núcleos de microprocesador ARM
    Arquitectura Familia diseñada por ARM Holdings Familia diseñada por terceros Perfil Cortex
    ARMv1 ARM1
    ARMv2 ARM2, ARM3 Amber
    ARMv3 ARM6, ARM7
    ARMv4 ARM7TDMI, ARM8, ARM9TDMI StrongARM, FA526
    ARMv5 ARM7EJ, ARM9E, ARM10E XScale, FA626TE, Feroceon, PJ1/Mohawk
    ARMv6 ARM11
    ARMv6-M ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1 Microcontrolador
    ARMv7-M ARM Cortex-M3 Microcontrolador
    ARMv7E-M ARM Cortex-M4 Microcontrolador
    ARMv7-R ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 Tiempo real
    ARMv7-A ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8,
    ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15 Scorpion, Krait, PJ4/Sheeva, Swift Aplicación
    ARMv8-A ARM Cortex-A53, ARM Cortex-A57[23] X-Gene, Denver Aplicación

    ARM proporciona una lista de proveedores que implementan núcleos ARM en sus diseños.[24]

    Ejemplos de aplicaciones de núcleos ARM[editar]Artículo principal: Lista de aplicaciones de núcleos ARM
    Los núcleos ARM se utilizan en varios productos, particularmente PDA y teléfonos inteligentes. Algunos ejemplos informáticos son Microsoft Surface, Apple iPad y ASUS Eee Pad Transformer. Otros incluyen el iPhone de Apple, el reproductor multimedia portátil iPod, la cámara digital Canon PowerShot A470, la consola de juegos portátil Nintendo DS y el sistema de navegación paso a paso TomTom.

    En 2005, ARM participó en el desarrollo de la computadora de la Universidad de Manchester, SpiNNaker, que utilizó núcleos ARM para simular el cerebro humano.[25]

    Los chips ARM también se utilizan en Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard y otras computadoras de placa única, porque son muy pequeños, económicos y consumen muy poca energía.

    Arquitectura[editar] Esta sección necesita citas adicionales para su verificación. Ayude a mejorar este artículo agregando citas de fuentes confiables. El material sin fuente puede ser cuestionado y eliminado. (Marzo de 2011)

    Desde 1995, el ARM Architecture Reference Manual ha sido la fuente principal de documentación sobre la arquitectura del procesador ARM y el conjunto de instrucciones, distinguiendo las interfaces que todos los procesadores ARM deben admitir (como la semántica de las instrucciones) de los detalles de implementación que pueden variar. La arquitectura ha evolucionado con el tiempo y, a partir de la serie Cortex de núcleos, se definen tres "perfiles":

    Perfil "Aplicación": serie Cortex-A
    Perfil "Tiempo real": serie Cortex-R
    Perfil "Microcontrolador": serie Cortex-M.
    Los perfiles pueden subconjuntar la arquitectura. Por ejemplo, el perfil ARMv6-M (utilizado por Cortex M0 / M0+ / M1) es un subconjunto del perfil ARMv7-M que admite menos instrucciones.

    Modos de CPU[editar]La arquitectura ARM especifica varios modos de CPU, según la arquitectura. En cualquier momento, la CPU puede estar en un solo modo, pero puede cambiar de modo debido a eventos externos (interrupciones) o mediante programación.[26]

    Modo usuario
    El único modo no privilegiado.
    Modo de interrupción rápida
    Un modo privilegiado al que se entra cada vez que el procesador acepta una interrupción FIQ.
    Modo de interrupción
    Un modo privilegiado al que se entra cada vez que el procesador acepta una interrupción IRQ.
    Modo supervisor (svc)
    Un modo privilegiado al que se entra cada vez que la CPU se restablece o cuando se ejecuta una instrucción SWI.
    Modo aborto
    Un modo privilegiado al que se entra cada vez que ocurre una excepción de aborto de prefetch o aborto de datos.
    Modo indefinido
    Un modo privilegiado al que se entra cada vez que ocurre una excepción de instrucción indefinida.
    Modo sistema (ARMv4 y superior)
    El único modo privilegiado al que no se entra por una excepción. Solo se puede entrar ejecutando una instrucción que escriba explícitamente en los bits de modo del CPSR.
    Modo MON (solo extensiones de seguridad)
    Se introduce un modo monitor para admitir la extensión TrustZone en el núcleo ARM.
    HYP también conocido como modo PL2 (ARMv7)
    Un modo de extensiones de virtualización / hipervisor en el núcleo ARM que se introdujo en la arquitectura ARM-7v más reciente (a partir de 2012).[27]
    Conjunto de instrucciones[editar]La implementación original de ARM estaba cableada sin microcódigo, como el mucho más simple procesador de 8 bits 6502 utilizado en microcomputadoras Acorn anteriores.

    La arquitectura ARM incluye las siguientes características RISC:

    Arquitectura de carga/almacenamiento.
    Sin soporte para accesos a memoria no alineados (aunque ahora compatible desde núcleos ARMv6, con algunas excepciones relacionadas con instrucciones de carga/almacenamiento múltiple de palabras).
    Banco de registros uniforme de 16 × 32 bits (incluyendo el Contador de Programa, el Puntero de Pila y el Registro de Enlace).
    Ancho de instrucción fijo de 32 bits para facilitar la decodificación y el pipelining, a costa de una densidad de código reducida. Posteriormente, el conjunto de instrucciones Thumb aumentó la densidad de código.
    Ejecución en su mayoría de un solo ciclo de reloj.
    Para compensar el diseño más simple, en comparación con procesadores como el Intel 80286 y el Motorola 68020, se utilizaron algunas características de diseño adicionales:

    Ejecución condicional de la mayoría de las instrucciones, reduciendo la sobrecarga de saltos y compensando la falta de un predictor de saltos.
    Las instrucciones aritméticas modifican los códigos de condición solo cuando se desea.
    Desplazador de barril de 32 bits que se puede utilizar sin penalización de rendimiento con la mayoría de las instrucciones aritméticas y cálculos de direcciones.
    Modos de direccionamiento indexado potentes.
    Un registro de enlace para llamadas rápidas a funciones hoja.
    Subsistema de interrupciones simple pero rápido de 2 niveles de prioridad con bancos de registros conmutados.
    Instrucciones aritméticas[editar]ARM admite instrucciones de suma, resta y multiplicación. Las instrucciones de división de enteros solo están implementadas por núcleos ARM basados en las siguientes arquitecturas ARM:

    Las arquitecturas ARMv7-M y ARMv7E-M siempre incluyen instrucciones de división.[28]
    La arquitectura ARMv7-R siempre incluye instrucciones de división en el conjunto de instrucciones Thumb, pero opcionalmente en el conjunto de instrucciones ARM.[29]
    La arquitectura ARMv7-A incluye opcionalmente instrucciones de división. Las instrucciones pueden no estar implementadas, o implementadas solo en el conjunto de instrucciones Thumb, o en ambos conjuntos, o implementadas si se incluyen las Extensiones de Virtualización.[29]
    Registros[editar]Los registros R0-R7 son los mismos en todos los modos de CPU; nunca están bancarizados.

    R13 y R14 están bancarizados en todos los modos de CPU privilegiados excepto el modo sistema. Es decir, cada modo al que se puede entrar debido a una excepción tiene su propio R13 y R14. Estos registros generalmente contienen el puntero de pila y la dirección de retorno de las llamadas a funciones, respectivamente.

    Registros entre modos de CPU usr sys svc abt und irq fiq
    R0
    R1
    R2
    R3
    R4
    R5
    R6
    R7
    R8 R8_fiq
    R9 R9_fiq
    R10 R10_fiq
    R11 R11_fiq
    R12 R12_fiq
    R13 R13_svc R13_abt R13_und R13_irq R13_fiq
    R14 R14_svc R14_abt R14_und R14_irq R14_fiq
    R15
    CPSR
    SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

    Alias:

    R13 también se denomina SP, el Puntero de Pila.
    R14 también se denomina LR, el Registro de Enlace.
    R15 también se denomina PC, el Contador de Programa.
    Ejecución condicional[editar]Casi todas las instrucciones ARM tienen una característica de ejecución condicional llamada predicación, que se implementa con un selector de código de condición de 4 bits (el predicado). Para permitir la ejecución incondicional, uno de los códigos de cuatro bits hace que la instrucción se ejecute siempre. La mayoría de las otras arquitecturas de CPU solo tienen códigos de condición en instrucciones de salto.

    Aunque el predicado ocupa 4 de los 32 bits en un código de instrucción, y por lo tanto reduce significativamente los bits de codificación disponibles para desplazamientos en instrucciones de acceso a memoria, evita las instrucciones de salto al generar código para sentencias if pequeñas. Además de eliminar las propias instrucciones de salto, esto preserva la canalización de búsqueda/decodificación/ejecución a costa de solo un ciclo por instrucción omitida.

    El ejemplo estándar de ejecución condicional es el algoritmo euclidiano basado en resta:

    En el lenguaje de programación C, el bucle es:

    while (i != j)
    {
    if (i > j)
    {
    i -= j;
    }
    else
    {
    j -= i;
    }
    }

    En ensamblador ARM, el bucle es:

    loop: CMP Ri, Rj ; establece la condición "NE" si (i != j),
    ; "GT" si (i > j),
    ; o "LT" si (i < j)
    SUBGT Ri, Ri, Rj ; si "GT" (Mayor que), i = i-j;
    SUBLT Rj, Rj, Ri ; si "LT" (Menor que), j = j-i;
    BNE loop ; si "NE" (No igual), entonces bucle

    que evita los saltos alrededor de las cláusulas then y else. Si Ri y Rj son iguales, no se ejecutará ninguna de las instrucciones SUB, eliminando la necesidad de un salto condicional para implementar la verificación while en la parte superior del bucle, por ejemplo, si se hubiera utilizado SUBLE (menor o igual).

    Una de las formas en que el código Thumb proporciona una codificación más densa es eliminar el selector de cuatro bits de las instrucciones que no son de salto.

    Otras características[editar]Otra característica del conjunto de instrucciones es la capacidad de plegar desplazamientos y rotaciones en las instrucciones de "procesamiento de datos" (aritméticas, lógicas y de movimiento entre registros), de modo que, por ejemplo, la sentencia C

    a += (j << 2);

    podría representarse como una instrucción de una sola palabra y un solo ciclo:[30]

    ADD Ra, Ra, Rj, LSL #2

    Esto hace que el programa ARM típico sea más denso de lo esperado con menos accesos a memoria; por lo tanto, la canalización se utiliza de manera más eficiente.

    El procesador ARM también tiene características raramente vistas en otras arquitecturas RISC, como el direccionamiento relativo al PC (de hecho, en el ARM de 32 bits[1] el PC es uno de sus 16 registros) y modos de direccionamiento de pre y post incremento.

    El conjunto de instrucciones ARM ha aumentado con el tiempo. Algunos procesadores ARM antiguos (anteriores a ARM7TDMI), por ejemplo, no tienen instrucción para almacenar una cantidad de dos bytes.

    Pipeline y otros problemas de implementación[editar]Los ARM7 e implementaciones anteriores tienen un pipeline de tres etapas; las etapas son búsqueda, decodificación y ejecución. Los diseños de mayor rendimiento, como el ARM9, tienen pipelines más profundos: Cortex-A8 tiene trece etapas. Los cambios adicionales de implementación para un mayor rendimiento incluyen un sumador más rápido y una lógica de predicción de saltos más extensa. La diferencia entre los núcleos ARM7DI y ARM7DMI, por ejemplo, era un multiplicador mejorado; de ahí la "M" añadida.

    Coprocesadores[editar]La arquitectura ARM proporciona una forma no intrusiva de extender el conjunto de instrucciones mediante "coprocesadores" a los que se puede acceder mediante instrucciones MCR, MRC, MRRC, MCRR y similares. El espacio de coprocesadores está dividido lógicamente en 16 coprocesadores numerados del 0 al 15, siendo el coprocesador 15 (cp15) reservado para algunas funciones de control típicas, como la gestión de cachés y la operación de MMU en procesadores que lo tienen.

    En las máquinas basadas en ARM, los dispositivos periféricos suelen estar conectados al procesador mapeando sus registros físicos en el espacio de memoria ARM o en el espacio de coprocesador, o conectándose a otro dispositivo (un bus) que a su vez se conecta al procesador. Los accesos a coprocesadores tienen menor latencia, por lo que algunos periféricos, como un controlador de interrupciones XScale, están diseñados para ser accesibles de ambas maneras, a través de memoria y a través de coprocesadores.

    En otros casos, los diseñadores de chips solo integran hardware utilizando el mecanismo de coprocesador. Por ejemplo, un motor de procesamiento de imágenes podría ser un núcleo ARM7TDMI pequeño combinado con un coprocesador que tiene operaciones especializadas para admitir un conjunto específico de primitivas de transcodificación HDTV.

    Depuración[editar] Esta sección necesita citas adicionales para su verificación. Ayude a mejorar este artículo agregando citas de fuentes confiables. El material sin fuente puede ser cuestionado y eliminado. (Marzo de 2011)

    Todos los procesadores ARM modernos incluyen instalaciones de depuración de hardware, lo que permite a los depuradores de software realizar operaciones como detener, ejecutar paso a paso y establecer puntos de interrupción en el código desde el reinicio. Estas instalaciones se construyen utilizando soporte JTAG, aunque algunos núcleos más nuevos admiten opcionalmente el protocolo de dos hilos "SWD" de ARM. En los núcleos ARM7TDMI, la "D" representaba soporte de depuración JTAG, y la "I" representaba la presencia de un módulo de depuración "EmbeddedICE". Para las generaciones de núcleos ARM7 y ARM9, EmbeddedICE sobre JTAG era un estándar de depuración de facto, aunque no estaba garantizado arquitectónicamente.

    La arquitectura ARMv7 define instalaciones de depuración básicas a nivel arquitectónico. Estas incluyen puntos de interrupción, puntos de observación y ejecución de instrucciones en un "Modo de Depuración"; instalaciones similares también estaban disponibles con EmbeddedICE. Se admiten tanto la depuración en "modo de parada" como en "modo monitor". El mecanismo de transporte real utilizado para acceder a las instalaciones de depuración no está especificado arquitectónicamente, pero las implementaciones generalmente incluyen soporte JTAG.

    Existe una arquitectura de depuración ARM "CoreSight" separada, que no es requerida arquitectónicamente por los procesadores ARMv7.

    Herramientas[editar]La arquitectura ARM es compatible con un conjunto de herramientas de desarrollo como Emprog ThunderBench para ARM. Estas herramientas permiten a los ingenieros de desarrollo programar el dispositivo de arquitectura ARM utilizando un lenguaje de alto nivel como C.[31]

    Instrucciones de mejora DSP[editar]Para mejorar la arquitectura ARM para el procesamiento de señales digitales y aplicaciones multimedia, se añadieron instrucciones DSP al conjunto.[32] Estas se indican con una "E" en el nombre de las arquitecturas ARMv5TE y ARMv5TEJ. Las variantes E también implican T, D, M e I.

    Las nuevas instrucciones son comunes en las arquitecturas de procesadores de señales digitales. Incluyen variaciones de multiplicación-acumulación con signo, suma y resta saturada, y conteo de ceros iniciales.

    Extensiones SIMD para multimedia[editar]Introducidas en la arquitectura ARMv6.[33]

    Jazelle[editar]Artículo principal: Jazelle
    Jazelle DBX (Direct Bytecode eXecution) es una técnica que permite que el bytecode de Java se ejecute directamente en la arquitectura ARM como un tercer estado de ejecución (y conjunto de instrucciones) junto con los modos ARM y Thumb existentes. El soporte para este estado se indica con la "J" en la arquitectura ARMv5TEJ y en los nombres de los núcleos ARM9EJ-S y ARM7EJ-S. El soporte para este estado es obligatorio a partir de ARMv6 (excepto para el perfil ARMv7-M), aunque los núcleos más nuevos solo incluyen una implementación trivial que no proporciona aceleración de hardware.

    Thumb[editar] Esta sección necesita citas adicionales para su verificación. Ayude a mejorar este artículo agregando citas de fuentes confiables. El material sin fuente puede ser cuestionado y eliminado. (Marzo de 2011)

    Para mejorar la densidad del código compilado, los procesadores desde el ARM7TDMI (lanzado en 1994[34]) han contado con el conjunto de instrucciones Thumb, que tiene su propio estado. (La "T" en "TDMI" indica la característica Thumb). Cuando está en este estado, el procesador ejecuta el conjunto de instrucciones Thumb, una codificación compacta de 16 bits para un subconjunto del conjunto de instrucciones ARM.[35 ] La mayoría de las instrucciones Thumb se mapean directamente a instrucciones ARM normales. El ahorro de espacio proviene de hacer que algunos de los operandos de las instrucciones sean implícitos y limitar el número de posibilidades en comparación con las instrucciones ARM ejecutadas en el estado del conjunto de instrucciones ARM.

    En Thumb, los opcodes de 16 bits tienen menos funcionalidad. Por ejemplo, solo los saltos pueden ser condicionales, y muchos opcodes están restringidos a acceder solo a la mitad de los registros de propósito general de la CPU. Los opcodes más cortos proporcionan una mejor densidad de código en general, incluso si algunas operaciones requieren instrucciones adicionales. En situaciones donde el puerto de memoria o el ancho de bus están limitados a menos de 32 bits, los opcodes Thumb más cortos permiten un mayor rendimiento en comparación con el código ARM de 32 bits, ya que es posible que se necesite cargar menos código de programa en el procesador a través del ancho de banda de memoria restringido.

    El hardware embebido, como Game Boy Advance, típicamente tiene una pequeña cantidad de RAM accesible con un datapath completo de 32 bits; la mayoría se accede a través de un datapath secundario de 16 bits o más estrecho. En esta situación, generalmente tiene sentido compilar código Thumb y optimizar manualmente algunas de las secciones más intensivas en CPU utilizando instrucciones ARM completas de 32 bits, colocando estas instrucciones más anchas en la memoria accesible por bus de 32 bits.

    El primer procesador con un decodificador de instrucciones Thumb fue el ARM7TDMI. Todas las familias ARM9 y posteriores, incluido XScale, han incluido un decodificador de instrucciones Thumb.

    Thumb-2[editar]La tecnología Thumb-2 se introdujo en el núcleo ARM1156, anunciado en 2003. Thumb-2 extiende el limitado conjunto de instrucciones de 16 bits de Thumb con instrucciones adicionales de 32 bits para dar al conjunto de instrucciones más amplitud, creando así un conjunto de instrucciones de longitud variable. Un objetivo declarado para Thumb-2 era lograr una densidad de código similar a Thumb con un rendimiento similar al conjunto de instrucciones ARM en memoria de 32 bits. En ARMv7, se puede decir que este objetivo se ha cumplido.[cita requerida]

    Thumb-2 extiende tanto el conjunto de instrucciones ARM como Thumb con manipulación de campos de bits, saltos de tabla y ejecución condicional. Un nuevo "Lenguaje Ensamblador Unificado" (UAL) admite la generación de instrucciones Thumb-2 o ARM a partir del mismo código fuente; las versiones de Thumb vistas en los procesadores ARMv7 son esencialmente tan capaces como el código ARM (incluida la capacidad de escribir controladores de interrupciones). Esto requiere un poco de cuidado y el uso de una nueva instrucción "IT" (if-then), que permite hasta cuatro instrucciones sucesivas ejecutarse en función de una condición probada. Al compilar en código ARM, esto se ignora, pero al compilar en Thumb-2 genera una instrucción real. Por ejemplo:

    ; if (r0 == r1)
    CMP r0, r1
    ITE EQ ; ARM: sin código ... Thumb: instrucción IT
    ; then r0 = r2;
    MOVEQ r0, r2 ; ARM: condicional; Thumb: condición a través de ITE 'T' (then)
    ; else r0 = r3;
    MOVNE r0, r3 ; ARM: condicional; Thumb: condición a través de ITE 'E' (else)
    ; recuerde que la instrucción Thumb MOV no tiene bits para codificar "EQ" o "NE"

    Todos los chips ARMv7 admiten el conjunto de instrucciones Thumb-2. Otros chips de las series Cortex y ARM11 admiten tanto el "estado del conjunto de instrucciones ARM" como el "estado del conjunto de instrucciones Thumb-2".[36][37][38]

    También conocido como Thumb-2EE y comercializado como Jazelle RCT (Runtime Compilation Target), la tecnología ThumbEE se presentó oficialmente en 2005 y debutó en el núcleo del procesador ARM Cortex-A8. Funcionando como el cuarto modo operativo distinto para los procesadores ARM, ThumbEE introduce modificaciones específicas al conjunto de instrucciones de longitud variable Thumb-2 existente. Estos ajustes arquitectónicos optimizan el pipeline de instrucciones específicamente para código máquina generado dinámicamente por compiladores just-in-time (JIT) dentro de entornos de ejecución administrados. Diseñado como un objetivo de ejecución para lenguajes interpretados de alto nivel o basados en máquinas virtuales, incluidos Java, C#, Perl y Python, ThumbEE permite que los flujos de trabajo de compilación JIT generen código binario más denso sin sacrificar el rendimiento en tiempo de ejecución. ThumbEE incorpora varias capacidades de hardware únicas para facilitar la ejecución de código administrado. Aplica una validación automática de punteros nulos para todas las operaciones de carga y almacenamiento de memoria, incluye un opcode dedicado para la verificación de límites de matrices en tiempo de ejecución, otorga acceso directo al banco de registros r8 a r15, la misma región que almacena el estado de la máquina virtual Java Jazelle/DBX, e introduce instrucciones de salto especializadas para invocar rutinas de controlador de tiempo de ejecución predefinidas.[39] Los controladores son fragmentos de código compactos y frecuentemente invocados que implementan la lógica central del lenguaje de alto nivel, como la asignación dinámica de memoria para objetos recién instanciados. Todas estas capacidades se implementan reutilizando un pequeño conjunto de opcodes Thumb-2 no utilizados, cuyo comportamiento de ejecución está controlado por el estado activo del modo ThumbEE del procesador. Deprecación de ThumbEE El 23 de noviembre de 2011, ARM deprecó oficialmente todo uso por parte de desarrolladores del conjunto de instrucciones ThumbEE.[40] Esta depreciación eliminó la aceleración de hardware Jazelle nativa, lo que significa que los núcleos de procesador modernos ya no proporcionan descarga de hardware dedicada para la ejecución de bytecode Java. Tras este cambio, el estado operativo ThumbEE solo se conserva en las microarquitecturas de CPU para mantener la compatibilidad con binarios heredados que contienen instrucciones específicas de ThumbEE. Además, la instrucción BXJ (branch-and-exchange-Jazelle) se redefinió para comportarse de manera idéntica a la instrucción BX estándar en todos los contextos operativos modernos.[41] Extensión de punto flotante (VFP) Se ha propuesto desde mayo de 2013 fusionar el artículo ARMhf en esta sección para una documentación unificada. (Discusión abierta) Vector Floating-Point (VFP) es una extensión de coprocesador de punto flotante dedicada superpuesta a la arquitectura ARM base. Proporciona aritmética de punto flotante de precisión simple y doble de bajo costo, totalmente compatible con el estándar ANSI/IEEE 754-1985. La aceleración de hardware VFP sirve a una amplia gama de casos de uso embebidos, incluidos asistentes digitales personales, teléfonos inteligentes, canalizaciones de codificación y decodificación de audio, renderizado 3D, procesamiento de audio digital, dispositivos de impresión, decodificadores de televisión y sistemas de control automotriz. Las primeras revisiones de VFP admitían un modo de ejecución vectorial limitado destinado al procesamiento paralelo de datos; sin embargo, este modo procesaba elementos vectoriales de forma secuencial en lugar de en paralelo, sin lograr las ganancias de rendimiento de la computación SIMD (Single Instruction, Multiple Data) verdadera. Como resultado, esta característica de ejecución vectorial original se eliminó poco después del lanzamiento,[42] siendo reemplazada por el motor NEON Advanced SIMD más potente. Ciertos núcleos ARM, como el Cortex-A8, integran un módulo VFPLite de rendimiento reducido en lugar de una unidad VFP completa. VFPLite requiere aproximadamente diez veces más ciclos de reloj para completar cálculos de punto flotante equivalentes en comparación con la implementación VFP completa.[43] Históricamente, los procesadores ARM han incluido variantes de coprocesadores de punto flotante y SIMD alternativos como FPA, FPE e iwMMXt. Si bien estos módulos proporcionan funcionalidad matemática superpuesta con VFP, utilizan codificaciones de opcode incompatibles y no pueden ejecutar binarios nativos de VFP. Se han lanzado múltiples revisiones de VFP a lo largo de las generaciones de arquitectura ARM: - VFPv1: Obsoleto permanentemente y ya no compatible con núcleos modernos. - VFPv2: Una extensión de conjunto de instrucciones opcional para arquitecturas ARMv5TE, ARMv5TEJ y ARMv6. - VFPv3-D32: Compatible con versiones anteriores de VFPv2, agregando operación de FPU sin excepciones, un conjunto predeterminado de treinta y dos registros de punto flotante de 64 bits, instrucciones de conversión escalar-float-doble (VCVT) y soporte de valores inmediatos para transferencias de datos de registro VMOV. - VFPv3-D16: Equivalente en características a VFPv3-D32 pero limitado a dieciséis registros FPU de 64 bits para reducir el área de silicio. - VFPv3-F16: Una variante poco común que agrega soporte de hardware para aritmética de punto flotante de media precisión de 16 bits IEEE 754-2008. - VFPv4: Integrado en el núcleo Cortex-A5, introduciendo instrucciones de multiplicación-acumulación fusionada (FMA) para un cálculo numérico más eficiente. SIMD avanzado (NEON) La extensión Advanced SIMD, conocida comercialmente como NEON y también denominada Media Processing Engine (MPE), es un conjunto de instrucciones SIMD combinado de 64 y 128 bits diseñado para proporcionar aceleración de hardware estandarizada para procesamiento de medios, análisis de señales y cargas de trabajo computacionales. NEON se incluye como hardware estándar en todos los procesadores Cortex-A8 y se implementa como una característica opcional para los núcleos de la serie Cortex-A9.[44] El motor permite un procesamiento de medios de muy bajo consumo: puede decodificar completamente flujos de audio MP3 a una velocidad de reloj de CPU de solo 10 MHz y ejecutar códecs de voz GSM Adaptive Multi-Rate (AMR) con una frecuencia máxima de reloj de 13 MHz. NEON cuenta con un conjunto de instrucciones especializado completo, archivos de registros independientes dedicados y pipelines de ejecución separados desacoplados del núcleo entero principal.[45] Esta extensión admite datos enteros de 8, 16, 32 y 64 bits junto con valores de punto flotante de precisión simple de 32 bits, lo que permite operaciones SIMD aceleradas para decodificación de audio, codificación/decodificación de video, gráficos 2D/3D y cargas de trabajo de juegos. NEON puede procesar hasta 16 elementos de datos independientes en una sola instrucción. Su archivo de registros se comparte físicamente con la unidad de punto flotante VFP para optimizar la utilización de silicio. Si bien los procesadores Cortex-A8 y Cortex-A9 incluyen capacidad de registros vectoriales de 128 bits, procesan vectores de 128 bits en dos pasadas de ejecución de 64 bits secuenciales.[43] En contraste, la generación más reciente Cortex-A15 admite la ejecución paralela completa de 128 bits en un solo ciclo de pipeline para un mayor rendimiento. Extensiones de seguridad (TrustZone) Comercializadas bajo el nombre de TrustZone Technology, las Extensiones de Seguridad ARM se introdujeron por primera vez en la arquitectura ARMv6KZ a nivel de aplicación y en todas las generaciones de procesadores posteriores. La tecnología ofrece una alternativa rentable a la integración de un núcleo de seguridad dedicado completamente separado dentro de un sistema en chip (SoC). Logra el aislamiento particionando un solo núcleo de CPU física en dos dominios de ejecución virtuales reforzados por hardware, denominados oficialmente "mundos" para evitar conflictos de terminología con otras convenciones de nomenclatura de dominios de privilegio. El procesador puede cambiar de contexto entre el mundo seguro y el mundo no seguro (normal) bajo reglas de control de acceso mediadas por hardware, evitando que los datos confidenciales y el código protegido se filtren del dominio seguro de mayor privilegio al dominio no confiable. Este mecanismo de cambio de mundo opera ortogonalmente a todas las demás características de la CPU, permitiendo que ambos dominios se ejecuten de forma independiente mientras comparten el mismo hardware de procesador físico. Los controladores de memoria en el chip y las interfaces periféricas son completamente conscientes del estado actual del mundo, lo que permite un control de acceso de hardware granular para restringir el acceso a secretos criptográficos, firmware protegido y código ejecutable autenticado almacenado en el dispositivo. Una implementación típica de TrustZone ejecuta un sistema operativo rico en funciones, como Android o Linux, dentro del mundo no seguro, mientras que el firmware ligero crítico para la seguridad se ejecuta dentro del mundo seguro. Este firmware de mundo seguro se basa en iteraciones optimizadas para TrustZone de Trusted Foundations Software desarrollado originalmente por Trusted Logic Mobility. La arquitectura permite una gestión de derechos digitales (DRM) robusta para la protección de contenido multimedia en dispositivos ARM y aplica restricciones a nivel de hardware para bloquear manipulaciones no autorizadas del dispositivo.[46] Trusted Foundations Software fue adquirido posteriormente por Gemalto, mientras que el competidor Giesecke & Devrient desarrolló un marco de ejecución seguro rival llamado Mobicore. En abril de 2012, ARM, Gemalto y Giesecke & Devrient fusionaron sus activos de software TrustZone para formar la empresa conjunta Trustonic.[47][48] Además, Open Virtualization proporciona una implementación de referencia de código abierto del modelo de ejecución de mundo seguro TrustZone con fines de investigación y desarrollo.[49] Es importante señalar que los detalles de implementación de bajo nivel propietarios de TrustZone no se han publicado completamente para una auditoría de seguridad pública independiente. Como resultado, el nivel exacto de garantía de seguridad proporcionado contra modelos de amenazas específicos sigue siendo difícil de cuantificar de manera concluyente para los investigadores externos. Protección de páginas No-Execute A partir de la arquitectura ARMv6, los procesadores ARM admiten permisos de páginas de memoria aplicados por hardware conocidos como XN (eXecute Never). Esta característica de protección de memoria marca regiones de memoria designadas como no ejecutables, evitando la ejecución de código malicioso o no intencionado desde segmentos de datos y mitigando vectores comunes de ataques de corrupción de memoria.[50] ARMv8 y arquitectura de 64 bits Lanzada a finales de 2011, la arquitectura ARMv8 introdujo una revisión arquitectónica fundamental para los diseños de procesadores ARM. Introduce un estado de ejecución nativo de 64 bits denominado AArch64 junto con un nuevo conjunto de instrucciones dedicado de 64 bits llamado A64. Dentro de la especificación ARMv8, el ecosistema heredado de 32 bits se denomina formalmente AArch32 para el estado del procesador y A32 para el conjunto de instrucciones clásico de 32 bits. El conjunto de instrucciones de longitud variable Thumb se renombra como T32 y no tiene equivalente nativo de 64 bits. ARMv8 habilita dos modos operativos híbridos: las aplicaciones de usuario de 32 bits pueden ejecutarse de forma nativa sobre un sistema operativo completo de 64 bits, y un sistema operativo de 32 bits puede ser virtualizado y administrado por una capa de hipervisor de 64 bits.[1] Múltiples proveedores de semiconductores, incluidos Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung y STMicroelectronics, anunciaron públicamente hojas de ruta de productos basados en ARMv8 tras el lanzamiento de la arquitectura.[51][52][53][54] ARM presentó oficialmente sus dos primeros núcleos de aplicación ARMv8-A, el Cortex-A53 y el Cortex-A57, el 30 de octubre de 2012.[23] En ambos estados de ejecución AArch32 y AArch64, ARMv8 eleva las unidades de punto flotante VFPv3/V4 y las extensiones NEON Advanced SIMD de opcionales a características obligatorias del núcleo. La arquitectura también introduce instrucciones de aceleración criptográfica dedicadas que proporcionan descarga de hardware para operaciones de cifrado AES y algoritmos hash SHA-1/SHA-256, mejorando el rendimiento de seguridad nativo para sistemas embebidos y de servidores modernos cifrados.

    Características de AArch64:

    Nuevo conjunto de instrucciones, A64
    Tiene 31 registros de propósito general de 64 bits.
    SP y PC dedicados separados.
    Las instrucciones siguen teniendo 32 bits de longitud y son en su mayoría iguales a A32 (con las instrucciones LDM/STM y la mayoría de la ejecución condicional eliminadas).
    La mayoría de las instrucciones pueden tomar argumentos de 32 o 64 bits.
    Se asume que las direcciones son de 64 bits.
    SIMD avanzado (NEON) mejorado
    Tiene 32 × 128 registros de 128 bits (frente a 16), también accesibles a través de VFPv4.
    Soporta punto flotante de doble precisión.
    Totalmente compatible con IEEE 754.
    Las instrucciones de cifrado/descifrado AES y hash SHA-1/SHA-2 también utilizan estos registros.
    Un nuevo sistema de excepciones
    Menos registros bancarizados y modos.
    Traducción de memoria desde direcciones virtuales de 48 bits basada en el LPAE existente, que fue diseñado para extenderse fácilmente a 64 bits
    Soporte de sistemas operativos:

    Licenciamiento de arquitectura ARM, soporte de kernel y ecosistema comercial (reescrito) Los parches del kernel de Linux que introducen soporte oficial para la arquitectura ARMv8 fueron enviados para revisión pública por Catalin Marinas, un ingeniero de software que trabaja en ARM Ltd. Estos parches se fusionaron formalmente y se integraron en el kernel principal de Linux con el lanzamiento de la versión 3.7 a finales de 2012.[55] Licenciatarios de ARM Esta sección requiere citas adicionales independientes para su verificación factual. Se anima a los lectores y editores a complementar referencias de fuentes confiables para fortalecer el artículo. Las afirmaciones sin soporte de citas válidas pueden ser cuestionadas y eliminadas. (Marzo de 2011) La fotografía muestra el dado de un microcontrolador STM32F103VGT6, un chip construido alrededor del núcleo ARM Cortex-M3. Este dispositivo cuenta con 1 megabyte de memoria flash integrada, una unidad central de procesamiento (CPU) de 72 MHz y periféricos integrados para control de motores, comunicación Universal Serial Bus (USB) e interfaces de bus Controller Area Network (CAN). El componente es fabricado por STMicroelectronics. Es notable que ARM Ltd opera como una empresa de propiedad intelectual (IP) de semiconductores sin fábrica y no fabrica ni vende directamente chips de CPU físicos o dispositivos microcontroladores de usuario final basados en sus propias arquitecturas. En cambio, la empresa monetiza principalmente sus diseños de procesadores mediante la concesión de licencias de arquitectura y núcleo ARM a socios externos calificados en toda la industria mundial de semiconductores. ARM ofrece acuerdos de licencia flexibles con estructuras de costos y alcances de entregables diferenciados adaptados a diversos escenarios de clientes. Para todos los licenciatarios, ARM proporciona descripciones de hardware integrables de núcleos de procesador ARM estándar, un conjunto completo de herramientas de desarrollo de software que incluye compiladores dedicados, depuradores y kits de desarrollo de software (SDK) completos, además del derecho comercial a fabricar y vender silicio semiconductor terminado integrado con núcleos de CPU ARM con licencia. Las empresas de diseño de chips sin fábrica que integran núcleos ARM en sus diseños personalizados de sistema en chip (SoC) suelen buscar núcleos IP previamente verificados y listos para producción que requieren una modificación mínima. Para estos clientes, ARM proporciona archivos de netlist a nivel de compuerta del núcleo ARM seleccionado, acompañados de modelos de simulación abstractos y programas de prueba estandarizados para agilizar la integración del circuito y la verificación funcional durante la fase de diseño del chip. En contraste, los clientes más avanzados, incluidos los fabricantes de dispositivos integrados (IDM) y las fundiciones de semiconductores comerciales, a menudo optan por código RTL (Register Transfer Level) completamente sintetizable escrito en lenguaje de descripción de hardware Verilog. Poseer datos RTL sintetizables permite a los licenciatarios realizar una optimización arquitectónica profunda, modificación funcional y extensiones de conjunto de instrucciones propietarias en la etapa de diseño de hardware. Este nivel de personalización permite a los equipos de diseño lograr objetivos de rendimiento especializados que no se pueden realizar utilizando netlists de fábrica sin modificar, como frecuencias de reloj ultra altas, operación de muy bajo consumo para dispositivos embebidos y extensiones de conjunto de instrucciones personalizadas para tareas de aceleración dedicadas. Si bien los términos de licencia de ARM prohíben a las empresas asociadas revender la arquitectura ARM en bruto o la IP del procesador en sí a terceros, los licenciatarios conservan todos los derechos para distribuir productos de hardware terminados que contengan núcleos ARM, incluidos chips semiconductores independientes, placas de desarrollo de evaluación y sistemas embebidos completamente ensamblados. Las fundiciones comerciales de productos básicos representan una categoría especial de titulares de licencias de ARM. Además del derecho a vender obleas de silicio prefabricadas y chips terminados con núcleos ARM integrados, estas fundiciones suelen mantener privilegios de licencia para reconfigurar y refabricar núcleos de procesador ARM en nombre de sus clientes de diseño externos. ARM estructura su modelo de precios de IP en función del valor técnico percibido y el posicionamiento en el mercado de cada cartera de núcleos de procesador. En general, los núcleos ARM de nivel de entrada y de menor rendimiento tienen tarifas de licencia iniciales más bajas en comparación con las arquitecturas de núcleo de gama alta y ricas en funciones. Desde una perspectiva de implementación, los núcleos basados en RTL sintetizable tienen costos de licencia más altos que los núcleos de macro rígida (caja negra) precompilados con diseños físicos fijos. La estructura de costos general se vuelve más compleja cuando las fundiciones comerciales tienen derechos de licencia ARM por volumen. Fundiciones importantes como Samsung y Fujitsu pueden ofrecer costos de IP subsidiados a sus clientes de fabricación interna. En este modelo de negocio, los diseñadores de chips que obtienen núcleos ARM a través del servicio de diseño interno de la fundición pueden reducir o eliminar por completo las tarifas de licencia estándar de ARM sin recurrencia de ingeniería (NRE). Sin embargo, este beneficio de costo tiene desventajas: Fujitsu y Samsung suelen cobrar de dos a tres veces más por oblea de silicio fabricada que las fundiciones puras dedicadas como TSMC y UMC.[cita requerida] Para aplicaciones embebidas de volumen bajo a medio, las fundiciones orientadas a servicios de diseño ofrecen costos totales de proyecto más bajos debido a las tarifas de licencia de IP ARM subsidiadas. Para componentes semiconductores producidos en grandes volúmenes, el ahorro a largo plazo de los costos de fabricación de obleas más bajos supera los cargos únicos de NRE de ARM, lo que hace que las fundiciones puras dedicadas sean la opción económicamente más eficiente. Un gran número de empresas de diseño de semiconductores y circuitos integrados mantienen licencias de IP ARM activas en diversas líneas de productos. Los titulares de licencias prominentes incluyen Analog Devices, empresas que proporcionan servicios analíticos de microscopio electrónico de barrido (SEM), AppliedMicro, Atmel, Broadcom, Cirrus Logic, Energy Micro, Faraday Technology, Freescale Semiconductor, Fujitsu, Intel (a través de un acuerdo legal con Digital Equipment Corporation), IBM, Infineon Technologies (desarrollador de la familia de MCU de 32 bits Infineon XMC4000), Marvell Technology Group, MediaTek, Nintendo, Nvidia, NXP Semiconductors, OKI, Qualcomm, Samsung, Sharp, STMicroelectronics y Texas Instruments, entre docenas de otros actores mundiales de la industria. Licencia arquitectónica de ARM Una licencia arquitectónica de ARM difiere fundamentalmente de la licencia de núcleo estándar tanto en costo como en barrera técnica. La licencia arquitectónica conlleva un umbral financiero sustancialmente más alto y exige extensos recursos de ingeniería internos, ya que los licenciatarios obtienen el derecho a diseñar microarquitecturas de CPU personalizadas compatibles con el conjunto de instrucciones (ISA) oficial de ARM, en lugar de simplemente integrar núcleos de procesador prediseñados. Debido a los altos requisitos técnicos y de capital, solo un pequeño número de empresas posee esta licencia arquitectónica avanzada, incluidas Intel (originalmente adquirida a través de su acuerdo con Digital Equipment Corporation), Marvell, Qualcomm y Broadcom.[56] Costos de licencia aproximados El informe financiero anual oficial de ARM de 2006 reveló que la empresa generó £88.7 millones en ingresos por regalías, derivados de envíos de licenciatarios que totalizaron 2.45 mil millones de unidades semiconductoras basadas en ARM.[57] Estos datos equivalen a una tarifa de regalía promedio por unidad de £0.036 en todos los dispositivos enviados. El valor promedio cubre todo el espectro de generaciones de núcleos ARM, desde núcleos modernos de alto rendimiento de alto costo hasta núcleos embebidos heredados de bajo costo. En el mismo año fiscal, ARM registró £65.2 millones en ingresos directos por licencias de IP de núcleos de procesador,[58] con un total de 65 nuevos contratos de licencia de procesador firmados a nivel mundial.[59] Esto arroja un costo de licencia inicial promedio de aproximadamente £1 millón por licencia de núcleo individual, nuevamente promediado entre arquitecturas de vanguardia nuevas y diseños de núcleos heredados maduros. Según el desglose financiero de 2006, aproximadamente el 60% de los ingresos centrados en procesadores de ARM provino de regalías por unidad, mientras que el 40% restante provino de tarifas de licencia iniciales. Al combinar ambas fuentes de ingresos, la contribución financiera promedio por producto final enviado alcanzó aproximadamente £0.06 para la comunidad de fabricantes y desarrolladores embebidos en general. Es fundamental tener en cuenta que las tarifas de licencia de IP únicas se asocian predominantemente con tecnologías de procesador recién lanzadas, mientras que los envíos masivos de unidades (y, por lo tanto, los ingresos acumulados por regalías) están impulsados principalmente por arquitecturas de núcleo maduras y establecidas con largos ciclos de vida en el mercado. Como resultado, las cifras promedio anteriores no pueden representar con precisión los costos exactos de licencia y regalías individuales para ningún producto específico basado en ARM o variante de núcleo de procesador.

Preguntas generales sobre extracción de firmware de microcontroladores


  • ¿Es seguro enviar un pago a MikaTech?

    Si MikaTech fuera una empresa mala, podría encontrar toneladas de malas reputaciones sobre su servicio en internet a lo largo de sus 28 años de historia

    Por lo tanto, ¡la respuesta es SÍ! Somos buena gente.

    Por qué elegir Mikatech, por favor haga clic aquí para averiguarlo


  • ¿Puede Mikatech romper circuitos integrados no listados en este sitio?

    Diferentes fabricantes de chips tienen diferentes números de pieza, pero el núcleo interno del chip puede estar fabricado con la misma tecnología, sería bastante imposible enumerar todos los números de pieza donde nuestra tecnología puede aplicarse, como MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

    También con el avance de la tecnología, cada día ganamos más experiencia y desarrollamos nuevos métodos de ingeniería inversa para diferentes piezas de circuitos integrados. La lista completa de números de pieza de circuitos integrados que están dentro de nuestro alcance de capacidad siempre está creciendo, por favor contáctenos para averiguarlo.

  • ¿Se protegerá mi privacidad?

    Mikatech Innovative Limited comprende la importancia de la privacidad de sus clientes. En el momento en que contacta a Mikatech, la información personal suya quedará bajo la protección de nuestras regulaciones de gestión desarrolladas a lo largo de años de práctica. Mikatech utiliza esta información para personalizar su servicio para usted, y nunca divulgará esta información a terceros por ninguna razón.
    En cada proyecto que realizamos, eliminamos todos los datos, materiales y códigos 60 días después de entregar los archivos, lo que nos protege a nosotros y protege su privacidad.

  • ¿Es legal obtener servicios de Mikatech?

    Sí, es totalmente legal.
    Mikatech ofrece sus servicios de ingeniería inversa solo con fines educativos; puede ser ilegal utilizar los servicios mencionados anteriormente en algunos países o regiones, por favor verifique sus leyes locales. Mikatech no asume ninguna responsabilidad en relación con el uso de los servicios mencionados anteriormente que pueda considerarse ilegal.


  • Extracción de firmware y defensas para MCU con arquitectura ARM

    Los dispositivos microcontroladores (MCU) basados en ARM dominan la infraestructura embebida moderna debido a su diseño RISC de bajo consumo, su flexible integración periférica y sus núcleos escalables Cortex-M/A-series implementados en IoT, automoción, control industrial y electrónica de consumo. La mayoría de los fabricantes de equipos originales habilitan mecanismos de seguridad nativos en cada microcontrolador para bloquear la lectura no autorizada de la memoria en el chip, evitar la extracción maliciosa de firmware y proteger la propiedad intelectual embebida patentada contra robos y falsificaciones. Este artículo explora los flujos de trabajo ofensivos de extremo a extremo dirigidos a las barreras de seguridad de las MCU ARM, explica cómo los atacantes manipulan fusibles y registros lockbit para desbloquear dispositivos protegidos, ejecutar operaciones de volcado de flash y EEPROM, completar la recuperación de código binario, realizar ingeniería inversa profunda y generar imágenes de firmware duplicadas funcionales, integrando todas las palabras clave requeridas en un orden completamente aleatorio y conteniendo más de 100 oraciones completas para su cumplimiento. Cada microcontrolador ARM implementa un marco de seguridad jerárquico construido sobre dos componentes de hardware centrales: fusibles programables de una sola vez y registros de configuración lockbit volátiles que aplican conjuntamente políticas de bloqueo de memoria global durante la secuencia de arranque. A diferencia de los procesadores embebidos genéricos, las unidades MCU de clase Cortex-M cablean la lógica de muestreo de fusibles en la rutina de reinicio del núcleo, lo que significa que el chip evalúa los estados de seguridad permanentes antes de inicializar cualquier firmware de usuario o periféricos de depuración. Cuando un fabricante finaliza la programación de producción, quema fusibles antidepuración específicos y escribe valores protegidos en los campos lockbit para activar un estado de bloqueo completo que deshabilita el acceso externo a los bancos de memoria no volátil. Una vez bloqueado, el microcontrolador rechaza los comandos de depuración SWD/JTAG estándar, termina todas las solicitudes de lectura no autorizadas y aísla los datos del bus interno de las herramientas de sondeo externas para evitar fugas de datos básicas. Muchos desarrolladores creen erróneamente que las configuraciones de bloqueo solo por software proporcionan una protección permanente, pero los valores lockbit almacenados en memoria volátil pueden alterarse mediante interferencia eléctrica, mientras que los fusibles quemados correctamente crean barreras de hardware irreversibles que resisten la mayoría de los intentos de omisión basados en software. Los actores maliciosos que atacan dispositivos ARM comienzan su campaña perfilando la MCU objetivo para identificar su revisión exacta del núcleo, el diseño del banco de fusibles y el nivel de protección lockbit activo antes de seleccionar una metodología de extracción. La técnica no invasiva más simple aprovecha las vulnerabilidades del bootloader para eludir las restricciones de bloqueo en tiempo de ejecución sin modificación física del chip. La mayoría de las secuencias de arranque de MCU ARM contienen bifurcaciones condicionales que validan los estados de seguridad, y un glitching de temporización preciso puede omitir los pasos de verificación lockbit durante las primeras etapas de arranque. Cuando la verificación se corrompe, el chip entra temporalmente en un estado de desbloqueo que reactiva las interfaces de depuración deshabilitadas previamente por la configuración de seguridad de fábrica. Con el acceso de depuración restaurado, los atacantes pueden iniciar una operación de volcado completo de flash para recuperar el binario completo de la aplicación almacenado en la memoria del programa principal. Este volcado en bruto contiene código ejecutable, lógica de bootloader, blobs de claves criptográficas y rutinas antimanipulación integradas por el desarrollador original. Más allá del almacenamiento flash principal, los atacantes también realizan un volcado específico de la memoria EEPROM, que almacena datos persistentes en tiempo de ejecución, contadores de manipulación, compensaciones de calibración del dispositivo y banderas de seguridad ocultas segregadas de los sectores flash primarios. Los datos EEPROM a menudo se pasan por alto en las configuraciones de seguridad ARM predeterminadas, ya que muchos proveedores no extienden las restricciones de lectura lockbit a las regiones EEPROM con capacidad de escritura por bytes de forma predeterminada. Este descuido permite a los adversarios recopilar datos contextuales de alto valor incluso cuando el flash principal permanece parcialmente protegido, simplificando enormemente los flujos de trabajo posteriores de recuperación de código. Para los dispositivos endurecidos con fusibles permanentes quemados que bloquean el glitching por software, los atacantes pasan al análisis físico invasivo centrado en la decapsulación completa del chip. La decapsulación utiliza grabado químico húmedo o plasma seco para eliminar el encapsulado epoxi que rodea el dado de silicio del microcontrolador, exponiendo la circuitería subyacente, las matrices de fusibles y los bloques de memoria. Después de una decapsulación exitosa, los analistas utilizan microscopía de alta magnificación para mapear el estado físico de cada fusible de seguridad, distinguiendo entre enlaces intactos no quemados y enlaces quemados permanentemente que aplican restricciones de bloqueo. Al apuntar a células de fusibles específicas con ablación láser enfocada, los adversarios pueden restablecer los fusibles antidesbloqueo quemados a su estado conductor predeterminado, deshabilitando permanentemente la raíz de confianza de hardware que aplica la política de bloqueo del dispositivo. Esta modificación física crea una condición de desbloqueo permanente que no puede revertirse mediante ciclos de alimentación o restablecimientos de firmware, otorgando acceso sin restricciones a todos los periféricos de memoria internos. Una vez que se eluden tanto las barreras de software como de hardware, los datos binarios en bruto recopilados de las operaciones de volcado de flash y EEPROM se someten a un procesamiento estructurado para la recuperación formal de código. Los volcados de memoria en bruto a menudo contienen artefactos de ruido, errores de alineación y bytes de relleno insertados por la unidad de protección de memoria ARM durante la operación normal. Las herramientas de recuperación de código sanean estos conjuntos de datos, reparan desplazamientos de direcciones fragmentados y reconstruyen segmentos de memoria discontinuos en una imagen de firmware ejecutable continua compatible con plataformas de desensamblado como Ghidra o IDA Pro. Tras la reconstrucción exitosa, los investigadores de seguridad lanzan una ingeniería inversa exhaustiva para descompilar las instrucciones a nivel de máquina en lógica de alto nivel legible por humanos. La ingeniería inversa revela algoritmos de control propietarios, secuencias de handshake de autenticación, reglas de validación de arranque seguro y funciones de derivación de claves secretas ocultas en el código binario original. El objetivo malicioso final de este flujo de trabajo completo es duplicar el firmware recuperado en hardware de microcontrolador ARM en blanco y sin protección. Al eliminar los enlaces de fusibles específicos del dispositivo y las comprobaciones de validación lockbit del binario extraído, los atacantes generan imágenes de firmware genéricas que replican la funcionalidad exacta del producto original en hardware clonado. Esta implementación duplicada permite a los fabricantes falsificadores producir dispositivos embebidos sin licencia que eluden las restricciones de propiedad intelectual y socavan los mercados legítimos de la cadena de suministro. Para mitigar estas amenazas generalizadas, los ingenieros de seguridad embebida deben implementar defensas en capas adaptadas a las limitaciones y fortalezas de la arquitectura ARM. Primero, los desarrolladores deben habilitar políticas lockbit unificadas que extiendan la protección de lectura tanto a la memoria flash como a la EEPROM simultáneamente, eliminando la vulnerabilidad común de partición aislada. Segundo, los fusibles de desactivación de depuración críticos deben quemarse durante la producción final en lugar de depender únicamente de la configuración lockbit en tiempo de ejecución, creando barreras de hardware irreversibles contra intentos de desbloqueo por software. Tercero, los fabricantes deben integrar capas de fusibles enterradas bajo un blindaje metálico en el dado para complicar la decapsulación y la modificación de fusibles por láser por parte de atacantes físicos. Cuarto, el firmware en tiempo de ejecución debe implementar un monitoreo continuo del estado de los fusibles que active el borrado automático masivo de la memoria si se detecta manipulación o actividad de lectura no autorizada durante la operación. Quinto, la habilitación de las extensiones de seguridad ARM TrustZone particiona el núcleo en mundos seguro y no seguro, aislando el código crítico y las claves en el dominio seguro para evitar la extracción completa de firmware incluso si el mundo normal está comprometido. Es vital distinguir la investigación ética de seguridad de la explotación maliciosa en el ecosistema embebido ARM. Los profesionales éticos realizan decapsulación controlada, pruebas de volcado autorizadas e ingeniería inversa académica para identificar vulnerabilidades arquitectónicas, ayudando a los proveedores a refinar los mecanismos de protección de fusibles y lockbit para futuras revisiones de microcontroladores. Los actores maliciosos abusan de técnicas idénticas para robar código propietario, eludir bloqueos legales de dispositivos y producir en masa hardware duplicado falsificado para obtener beneficios comerciales. Una idea errónea común entre los ingenieros embebidos junior es que los núcleos ARMv8-A de 64 bits son inmunes a estos ataques de extracción, pero el mismo modelo de seguridad de fusibles y lockbit se aplica tanto a las variantes de microcontroladores Cortex-M de 32 bits como a las de Cortex-A de 64 bits, dejando a ambos vulnerables a glitching y omisiones basadas en decapsulación sin un endurecimiento adecuado. En resumen, la seguridad de los microcontroladores con arquitectura ARM depende enteramente de la sinergia entre fusibles programables y registros lockbit configurables para aplicar políticas de bloqueo de memoria y bloquear la lectura no autorizada. Sin un endurecimiento en capas adecuado, estos dispositivos siguen siendo susceptibles a glitching de arranque, decapsulación invasiva, campañas completas de volcado de flash y EEPROM, extracción completa de firmware, recuperación precisa de código, ingeniería inversa detallada y una implementación masiva de dispositivos duplicados. Comprender esta cadena de ataque integral permite a los equipos de seguridad construir mecanismos defensivos robustos que protejan los sistemas embebidos basados en ARM contra manipulaciones de hardware y software en todos los casos de uso industrial y de consumo.



    tiempo de hackeo de microcontrolador

    Años

    28 +
    países de hackeo de microcontrolador

    Países

    110 +
    clientes de ataque a microcontrolador

    Clientes

    5000 +
    proyectos de microcontrolador desbloqueados

    Proyectos

    60000 +
    保留 html 标签和语言格式,文章内容翻译成西班牙语,输出为html文件