Rétro-ingénierie MCU

Déverrouillage de microcontrôleur - MikaTech

Nos valeurs et objectifs

À propos de MikaTech

Le temps a passé vite, du jour où nous avons réalisé notre premier projet de rétro-ingénierie sur MCU 8051 en 1998, jusqu'à l'installation de notre laboratoire de rétro-ingénierie d'un million de dollars en 2012, 14 années se sont écoulées. Aujourd'hui, nous démarrons notre nouvelle activité de développement de systèmes visuels embarqués, avec l'espoir de servir encore 10 ans.

signature Peter Lee Co-fondateur & CEO

Rétro-ingénierie des microcontrôleurs à architecture ARM

    • Introduction à l'architecture ARM
    • Introduction à l'architecture ARM L'architecture ARM désigne une vaste famille de conceptions de processeurs à jeu d'instructions réduit (RISC) créées à l'origine et actuellement concédées sous licence par la société britannique ARM Holdings. L'architecture est née dans les années 1980[2], lorsque Acorn Computers Ltd a conçu le cœur du processeur pour sa gamme d'ordinateurs de bureau. La technologie a ensuite été séparée en une entité commerciale indépendante, qui est devenue l'actuelle ARM Holdings. Statistiquement, ARM était l'architecture 32 bits la plus répandue en volume de production en 2013.[3][4] Selon les données officielles publiées par ARM Holdings, les fabricants de puces ont expédié un total de 6,1 milliards d'unités de traitement basées sur ARM en 2010 seulement. Ces dispositifs représentaient 95 % de tous les smartphones, 35 % des téléviseurs numériques et décodeurs, et 10 % des appareils informatiques mobiles dans le monde.

      Fonctionnant uniquement en tant que fournisseur de propriété intellectuelle (IP), ARM Holdings ne fabrique jamais de puces semi-conductrices physiques par elle-même. Au lieu de cela, l'entreprise commercialise ses plans de processeurs en octroyant des licences de conception à des fabricants de semi-conducteurs externes de l'industrie. Une large gamme de produits modernes de système sur puce (SoC) adopte des cœurs ARM, notamment les plateformes Qualcomm Snapdragon, NVIDIA Tegra, Marvell XScale et Texas Instruments OMAP, ainsi que la propre famille de processeurs Cortex d'ARM et les SoC personnalisés d'Apple déployés dans les appareils iPhone. Le terme ARM était à l'origine l'abréviation de Acorn RISC Machine[6] ; après l'abandon de la marque Acorn, la définition a été rebaptisée Advanced RISC Machine. Construit sur les principes fondamentaux du RISC, le matériel du processeur ARM nécessite beaucoup moins de transistors que les processeurs conventionnels à jeu d'instructions complexe (CISC) utilisés dans les ordinateurs de bureau traditionnels. Cette structure matérielle simplifiée offre des avantages majeurs, notamment un coût de fabrication inférieur, une dissipation thermique réduite et une consommation d'énergie considérablement diminuée. Ces caractéristiques rendent les architectures ARM particulièrement adaptées aux appareils légers, portables et dépendants de batteries, tels que les smartphones et les tablettes.[7] Grâce à sa complexité simplifiée, les concepteurs peuvent intégrer des cœurs ARM dans des systèmes sur puce embarqués compacts et économes en énergie qui combinent mémoire embarquée, interfaces périphériques, modules radio sans fil et autres composants fonctionnels. L'Apple Newton, assistant numérique personnel (PDA), a été l'un des premiers exemples commerciaux de cette méthodologie de conception, tandis que la même philosophie d'optimisation sous-tend les processeurs Apple A4 et A5 utilisés dans les premières générations d'iPad. Au-delà des appareils mobiles embarqués, la simplicité inhérente des conceptions RISC d'ARM permet également des implémentations multi-cœurs rentables. Les ingénieurs peuvent déployer des densités de cœurs plus élevées avec une meilleure efficacité énergétique, offrant des performances de calcul globales plus fortes pour les serveurs modernes, les ordinateurs portables et les plates-formes informatiques portables.


    • MCU à architecture ARM que Mikatech peut rétro-ingénierer
    • Série Atmel AT91SAMxxx :
      AT91SAM9XE512 AT91SAM9XE256 AT91SAM9XE128 AT91SAM7S64B AT91SAM7S32B AT91SAM7SE512 AT91SAM7SE256 AT91SAM7SE32 AT91SAM7XC512 AT91SAM7XC256 AT91SAM7XC128 AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 AT91SAM7S161 AT91SAM7S512 AT91SAM7S256 AT91SAM7S128 AT91SAM7S64 AT91SAM7S321 ...
    • Série NXP LPCxxx :
      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...
    • Série 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 ...

    • Liste des cœurs de microprocesseurs ARM
    • Les cœurs de microprocesseurs d'ARM Holdings sont listés ci-dessous, triés par génération et nom. ARM fournit un résumé des nombreux fournisseurs qui implémentent des cœurs ARM dans leurs conceptions.[1] Keil fournit également un résumé plus récent des fournisseurs de processeurs basés sur ARM.[2] ARM fournit en outre un tableau[3] montrant un aperçu de la gamme de processeurs ARM avec les performances et les fonctionnalités par rapport aux capacités pour les familles de dispositifs ARM7, ARM9, ARM11, Cortex-M, Cortex-R et Cortex-A plus récentes.

      Cœurs de microprocesseurs ARM [modifier] Conçus par ARM [modifier] Famille ARM Architecture ARM Core Fonctionnalité Cache (I/D), MMU MIPS typiques @ MHz
      ARM1 ARMv1 ARM1 Première implémentation Aucune
      ARM2 ARMv2 ARM2 ARMv2 ajouté l'instruction MUL (multiplier) Aucune 4 MIPS @ 8 MHz
      0,33 DMIPS/MHz
      ARMv2a ARM250 MEMC intégré (MMU), processeur graphique et E/S. ARMv2a ajouté les instructions SWP et SWPB (swap). Aucune, MEMC1a 7 MIPS @ 12 MHz
      ARM3 ARMv2a ARM3 Premier cache mémoire intégré. 4 Ko unifié 12 MIPS @ 25 MHz
      0,50 DMIPS/MHz
      ARM6 ARMv3 ARM60 ARMv3 premier à supporter un espace d'adressage 32 bits (auparavant 26 bits) Aucune 10 MIPS @ 12 MHz
      ARM600 Comme ARM60, cache et bus coprocesseur (pour l'unité à virgule flottante FPA10). 4 Ko unifié 28 MIPS @ 33 MHz
      ARM610 Comme ARM60, cache, pas de bus coprocesseur. 4 Ko unifié 17 MIPS @ 20 MHz
      0,65 DMIPS/MHz
      ARM7 ARMv3 ARM700 8 Ko unifié 40 MHz
      ARM710 Comme ARM700, pas de bus coprocesseur. 8 Ko unifié 40 MHz
      ARM710a Comme ARM710 8 Ko unifié 40 MHz
      0,68 DMIPS/MHz
      ARM7TDMI ARMv4T ARM7TDMI(-S) Pipeline 3 étages, Thumb aucun 15 MIPS @ 16,8 MHz
      63 DMIPS @ 70 MHz
      ARM710T Comme ARM7TDMI, cache 8 Ko unifié, MMU 36 MIPS @ 40 MHz
      ARM720T Comme ARM7TDMI, cache 8 Ko unifié, MMU avec extension de changement de contexte rapide 60 MIPS @ 59,8 MHz
      ARM740T Comme ARM7TDMI, cache MPU
      ARM7EJ ARMv5TEJ ARM7EJ-S Pipeline 5 étages, Thumb, Jazelle DBX, instructions DSP améliorées aucun
      ARM8 ARMv4 ARM810[4][5] Pipeline 5 étages, prédiction de branchement statique, mémoire à double bande passante 8 Ko unifié, MMU 84 MIPS @ 72 MHz
      1,16 DMIPS/MHz
      ARM9TDMI ARMv4T ARM9TDMI Pipeline 5 étages, Thumb aucun
      ARM920T Comme ARM9TDMI, cache 16 Ko/16 Ko, MMU avec FCSE (Fast Context Switch Extension)[6] 200 MIPS @ 180 MHz
      ARM922T Comme ARM9TDMI, caches 8 Ko/8 Ko, MMU
      ARM940T Comme ARM9TDMI, caches 4 Ko/4 Ko, MPU
      ARM9E ARMv5TE ARM946E-S Thumb, instructions DSP améliorées, caches variables, mémoires étroitement couplées, MPU
      ARM966E-S Thumb, instructions DSP améliorées, pas de cache, TCM
      ARM968E-S Comme ARM966E-S, pas de cache, TCM
      ARMv5TEJ ARM926EJ-S Thumb, Jazelle DBX, instructions DSP améliorées, variable, TCM, MMU 220 MIPS @ 200 MHz
      ARMv5TE ARM996HS Processeur sans horloge, comme ARM966E-S, pas de caches, TCM, MPU
      ARM10E ARMv5TE ARM1020E Pipeline 6 étages, Thumb, instructions DSP améliorées, (VFP) 32 Ko/32 Ko, MMU
      ARM1022E Comme ARM1020E 16 Ko/16 Ko, MMU
      ARMv5TEJ ARM1026EJ-S Thumb, Jazelle DBX, instructions DSP améliorées, (VFP) variable, MMU ou MPU
      ARM11 ARMv6 ARM1136J(F)-S[7] Pipeline 8 étages, SIMD, Thumb, Jazelle DBX, (VFP), instructions DSP améliorées variable, MMU 740 @ 532–665 MHz (SoC i.MX31), 400–528 MHz
      ARMv6T2 ARM1156T2(F)-S Pipeline 8 étages, SIMD, Thumb-2, (VFP), instructions DSP améliorées variable, MPU
      ARMv6Z ARM1176JZ(F)-S Comme ARM1136EJ(F)-S variable, MMU + TrustZone 965 DMIPS @ 772 MHz, jusqu'à 2 600 DMIPS avec quatre processeurs[8]
      ARMv6K ARM11 MPCore Comme ARM1136EJ(F)-S, 1–4 cœurs 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] Profil microcontrôleur, Thumb + sous-ensemble Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instruction de multiplication matérielle (optionnelle petite), timer système optionnel, mémoire bit-banding optionnelle Pas de cache, pas de TCM, pas de MPU 0,84 DMIPS/MHz
      Cortex-M0+ [11] Profil microcontrôleur, Thumb + sous-ensemble Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instruction de multiplication matérielle (optionnelle petite), timer système optionnel, mémoire bit-banding optionnelle Pas de cache, pas de TCM, MPU optionnel avec 8 régions 0,93 DMIPS/MHz
      Cortex-M1 [12] Profil microcontrôleur, Thumb + sous-ensemble Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB),[10] instruction de multiplication matérielle (optionnelle petite), option OS ajoute SVC / pointeur de pile bancarisé, timer système optionnel, pas de mémoire bit-banding Pas de cache, 0-1024 Ko I-TCM, 0-1024 Ko D-TCM, pas de MPU 136 DMIPS @ 170 MHz,[13] (0,8 DMIPS/MHz dépendant du FPGA)[14]
      ARMv7-M Cortex-M3 [15] Profil microcontrôleur, Thumb / Thumb-2, instructions de multiplication et division matérielles, mémoire bit-banding optionnelle Pas de cache, pas de TCM, MPU optionnel avec 8 régions 1,25 DMIPS/MHz
      ARMv7E-M Cortex-M4 [16] Profil microcontrôleur, Thumb / Thumb-2 / DSP / FPU simple précision optionnel FPv4, instructions de multiplication et division matérielles, mémoire bit-banding optionnelle Pas de cache, pas de TCM, MPU optionnel avec 8 régions 1,25 DMIPS/MHz
      Cortex-R ARMv7-R Cortex-R4 [17] Profil temps réel, Thumb / Thumb-2 / DSP / FPU VFPv3 optionnel, instructions de multiplication et division optionnelles, parité et ECC optionnelles pour les bus internes / cache / TCM, pipeline 8 étages double cœur fonctionnant en lockstep avec logique de défaut 0-64 Ko / 0-64 Ko, 0-2 de 0-8 Mo TCM, MPU optionnel avec 8/12 régions
      Cortex-R5 (MPCore) [18] Profil temps réel, Thumb / Thumb-2 / DSP / FPU VFPv3 optionnel et précision, instructions de multiplication et division optionnelles, parité et ECC optionnelles pour les bus internes / cache / TCM, pipeline 8 étages double cœur fonctionnant en lockstep avec logique de défaut / optionnel comme 2 cœurs indépendants, port périphérique à faible latence (LLPP), port de cohérence accélérateur (ACP) [19] 0-64 Ko / 0-64 Ko, 0-2 de 0-8 Mo TCM, MPU optionnel avec 12/16 régions
      Cortex-R7 (MPCore) [20] Profil temps réel, Thumb / Thumb-2 / DSP / FPU VFPv3 optionnel et précision, instructions de multiplication et division optionnelles, parité et ECC optionnelles pour les bus internes / cache / TCM, pipeline 11 étages double cœur fonctionnant en lockstep avec logique de défaut / exécution hors ordre / renommage dynamique de registres / optionnel comme 2 cœurs indépendants, LLPP, ACP [19] 0-64 Ko / 0-64 Ko, ? de 0-128 Ko TCM, MPU optionnel avec 16 régions
      Cortex-A ARMv7-A Cortex-A5 [21] Profil application, ARM / Thumb / Thumb-2 / DSP / SIMD / FPU VFPv4-D16 optionnel / NEON optionnel / Jazelle RCT et DBX, 1–4 cœurs / MPCore optionnel, unité de contrôle de snoop (SCU), contrôleur d'interruptions générique (GIC), port de cohérence accélérateur (ACP) 4-64 Ko / 4-64 Ko L1, MMU + TrustZone 1,57 DMIPS / MHz par cœur
      Cortex-A7 MPCore [22] Profil application, ARM / Thumb / Thumb-2 / DSP / FPU VFPv4-D16 / NEON / Jazelle RCT et DBX / Virtualisation matérielle, exécution dans l'ordre, superscalaire, 1–4 cœurs SMP, extensions de grandes adresses physiques (LPAE), SCU, GIC, ACP, architecture et jeu de fonctionnalités identiques à A15, pipeline 8-10 étages, conception basse consommation[23] 32 Ko / 32 Ko L1, 0-4 Mo L2, L1 et L2 avec parité et ECC, MMU + TrustZone 1,9 DMIPS / MHz par cœur
      Cortex-A8 [24] Profil application, ARM / Thumb / Thumb-2 / FPU VFPv3 / NEON / Jazelle RCT et DAC, pipeline superscalaire 13 étages 16-32 Ko / 16-32 Ko L1, 0-1 Mo L2 opt ECC, MMU + TrustZone jusqu'à 2000 (2,0 DMIPS/MHz de 600 MHz à plus de 1 GHz)
      Cortex-A9 MPCore [25] Profil application, ARM / Thumb / Thumb-2 / DSP / FPU VFPv3 optionnel / NEON optionnel / Jazelle RCT et DBX, superscalaire à émission spéculative hors ordre, 1–4 cœurs SMP, SCU, GIC, ACP 16-64 Ko / 16-64 Ko L1, 0-8 Mo L2 opt Parité, MMU + TrustZone 2,5 DMIPS/MHz par cœur, 10 000 DMIPS @ 2 GHz sur TSMC 40G optimisé pour les performances (double cœur)
      ARM Cortex-A12 [26] Profil application, ARM / Thumb-2 / DSP / FPU VFPv4 / NEON / Virtualisation matérielle, superscalaire à émission spéculative hors ordre, 1–4 cœurs SMP, LPAE, SCU, GIC, ACP 32-64KB / 32 Ko L1, 256KB-8 Mo L2 3,0 DMIPS / MHz par cœur
      Cortex-A15 MPCore [27] Profil application, ARM / Thumb / Thumb-2 / DSP / FPU VFPv4 / NEON / Jazelle RCT / Virtualisation matérielle, superscalaire à émission spéculative hors ordre, 1–4 cœurs SMP, LPAE, SCU, GIC, ACP, pipeline 15-24 étages[23] 32 Ko / 32 Ko L1, 0-4 Mo L2, L1 et L2 avec parité et ECC, MMU + TrustZone Au moins 3,5 DMIPS/MHz par cœur (jusqu'à 4,01 DMIPS/MHz selon l'implémentation).[28]
      Cortex-A50 ARMv8-A Cortex-A53[29] Profil application, AArch32 et AArch64, 1-4 cœurs SMP, Trustzone, NEON SIMD avancé, VFPv4, virtualisation matérielle, double issue, pipeline dans l'ordre 8~64 KB/8~64 KB L1 par cœur, 128 KB~2 Mo L2 partagé, adresses physiques 40 bits 2,3 DMIPS/MHz
      Cortex-A57[30] Profil application, AArch32 et AArch64, 1-4 cœurs SMP, Trustzone, NEON SIMD avancé, VFPv4, virtualisation matérielle, multi-issue, pipeline profondément hors ordre 48 KB/32 KB L1 par cœur, 512 KB~2 Mo L2 partagé, adresses physiques 44 bits Au moins 4,1 DMIPS/MHz par cœur (jusqu'à 4,76 DMIPS/MHz selon l'implémentation).
      Famille ARM Architecture ARM Core Fonctionnalité Cache (I/D), MMU MIPS typiques @ MHz

      Conçus par des tiers [modifier] Ces cœurs implémentent le jeu d'instructions ARM et ont été développés indépendamment par des entreprises titulaires d'une licence architecturale d'ARM.

      Famille Architecture ARM Core Fonctionnalité Cache (I/D), MMU MIPS typiques @ MHz
      StrongARM ARMv4 SA-1 Pipeline 5 étages 16 KB/8–16 KB, MMU 133–206 MHz
      1,0 DMIPS/MHz
      Faraday[31] ARMv4 FA510 Pipeline 6 étages jusqu'à 32 KB / 32 KB Cache, MPU 1,26 DMIPS/MHz
      100-200 MHz
      FA526 jusqu'à 32 KB / 32 KB Cache, MMU 1,26 MIPS/MHz
      166-300 MHz
      FA626 Pipeline 8 étages 32 KB/32 KB Cache, MMU 1,35 DMIPS/MHz
      500 MHz
      ARMv5TE FA606TE Pipeline 5 étages pas de cache, pas de MMU 1,22 DMIPS/MHz
      200 MHz
      FA626TE Pipeline 8 étages 32 KB/32 KB Cache, MMU 1,43 MIPS/MHz
      800 MHz
      FMP626TE Pipeline 8 étages, SMP 1,43 MIPS/MHz
      500 MHz
      FA726TE Pipeline 13 étages, double issue 2,4 DMIPS/MHz
      1000 MHz
      XScale ARMv5TE XScale Pipeline 7 étages, Thumb, instructions DSP améliorées 32 KB/32 KB, MMU 133–400 MHz
      Bulverde Wireless MMX, Wireless SpeedStep ajoutés 32 KB/32 KB, MMU 312–624 MHz
      Monahans[32] Wireless MMX2 ajouté 32 KB/32 KB (L1), cache L2 optionnel jusqu'à 512 KB, MMU jusqu'à 1,25 GHz
      Sheeva ARMv5 Feroceon Pipeline 5-8 étages, simple issue 16 KB / 16 KB, MMU 600-2000 MHz
      Jolteon Pipeline 5-8 étages, double issue 32 KB / 32 KB, MMU
      PJ1 (Mohawk) Pipeline 5-8 étages, simple issue, Wireless MMX2 32 KB / 32 KB, MMU 1,46 DMIPS/MHz
      1,06 GHz
      ARMv6/ARMv7-A PJ4 Pipeline 6-9 étages, double issue, Wireless MMX2, SMP 32 KB / 32 KB, MMU 2,41 DMIPS/MHz
      1,6 GHz
      Snapdragon ARMv7-A Scorpion [33] 1 ou 2 cœurs. ARM / Thumb / Thumb-2 / DSP / SIMD / FPU VFPv3 / NEON (largeur 128 bits) 256 Ko L2 par cœur 2,1 DMIPS / MHz par cœur
      Krait [33] 1, 2 ou 4 cœurs. ARM / Thumb / Thumb-2 / DSP / SIMD / FPU VFPv4 / NEON (largeur 128 bits) 4 Ko / 4 Ko L0, 16 Ko / 16 Ko L1, 512 Ko L2 par cœur 3,3 DMIPS / MHz par cœur
      Apple Ax ARMv7-A Apple Swift [34] 2 cœurs. ARM / Thumb / Thumb-2 / DSP / SIMD / FPU VFPv4 / NEON L1 : 32 kB instruction + 32 kB données, L2 : 1 MB 3,5 DMIPS / MHz par cœur
      X-Gene ARMv8-A X-Gene 64 bits, quadruple issue, SMP Cache, MMU, Virtualisation 3 GHz
      Denver ARMv8-A Parker 64 bits

      Voir aussi [modifier] Portail de l'informatique
      Portail de l'électronique
      Architecture ARM
      Liste des applications des cœurs ARM
      Références [modifier]^ "Line Card" (PDF). 2003. Consulté le 2011-01-06.
      ^ ARM Ltd et ARM Germany GmbH. "Device Database". Keil. Consulté le 2011-01-06.
      ^ "Processors". ARM. 2011. Consulté le 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. August 26, 1996. Consulté le March 16, 2012.
      ^ Register 13, FCSE PID register ARM920T Technical Reference Manual
      ^ "ARM1136J(F)-S – ARM Processor". Arm.com. Consulté le 2009-04-18.
      ^ "ARM11 Processor Family". ARM. Consulté le 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", ARM press release, March 19, 2007. Consulté le April 11, 2007.
      ^ "ARM Cortex-M1", ARM product website. Consulté le April 11, 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; January 31, 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; October 20, 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. Consulté le 2012-10-13.
      ^ "Cortex-A57 Processor". ARM Holdings. Consulté le 2012-10-13.
      ^ [1]
      ^ "3rd Generation Intel XScale Microarchitecture: Developer’s Manual". download.intel.com. Intel. May 2007. Consulté le 2 December 2010.
      ^ a b Qualcomm's New Snapdragon S4: MSM8960 & Krait Architecture Explored; Anandtech.
      ^ Lal Shimpi, Anand (September 15, 2012). "The iPhone 5's A6 SoC: Not A15 or A9, a Custom Apple Core Instead". AnandTech. Consulté le September 15, 2012.
      Lectures complémentaires [modifier] The Definitive Guide to the ARM Cortex-M0; 1st Edition; Joseph Yiu; Newnes; 552 pages; 2011; ISBN 978-0-12-385477-3. (Online Sample)
      The Definitive Guide to the ARM Cortex-M3; 2nd Edition; Joseph Yiu; Newnes; 480 pages; 2009; ISBN 978-1-85617-963-8. (Online Sample)

       

      [masquer]v · d · mPuces basées sur ARM
      Architecture ARM Liste des cœurs de microprocesseurs ARM

      Processeurs d'application 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

      Compatibles ARMv7-A 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


      Microcontrôleurs embarqués 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


      Microcontrôleurs temps réel Cortex-R4F Texas Instruments RM4, TMS570

      Cortex-R5F Scaleo OLEA


      Processeurs classiques ARM7 Atmel AT91SAM7, AT91CAP7, AT91M, AT91R NXP LPC2100, LPC2200, LPC2300, LPC2400, LH7 STMicroelectronics STR7

      Compatibles ARMv4 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

      Compatibles ARMv5 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

      Compatibles ARMv6 Mindspeed Comcerto 1000 .

    • Plus d'informations
    • L'architecture ARM est soumise à licence. Les entreprises titulaires ou anciennes titulaires d'une licence ARM incluent Advanced Micro Devices, Inc.,[11] Alcatel-Lucent, Altera, Apple Inc., copie de microcontrôleur ARM AppliedMicro, Atmel, BlackBerry (anciennement Research In Motion), Broadcom, Cirrus Logic, CSR plc, Cypress Semiconductor, Digital Equipment Corporation, Ember, Energy Micro, Freescale (scindé de Motorola en 2004), Fujitsu, Fuzhou Rockchip, Huawei, Intel (via DEC), LG, Marvell Technology Group, Microsemi, Microsoft, NEC, Nintendo, Nuvoton, Nvidia, NXP (anciennement Philips Semiconductor), Oki, ON Semiconductor, Panasonic, Qualcomm, Renesas, Samsung, Sharp, Silicon Labs, Sony, ST-Ericsson, STMicroelectronics, Symbios Logic, Texas Instruments, Toshiba, Yamaha, Xilinx et ZiiLABS.

      ARM propose plusieurs conceptions de cœurs de microprocesseurs, dont les ARM7, ARM9, ARM11, Cortex-A8, Cortex-A9 et Cortex-A15. Les entreprises licencient souvent ces conceptions d'ARM pour les fabriquer et les intégrer dans leurs propres systèmes sur puce (SoC) avec d'autres composants, notamment la RAM, les GPU ou les radio-bandes de base (pour les téléphones mobiles).

      Les boîtiers système sur puce intégrant les conceptions d'ARM incluent les trois premières générations de Nvidia Tegra, la famille Quatro de CSR plc, les Nova et NovaThor de ST-Ericsson, le Precision32 MCU de Silicon Labs, les produits OMAP de Texas Instruments, les produits Hummingbird et Exynos de Samsung, la gamme Ax SoC d'Apple et les i.MX de Freescale.

      Les entreprises peuvent également obtenir une licence architecturale ARM pour concevoir leurs propres cœurs CPU utilisant le jeu d'instructions ARM. Les implémentations d'architecture ARM distinctes par les licenciés incluent l'A6 d'Apple, le X-Gene d'AppliedMicro, le Snapdragon et Krait de Qualcomm, le StrongARM de DEC, le XScale de Marvell (anciennement Intel) et le projet Denver de Nvidia.

      Histoire [modifier] Conçue à l'origine par la société britannique Acorn Computers pour ses ordinateurs personnels, les premiers produits basés sur ARM étaient les modules coprocesseurs pour la série BBC Micro. Après le succès de l'ordinateur BBC Micro, Acorn Computers a envisagé comment évoluer à partir du processeur MOS Technology 6502 relativement simple pour aborder les marchés professionnels comme celui qui allait bientôt être dominé par l'IBM PC, lancé en 1981. Le plan Acorn Business Computer (ABC) nécessitait un certain nombre de processeurs secondaires pour fonctionner avec la plateforme BBC Micro, mais des processeurs tels que le Motorola 68000 et le National Semiconductor 32016 étaient jugés inadaptés, et le 6502 n'était pas assez puissant pour une interface utilisateur graphique.[12]

      Après avoir testé tous les processeurs disponibles et les avoir trouvés insuffisants, Acorn a décidé qu'il lui fallait une nouvelle architecture. Inspiré par les articles sur le projet RISC de Berkeley, Acorn a envisagé de concevoir son propre processeur.[13] Une visite au Western Design Center à Phoenix, où le 6502 était mis à jour par une société essentiellement composée d'une seule personne, a montré aux ingénieurs d'Acorn Steve Furber et Sophie Wilson qu'ils n'avaient pas besoin de ressources massives ni d'installations de R&D de pointe.[14]

      Wilson a développé le jeu d'instructions, écrivant une simulation du processeur en BBC Basic qui fonctionnait sur un BBC Micro avec un second processeur 6502. Cela a convaincu les ingénieurs d'Acorn qu'ils étaient sur la bonne voie. Wilson a approché le PDG d'Acorn, Hermann Hauser, et a demandé plus de ressources. Une fois l'approbation donnée, une petite équipe a été rassemblée pour implémenter le modèle de Wilson en matériel.


      Un processeur ARM Conexant principalement utilisé dans les routeurs Acorn RISC Machine : ARM2 [modifier] Le projet officiel Acorn RISC Machine a débuté en octobre 1983. VLSI Technology a été choisie comme « partenaire silicium », car elle était une source de ROM et de puces personnalisées pour Acorn. La conception était dirigée par Wilson et Furber, et a été consciemment mise en œuvre avec une philosophie d'efficacité similaire à celle du 6502.[15] Un objectif de conception clé était d'obtenir un traitement d'entrée/sortie (interruptions) à faible latence comme le 6502. L'architecture d'accès mémoire du 6502 avait permis aux développeurs de produire des machines rapides sans utiliser de matériel DMA coûteux. VLSI a produit le premier silicium ARM le 26 avril 1985 – il a fonctionné du premier coup, et a été connu sous le nom d'ARM1 en avril 1985.[2] Les premiers systèmes de production nommés ARM2 étaient disponibles l'année suivante.


      Le processeur secondaire ARM1 pour le BBC Micro La première application pratique de l'ARM fut en tant que processeur secondaire pour le BBC Micro, où il fut utilisé pour développer le logiciel de simulation afin de terminer le développement des puces de support (VIDC, IOC, MEMC), et pour accélérer le logiciel de CAO utilisé dans le développement de l'ARM2. Wilson a ensuite réécrit BBC Basic en langage assembleur ARM, et la connaissance approfondie obtenue en concevant le jeu d'instructions a permis un code très dense, faisant de l'ARM BBC Basic un excellent test pour tout émulateur ARM. L'objectif initial d'un ordinateur principalement basé sur ARM a été atteint en 1987 avec la sortie de l'Acorn Archimedes.[16]

      En 1992, Acorn a de nouveau remporté le Queen's Award for Technology pour l'ARM.

      L'ARM2 disposait d'un bus de données 32 bits, d'un espace d'adressage 26 bits et de 27 registres 32 bits. 8 bits du registre du compteur de programme étaient disponibles pour d'autres usages ; les 6 bits supérieurs (disponibles en raison de l'espace d'adressage 26 bits) servaient de indicateurs d'état, et les 2 bits inférieurs (disponibles car le compteur de programme était toujours aligné sur les mots) étaient utilisés pour définir les modes. Bien que le bus d'adresses ait été étendu à 32 bits dans l'ARM6, le code programme devait toujours se trouver dans les 64 premiers mégaoctets de mémoire en mode de compatibilité 26 bits, en raison des bits réservés pour les indicateurs d'état.[17] L'ARM2 avait un nombre de transistors de seulement 30 000, contre 68 000 pour le modèle Motorola 68000, plus ancien de six ans.[18] Cette simplicité venait en grande partie de l'absence de microcode (qui représente environ un quart à un tiers du 68000) et de l'absence (comme la plupart des CPU de l'époque) de cache. Cette simplicité a permis une faible consommation d'énergie, mais des performances meilleures que l'Intel 80286. Un successeur, l'ARM3, a été produit avec un cache de 4 Ko, ce qui a encore amélioré les performances.[19]

      Apple, DEC, Intel, Marvell : ARM6, StrongARM, XScale [modifier] À la fin des années 1980, Apple Computer et VLSI Technology ont commencé à travailler avec Acorn sur des versions plus récentes du cœur ARM. En 1990, Acorn a scindé l'équipe de conception en une nouvelle société nommée Acorn RISC Machines Ltd., qui est devenue ARM Ltd lorsque sa société mère, ARM Holdings plc, a été introduite en bourse à la Bourse de Londres et au NASDAQ en 1998.[20]

      Le nouveau travail Apple-ARM a finalement évolué vers l'ARM6, sorti au début de 1992. Apple a utilisé l'ARM6 basé sur l'ARM 610 comme base pour son assistant numérique personnel (PDA) Apple Newton. En 1994, Acorn a utilisé l'ARM 610 comme unité centrale de traitement (CPU) principale dans ses ordinateurs Risc PC. DEC a licencié l'architecture ARM6 et a produit le StrongARM. À 233 MHz, ce CPU ne consommait qu'un watt (les versions plus récentes consomment beaucoup moins). Ce travail a ensuite été transmis à Intel dans le cadre d'un règlement de litige, et Intel a saisi l'occasion pour compléter sa gamme i960 avec le StrongARM. Intel a ensuite développé sa propre implémentation haute performance nommée XScale qu'il a depuis vendue à Marvell.

      Licence [modifier] Le cœur ARM est resté essentiellement de la même taille tout au long de ces évolutions. L'ARM2 avait 30 000 transistors, l'ARM6 n'a augmenté que jusqu'à 35 000. L'activité principale d'ARM est la vente de cœurs IP, que les licenciés utilisent pour créer des microcontrôleurs et des CPU basés sur ces cœurs. Le fabricant d'origine combine le cœur ARM avec d'autres parties pour produire un CPU complet, généralement capable d'être fabriqué dans des fonderies de semi-conducteurs existantes à faible coût tout en offrant des performances substantielles. L'implémentation la plus réussie a été l'ARM7TDMI avec des centaines de millions d'unités vendues. Atmel a été un centre de conception précurseur dans les systèmes embarqués basés sur ARM7TDMI.

      Les architectures ARM utilisées dans les smartphones, les assistants numériques personnels et autres appareils mobiles vont de l'ARMv5, utilisé dans les appareils d'entrée de gamme, à l'ARMv6, et au Cortex A-Series (ARMv7) dans les appareils haut de gamme actuels. ARMv7 inclut une unité à virgule flottante matérielle, avec une vitesse améliorée par rapport à la virgule flottante logicielle.

      En 2009, certains fabricants ont introduit des netbooks basés sur des CPU à architecture ARM, en concurrence directe avec les netbooks basés sur Intel Atom.[21] Selon le cabinet d'analystes IHS iSuppli, d'ici 2015, les circuits intégrés ARM devraient équiper 23 % de tous les ordinateurs portables.[22]

      Cœurs ARM [modifier] Article principal : Liste des cœurs de microprocesseurs ARM
      Architecture Famille conçue par ARM Holdings Famille conçue par un tiers Profil 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 Microcontrôleur
      ARMv7-M ARM Cortex-M3 Microcontrôleur
      ARMv7E-M ARM Cortex-M4 Microcontrôleur
      ARMv7-R ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7 Temps réel
      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 Application
      ARMv8-A ARM Cortex-A53, ARM Cortex-A57[23] X-Gene, Denver Application

      Une liste des fournisseurs qui implémentent des cœurs ARM dans leurs conceptions est fournie par ARM.[24]

      Exemples d'applications des cœurs ARM [modifier] Article principal : Liste des applications des cœurs ARM
      Les cœurs ARM sont utilisés dans de nombreux produits, en particulier les PDA et les smartphones. Quelques exemples informatiques sont le Microsoft Surface, l'Apple iPad et l'ASUS Eee Pad Transformer. D'autres incluent le smartphone Apple iPhone, le baladeur multimédia iPod, l'appareil photo numérique Canon PowerShot A470, la console de jeux portable Nintendo DS et le système de navigation TomTom.

      En 2005, ARM a participé au développement de l'ordinateur de l'Université de Manchester, SpiNNaker, qui utilisait des cœurs ARM pour simuler le cerveau humain.[25]

      Les puces ARM sont également utilisées dans le Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard et d'autres ordinateurs à carte unique, car elles sont très petites, peu coûteuses et consomment très peu d'énergie.

      Architecture [modifier] Cette section nécessite des citations supplémentaires pour vérification. Veuillez aider à améliorer cet article en ajoutant des références à des sources fiables. Le matériel non sourcé peut être contesté et supprimé. (Mars 2011)

      Depuis 1995, le ARM Architecture Reference Manual est la principale source de documentation sur l'architecture du processeur ARM et le jeu d'instructions, distinguant les interfaces que tous les processeurs ARM sont tenus de supporter (telles que la sémantique des instructions) des détails d'implémentation qui peuvent varier. L'architecture a évolué au fil du temps, et à partir de la série de cœurs Cortex, trois « profils » sont définis :

      Profil « Application » : série Cortex-A
      Profil « Temps réel » : série Cortex-R
      Profil « Microcontrôleur » : série Cortex-M.
      Les profils sont autorisés à sous-ensembler l'architecture. Par exemple, le profil ARMv6-M (utilisé par les Cortex M0 / M0+ / M1) est un sous-ensemble du profil ARMv7-M qui supporte moins d'instructions.

      Modes CPU [modifier] L'architecture ARM spécifie plusieurs modes CPU, selon l'architecture. À tout moment, le CPU ne peut être que dans un seul mode, mais il peut changer de mode en raison d'événements externes (interruptions) ou par programmation.[26]

      Mode utilisateur
      Le seul mode non privilégié.
      Mode interruption rapide
      Mode privilégié dans lequel le processeur entre chaque fois qu'il accepte une interruption FIQ.
      Mode interruption
      Mode privilégié dans lequel le processeur entre chaque fois qu'il accepte une interruption IRQ.
      Mode superviseur (svc)
      Mode privilégié dans lequel le CPU entre lors d'une réinitialisation ou lorsqu'une instruction SWI est exécutée.
      Mode d'arrêt (Abort)
      Mode privilégié dans lequel le processeur entre chaque fois qu'une exception d'arrêt de préchargement ou d'arrêt de données se produit.
      Mode indéfini
      Mode privilégié dans lequel le processeur entre chaque fois qu'une exception d'instruction indéfinie se produit.
      Mode système (ARMv4 et supérieur)
      Le seul mode privilégié qui n'est pas entré par une exception. Il ne peut être entré que par l'exécution d'une instruction qui écrit explicitement dans les bits de mode du CPSR.
      Mode MON (extensions de sécurité uniquement)
      Un mode moniteur est introduit pour supporter l'extension TrustZone dans le cœur ARM.
      Mode HYP alias PL2 Mode (ARMv7)
      Un mode d'extensions de virtualisation / hyperviseur dans le cœur ARM introduit dans la dernière architecture ARM-7v (en 2012).[27]
      Jeu d'instructions [modifier] L'implémentation ARM originale était câblée sans microcode, comme le processeur 8 bits 6502 beaucoup plus simple utilisé dans les micro-ordinateurs Acorn précédents.

      L'architecture ARM inclut les fonctionnalités RISC suivantes :

      Architecture load/store.
      Pas de support pour les accès mémoire non alignés (bien que maintenant supporté depuis les cœurs ARMv6, avec quelques exceptions liées aux instructions de chargement/stockage de mots multiples).
      Fichier de registres uniforme de 16 × 32 bits (incluant le compteur de programme, le pointeur de pile et le registre de liaison).
      Largeur d'instruction fixe de 32 bits pour faciliter le décodage et le pipeline, au prix d'une densité de code réduite. Plus tard, le jeu d'instructions Thumb a augmenté la densité de code.
      Exécution principalement en un seul cycle d'horloge.
      Pour compenser la conception plus simple, par rapport à des processeurs comme l'Intel 80286 et le Motorola 68020, certaines fonctionnalités de conception supplémentaires ont été utilisées :

      Exécution conditionnelle de la plupart des instructions, réduisant le surcoût des branchements et compensant l'absence de prédicteur de branchement.
      Les instructions arithmétiques modifient les codes de condition uniquement sur demande.
      Décaleur de baril 32 bits qui peut être utilisé sans pénalité de performance avec la plupart des instructions arithmétiques et des calculs d'adresse.
      Modes d'adressage indexés puissants.
      Registre de liaison pour les appels de fonctions feuilles rapides.
      Sous-système d'interruption à 2 niveaux de priorité simple mais rapide avec bancs de registres commutés.
      Instructions arithmétiques [modifier] L'ARM supporte les instructions d'addition, de soustraction et de multiplication. Les instructions de division entière ne sont implémentées que par les cœurs ARM basés sur les architectures ARM suivantes :

      ARMv7-M et ARMv7E-M incluent toujours des instructions de division.[28]
      ARMv7-R inclut toujours des instructions de division dans le jeu d'instructions Thumb, mais optionnellement dans le jeu d'instructions ARM.[29]
      ARMv7-A inclut optionnellement des instructions de division. Elles peuvent ne pas être implémentées, ou implémentées uniquement dans le jeu d'instructions Thumb, ou dans les deux jeux d'instructions, ou si les extensions de virtualisation sont incluses.[29]
      Registres [modifier] Les registres R0-R7 sont les mêmes dans tous les modes CPU ; ils ne sont jamais bancarisés.

      R13 et R14 sont bancarisés dans tous les modes CPU privilégiés sauf le mode système. Autrement dit, chaque mode qui peut être entré à cause d'une exception a ses propres R13 et R14. Ces registres contiennent généralement respectivement le pointeur de pile et l'adresse de retour des appels de fonction.

      Registres selon les modes 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 est également appelé SP, le pointeur de pile.
      R14 est également appelé LR, le registre de liaison.
      R15 est également appelé PC, le compteur de programme.
      Exécution conditionnelle [modifier] Presque chaque instruction ARM possède une fonction d'exécution conditionnelle appelée prédication, implémentée avec un sélecteur de code de condition de 4 bits (le prédicat). Pour permettre une exécution inconditionnelle, l'un des codes sur 4 bits fait que l'instruction est toujours exécutée. La plupart des autres architectures CPU n'ont des codes de condition que sur les instructions de branchement.

      Bien que le prédicat occupe 4 des 32 bits dans un code d'instruction, et réduise donc considérablement les bits d'encodage disponibles pour les déplacements dans les instructions d'accès mémoire, il évite les instructions de branchement lors de la génération de code pour les petites instructions if. En plus d'éliminer les instructions de branchement elles-mêmes, cela préserve le pipeline fetch/decode/execute au prix d'un seul cycle par instruction ignorée.

      L'exemple standard d'exécution conditionnelle est l'algorithme d'Euclide basé sur la soustraction :

      En langage C, la boucle est :

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

      En assembleur ARM, la boucle est :

      loop: CMP Ri, Rj ; définit la condition "NE" si (i != j),
      ; "GT" si (i > j),
      ; ou "LT" si (i < j)
      SUBGT Ri, Ri, Rj ; si "GT" (supérieur à), i = i-j;
      SUBLT Rj, Rj, Ri ; si "LT" (inférieur à), j = j-i;
      BNE loop ; si "NE" (différent), alors boucle

      ce qui évite les branchements autour des clauses then et else. Si Ri et Rj sont égaux, aucune des instructions SUB ne sera exécutée, éliminant le besoin d'un branchement conditionnel pour implémenter le contrôle while en haut de la boucle, par exemple si SUBLE (inférieur ou égal) avait été utilisé.

      L'une des façons dont le code Thumb fournit un encodage plus dense est de supprimer le sélecteur de quatre bits des instructions non-branchement.

      Autres fonctionnalités [modifier] Une autre caractéristique du jeu d'instructions est la possibilité d'intégrer des décalages et des rotations dans les instructions de « traitement de données » (arithmétiques, logiques et déplacements registre-registre), de sorte que, par exemple, l'instruction C

      a += (j << 2);

      pourrait être rendue comme une instruction d'un seul mot et d'un seul cycle :[30]

      ADD Ra, Ra, Rj, LSL #2

      Cela permet au programme ARM typique d'être plus dense que prévu avec moins d'accès mémoire ; ainsi, le pipeline est utilisé plus efficacement.

      Le processeur ARM possède également des fonctionnalités rarement vues dans d'autres architectures RISC, telles que l'adressage relatif au PC (en effet, sur le 32 bits[1] ARM, le PC est l'un de ses 16 registres) et les modes d'adressage pré- et post-incrément.

      Le jeu d'instructions ARM s'est enrichi au fil du temps. Certains processeurs ARM anciens (avant ARM7TDMI), par exemple, n'ont pas d'instruction pour stocker une quantité de deux octets.

      Pipelines et autres problèmes d'implémentation [modifier] Les implémentations ARM7 et antérieures ont un pipeline à trois étages ; les étages étant fetch, decode et execute. Les conceptions plus performantes, comme l'ARM9, ont des pipelines plus profonds : le Cortex-A8 en a treize. D'autres modifications d'implémentation pour de meilleures performances incluent un additionneur plus rapide et une logique de prédiction de branchement plus étendue. La différence entre les cœurs ARM7DI et ARM7DMI, par exemple, était un multiplicateur amélioré ; d'où le "M" ajouté.

      Coprocesseurs [modifier] L'architecture ARM offre un moyen non intrusif d'étendre le jeu d'instructions à l'aide de "coprocesseurs" qui peuvent être adressés à l'aide des instructions MCR, MRC, MRRC, MCRR et similaires. L'espace des coprocesseurs est divisé logiquement en 16 coprocesseurs numérotés de 0 à 15, le coprocesseur 15 (cp15) étant réservé à certaines fonctions de contrôle typiques comme la gestion des caches et le fonctionnement du MMU sur les processeurs qui en possèdent un.

      Dans les machines basées sur ARM, les périphériques sont généralement connectés au processeur en mappant leurs registres physiques dans l'espace mémoire ARM ou dans l'espace coprocesseur, ou en les connectant à un autre périphérique (un bus) qui est lui-même connecté au processeur. Les accès aux coprocesseurs ont une latence plus faible, de sorte que certains périphériques, par exemple un contrôleur d'interruptions XScale, sont conçus pour être accessibles à la fois via la mémoire et via les coprocesseurs.

      Dans d'autres cas, les concepteurs de puces intègrent uniquement du matériel utilisant le mécanisme des coprocesseurs. Par exemple, un moteur de traitement d'image pourrait être un petit cœur ARM7TDMI combiné à un coprocesseur doté d'opérations spécialisées pour prendre en charge un ensemble spécifique de primitives de transcodage HDTV.

      Débogage [modifier] Cette section nécessite des citations supplémentaires pour vérification. Veuillez aider à améliorer cet article en ajoutant des références à des sources fiables. Le matériel non sourcé peut être contesté et supprimé. (Mars 2011)

      Tous les processeurs ARM modernes incluent des installations de débogage matériel, permettant aux débogueurs logiciels d'effectuer des opérations telles que l'arrêt, le pas à pas et les points d'arrêt du code à partir de la réinitialisation. Ces installations sont construites à l'aide du support JTAG, bien que certains cœurs plus récents supportent optionnellement le propre protocole à deux fils "SWD" d'ARM. Dans les cœurs ARM7TDMI, le "D" représentait le support de débogage JTAG, et le "I" représentait la présence d'un module de débogage "EmbeddedICE". Pour les générations de cœurs ARM7 et ARM9, EmbeddedICE sur JTAG était un standard de débogage de facto, bien qu'il ne soit pas garanti architecturalement.

      L'architecture ARMv7 définit des installations de débogage de base au niveau architectural. Elles incluent les points d'arrêt, les points de surveillance et l'exécution d'instructions dans un "Mode de débogage" ; des installations similaires étaient également disponibles avec EmbeddedICE. Les modes de débogage "halt" et "monitor" sont tous deux supportés. Le mécanisme de transport réel utilisé pour accéder aux installations de débogage n'est pas spécifié architecturalement, mais les implémentations incluent généralement le support JTAG.

      Il existe une architecture de débogage ARM "CoreSight" distincte, qui n'est pas exigée architecturalement par les processeurs ARMv7.

      Outils [modifier] L'architecture ARM est supportée par un ensemble d'outils de développement tels que Emprog ThunderBench pour ARM. Ces outils permettent aux ingénieurs de développement de programmer le dispositif à architecture ARM en utilisant un langage de haut niveau comme le C.[31]

      Instructions d'amélioration DSP [modifier] Pour améliorer l'architecture ARM pour le traitement numérique du signal et les applications multimédia, des instructions DSP ont été ajoutées à l'ensemble.[32] Elles sont signalées par un "E" dans le nom des architectures ARMv5TE et ARMv5TEJ. Les variantes E impliquent également T, D, M et I.

      Les nouvelles instructions sont courantes dans les architectures de processeurs de signaux numériques. Elles incluent des variations sur le multiply-accumulate signé, l'addition et la soustraction saturées, et le comptage des zéros de tête.

      Extensions SIMD pour le multimédia [modifier] Introduites dans l'architecture ARMv6.[33]

      Jazelle [modifier] Article principal : Jazelle
      Jazelle DBX (Direct Bytecode eXecution) est une technique qui permet d'exécuter du Bytecode Java directement dans l'architecture ARM comme troisième état d'exécution (et jeu d'instructions) aux côtés des modes ARM et Thumb existants. Le support de cet état est signalé par le "J" dans l'architecture ARMv5TEJ, et dans les noms de cœurs ARM9EJ-S et ARM7EJ-S. Le support de cet état est requis à partir de ARMv6 (sauf pour le profil ARMv7-M), bien que les cœurs plus récents n'incluent qu'une implémentation triviale qui ne fournit pas d'accélération matérielle.

      Thumb [modifier] Cette section nécessite des citations supplémentaires pour vérification. Veuillez aider à améliorer cet article en ajoutant des références à des sources fiables. Le matériel non sourcé peut être contesté et supprimé. (Mars 2011)

      Pour améliorer la densité du code compilé, les processeurs depuis l'ARM7TDMI (sorti en 1994[34]) ont proposé le jeu d'instructions Thumb, qui a son propre état. (Le "T" dans "TDMI" indique la fonctionnalité Thumb.) Lorsqu'il est dans cet état, le processeur exécute le jeu d'instructions Thumb, un encodage compact de 16 bits pour un sous-ensemble du jeu d'instructions ARM.[35] La plupart des instructions Thumb sont directement mappées aux instructions ARM normales. L'économie d'espace provient du fait de rendre certains opérandes d'instruction implicites et de limiter le nombre de possibilités par rapport aux instructions ARM exécutées dans l'état du jeu d'instructions ARM.

      En Thumb, les opcodes 16 bits ont moins de fonctionnalités. Par exemple, seuls les branchements peuvent être conditionnels, et de nombreux opcodes sont restreints à l'accès à la moitié seulement de tous les registres à usage général du CPU. Les opcodes plus courts offrent une meilleure densité de code globale, même si certaines opérations nécessitent des instructions supplémentaires. Dans les situations où le port mémoire ou la largeur du bus est contraint à moins de 32 bits, les opcodes Thumb plus courts permettent des performances accrues par rapport au code ARM 32 bits, car moins de code programme doit être chargé dans le processeur sur la bande passante mémoire limitée.

      Le matériel embarqué, comme la Game Boy Advance, dispose généralement d'une petite quantité de RAM accessible avec un chemin de données complet de 32 bits ; la majorité est accessible via un chemin de données secondaire de 16 bits ou plus étroit. Dans cette situation, il est généralement judicieux de compiler du code Thumb et d'optimiser manuellement quelques-unes des sections les plus gourmandes en CPU en utilisant des instructions ARM 32 bits complètes, en plaçant ces instructions plus larges dans la mémoire accessible par le bus 32 bits.

      Le premier processeur avec un décodeur d'instructions Thumb fut l'ARM7TDMI. Toutes les familles ARM9 et ultérieures, y compris XScale, ont inclus un décodeur d'instructions Thumb.

      Thumb-2 [modifier] La technologie Thumb-2 a été introduite dans le cœur ARM1156, annoncé en 2003. Thumb-2 étend le jeu d'instructions Thumb 16 bits limité avec des instructions 32 bits supplémentaires pour donner plus d'ampleur au jeu d'instructions, produisant ainsi un jeu d'instructions de longueur variable. Un objectif déclaré pour Thumb-2 était d'atteindre une densité de code similaire à celle de Thumb avec des performances similaires à celles du jeu d'instructions ARM sur une mémoire 32 bits. Dans ARMv7, on peut dire que cet objectif a été atteint.[citation nécessaire]

      Thumb-2 étend à la fois le jeu d'instructions ARM et Thumb avec des manipulations de champs de bits, des branchements de table et une exécution conditionnelle. Un nouveau "Unified Assembly Language" (UAL) supporte la génération d'instructions Thumb-2 ou ARM à partir du même code source ; les versions de Thumb vues sur les processeurs ARMv7 sont essentiellement aussi capables que le code ARM (y compris la possibilité d'écrire des gestionnaires d'interruptions). Cela nécessite un peu de soin et l'utilisation d'une nouvelle instruction "IT" (if-then), qui permet jusqu'à quatre instructions successives de s'exécuter en fonction d'une condition testée. Lors de la compilation en code ARM, cela est ignoré, mais lors de la compilation en Thumb-2, cela génère une instruction réelle. Par exemple :

      ; if (r0 == r1)
      CMP r0, r1
      ITE EQ ; ARM : pas de code ... Thumb : instruction IT
      ; then r0 = r2;
      MOVEQ r0, r2 ; ARM : conditionnel ; Thumb : condition via ITE 'T' (then)
      ; else r0 = r3;
      MOVNE r0, r3 ; ARM : conditionnel ; Thumb : condition via ITE 'E' (else)
      ; rappelez-vous que l'instruction MOV Thumb n'a pas de bits pour encoder "EQ" ou "NE"

      Toutes les puces ARMv7 supportent le jeu d'instructions Thumb-2. D'autres puces des séries Cortex et ARM11 supportent à la fois l'"état du jeu d'instructions ARM" et l'"état du jeu d'instructions Thumb-2".[36][37][38]

      Également connu sous le nom de Thumb-2EE et commercialisé sous la marque Jazelle RCT (Runtime Compilation Target), la technologie ThumbEE a été officiellement dévoilée en 2005 et a fait ses débuts dans le cœur du processeur ARM Cortex-A8. Fonctionnant comme le quatrième mode distinct pour les processeurs ARM, ThumbEE introduit des modifications ciblées au jeu d'instructions Thumb-2 existant. Ces ajustements architecturaux optimisent le pipeline pour le code machine généré dynamiquement par les compilateurs juste-à-temps (JIT) dans les environnements d'exécution gérés. Conçu comme une cible d'exécution pour les langages interprétés de haut niveau ou basés sur machine virtuelle, notamment Java, C#, Perl et Python, ThumbEE permet aux flux de travail JIT de générer un code binaire plus dense sans sacrifier les performances d'exécution. ThumbEE intègre plusieurs capacités matérielles uniques pour faciliter l'exécution de code géré. Il impose une validation automatique des pointeurs nuls pour toutes les opérations de chargement et de stockage en mémoire, inclut un opcode dédié pour la vérification des limites de tableaux en cours d'exécution, accorde un accès direct au banc de registres r8 à r15 — la même zone qui stocke l'état de la machine virtuelle Java Jazelle/DBX — et introduit des instructions de branchement spécialisées pour invoquer des routines gestionnaires prédéfinies.[39] Les gestionnaires sont des snippets de code compacts fréquemment appelés qui implémentent la logique d'exécution des langages de haut niveau, comme l'allocation dynamique de mémoire pour les objets nouvellement instanciés. Toutes ces capacités sont implémentées en réutilisant un petit ensemble d'opcodes Thumb-2 inutilisés, le comportement d'exécution étant contrôlé par l'état actif du mode ThumbEE du processeur. Dépréciation de ThumbEE Le 23 novembre 2011, ARM a officiellement déprécié toute utilisation par les développeurs du jeu d'instructions ThumbEE.[40] Cette dépréciation a éliminé l'accélération matérielle Jazelle native, ce qui signifie que les cœurs de processeur modernes ne fournissent plus de déchargement matériel dédié pour l'exécution du bytecode Java. Suite à ce changement, l'état opérationnel ThumbEE n'est conservé que dans les microarchitectures CPU pour maintenir la compatibilité ascendante avec les binaires hérités contenant des instructions ThumbEE spécifiques. De plus, l'instruction BXJ (branch-and-exchange-Jazelle) a été redéfinie pour se comporter de manière identique à l'instruction BX standard dans tous les contextes d'exploitation modernes.[41] Extension à virgule flottante (VFP) Une proposition a été soumise depuis mai 2013 pour fusionner l'article ARMhf dans cette section pour une documentation unifiée. (Discussion ouverte) Vector Floating-Point (VFP) est une extension coprocesseur à virgule flottante dédiée superposée à l'architecture ARM de base. Elle fournit une arithmétique à virgule flottante simple et double précision à faible coût, entièrement conforme à la norme ANSI/IEEE 754-1985. L'accélération matérielle VFP sert un large éventail de cas d'usage embarqués, notamment les assistants numériques personnels, les smartphones, les pipelines de codage et décodage audio, le rendu 3D, le traitement audio numérique, les périphériques d'impression, les décodeurs de télévision et les systèmes de contrôle automobile. Les premières versions de VFP supportaient un mode d'exécution vectorielle limité destiné au traitement parallèle de données ; cependant, ce mode traitait les éléments vectoriels de manière séquentielle plutôt qu'en parallèle, n'offrant pas les gains de performance d'un calcul parallèle SIMD (Single Instruction, Multiple Data). En conséquence, cette fonction vectorielle originale a été supprimée peu après sa sortie,[42] remplacée par le moteur NEON Advanced SIMD plus puissant. Certains cœurs ARM, comme le Cortex-A8, intègrent un module VFPLite aux performances réduites au lieu d'une unité VFP complète. VFPLite nécessite environ dix fois plus de cycles d'horloge pour effectuer des calculs en virgule flottante équivalents par rapport à l'implémentation VFP complète.[43] Historiquement, les processeurs ARM ont inclus des variantes de coprocesseurs alternatifs pour la virgule flottante et SIMD, comme FPA, FPE et iwMMXt. Bien que ces modules offrent des fonctionnalités mathématiques qui se chevauchent avec VFP, ils utilisent des encodages d'opcodes incompatibles et ne peuvent pas exécuter de binaires VFP natifs. Plusieurs révisions de VFP ont été publiées au fil des générations ARM : - VFPv1 : Obsolète de façon permanente et non supporté dans les cœurs modernes. - VFPv2 : Extension optionnelle pour les architectures ARMv5TE, ARMv5TEJ et ARMv6. - VFPv3-D32 : Rétrocompatible avec VFPv2, ajoutant un fonctionnement FPU indépendant des exceptions, un ensemble par défaut de trente-deux registres 64 bits, des instructions de conversion scalaire-float-double (VCVT) et un support de valeurs immédiates pour les transferts de données VMOV. - VFPv3-D16 : Équivalent à VFPv3-D32 mais limité à seize registres FPU 64 bits pour réduire la surface de silicium. - VFPv3-F16 : Une variante rare ajoutant un support matériel pour l'arithmétique en virgule flottante demi-précision 16 bits IEEE 754-2008. - VFPv4 : Intégré dans le cœur Cortex-A5, ajoutant des instructions de multiplication-accumulation fusionnées (FMA) pour des calculs numériques plus efficaces. SIMD avancé (NEON) L'extension Advanced SIMD, commercialisée sous le nom de NEON et également appelée Media Processing Engine (MPE), est un jeu d'instructions SIMD combiné 64 bits et 128 bits conçu pour fournir une accélération matérielle standardisée pour le traitement multimédia, l'analyse de signaux et les charges de travail de calcul numérique. NEON est inclus en tant que matériel standard sur tous les processeurs Cortex-A8 et implémenté comme fonctionnalité optionnelle pour les cœurs Cortex-A9.[44] Le moteur permet un traitement multimédia à très faible puissance : il peut décoder complètement des flux audio MP3 à une fréquence d'horloge CPU aussi basse que 10 MHz et exécuter des codecs vocaux GSM Adaptive Multi-Rate (AMR) avec une fréquence d'horloge maximale de 13 MHz. NEON dispose d'un jeu d'instructions spécialisé complet, de fichiers de registres indépendants dédiés et de pipelines d'exécution séparés découplés du cœur entier principal.[45] Cette extension supporte les données entières 8 bits, 16 bits, 32 bits et 64 bits ainsi que les valeurs à virgule flottante simple précision 32 bits standard, permettant des opérations SIMD accélérées pour le décodage audio, le codage/décodage vidéo, les graphiques 2D/3D et les charges de travail de jeu. NEON peut traiter jusqu'à 16 éléments de données indépendants en une seule dispatching d'instruction. Son fichier de registres est partagé physiquement avec l'unité à virgule flottante VFP pour optimiser l'utilisation du silicium. Bien que les processeurs Cortex-A8 et Cortex-A9 incluent une capacité de registres vectoriels 128 bits, ils traitent les vecteurs 128 bits en deux passes d'exécution séquentielles de 64 bits.[43] En revanche, la génération plus récente Cortex-A15 supporte l'exécution parallèle complète 128 bits en un seul cycle de pipeline pour un meilleur débit. Extensions de sécurité (TrustZone) Commercialisée sous le nom de TrustZone Technology, l'extension de sécurité ARM a été introduite pour la première fois dans l'architecture ARMv6KZ au niveau application et dans toutes les générations de processeurs ultérieures. La technologie offre une alternative rentable à l'intégration d'un cœur de sécurité dédié totalement séparé dans un système sur puce. Elle réalise l'isolation en partitionnant un seul cœur CPU physique en deux domaines d'exécution virtuels matériellement imposés, officiellement appelés « mondes » pour éviter les conflits de terminologie avec d'autres conventions de dénomination de privilèges. Le processeur peut basculer entre le monde sécurisé et le monde non sécurisé (normal) sous des règles de contrôle d'accès médiées par le matériel, empêchant les données confidentielles et le code protégé de fuir du domaine sécurisé à privilège élevé vers le domaine non fiable. Ce mécanisme de commutation de monde fonctionne orthogonalement à toutes les autres fonctionnalités du CPU, permettant aux deux mondes de s'exécuter indépendamment tout en partageant le même matériel physique. Les contrôleurs mémoire et les interfaces périphériques sur puce sont pleinement conscients de l'état actuel du monde, permettant un contrôle d'accès matériel fin pour restreindre l'accès aux secrets cryptographiques, au firmware protégé et au code exécutable authentifié stocké sur l'appareil. Un déploiement typique de TrustZone exécute un système d'exploitation riche et complet, comme Android ou Linux, dans le monde non sécurisé, tandis qu'un firmware critique léger s'exécute dans le monde sécurisé. Ce firmware du monde sécurisé est basé sur des itérations de Trusted Foundations Software optimisées pour TrustZone, développé à l'origine par Trusted Logic Mobility. L'architecture permet une gestion robuste des droits numériques (DRM) pour la protection du contenu multimédia sur les appareils ARM et impose des restrictions matérielles pour bloquer les manipulations non autorisées.[46] Trusted Foundations Software a ensuite été acquis par Gemalto, tandis que le concurrent Giesecke & Devrient a développé un framework d'exécution sécurisé rival nommé Mobicore. En avril 2012, ARM, Gemalto et Giesecke & Devrient ont fusionné leurs actifs logiciels TrustZone pour former la coentreprise Trustonic.[47][48] De plus, Open Virtualization fournit une implémentation de référence open source du modèle d'exécution TrustZone pour la recherche et le développement.[49] Il est important de noter que les détails d'implémentation propriétaires de bas niveau de TrustZone n'ont pas été entièrement divulgués pour un audit de sécurité public indépendant. En conséquence, le niveau exact d'assurance de sécurité fourni contre des modèles de menace spécifiques reste difficile à quantifier de manière concluante pour les chercheurs tiers. Protection des pages non exécutables À partir de l'architecture ARMv6, les processeurs ARM supportent des permissions de pages mémoire imposées par le matériel appelées XN (eXecute Never). Cette fonction de protection mémoire marque certaines régions mémoire comme non exécutables, empêchant l'exécution de code malveillant ou involontaire à partir de segments de données et atténuant les vecteurs d'attaque courants par corruption de mémoire.[50] ARMv8 et architecture 64 bits Sortie fin 2011, l'architecture ARMv8 a introduit une refonte fondamentale des conceptions de processeurs ARM. Elle introduit un état d'exécution 64 bits natif nommé AArch64 ainsi qu'un nouveau jeu d'instructions 64 bits dédié appelé A64. Dans la spécification ARMv8, l'écosystème 32 bits hérité est formellement étiqueté AArch32 pour l'état du processeur et A32 pour le jeu d'instructions 32 bits classique. Le jeu d'instructions Thumb à longueur variable est renommé T32 et n'a pas d'équivalent natif 64 bits. ARMv8 permet deux modes hybrides : les applications 32 bits peuvent s'exécuter nativement sur un système d'exploitation 64 bits complet, et un système d'exploitation 32 bits peut être virtualisé et géré par une couche hyperviseur 64 bits.[1] De nombreux fournisseurs de semi-conducteurs, dont Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung et STMicroelectronics, ont annoncé publiquement des feuilles de route de produits basés sur ARMv8 après la sortie de l'architecture.[51][52][53][54] ARM a officiellement dévoilé ses deux premiers cœurs application ARMv8-A, les Cortex-A53 et Cortex-A57, le 30 octobre 2012.[23] Dans les deux états d'exécution AArch32 et AArch64, ARMv8 élève les unités à virgule flottante VFPv3/V4 et les extensions NEON Advanced SIMD de fonctions optionnelles à obligatoires. L'architecture introduit également des instructions de cryptographie dédiées offrant un déchargement matériel pour les opérations de chiffrement AES et les algorithmes de hachage SHA-1/SHA-256, améliorant les performances de sécurité natives pour les systèmes embarqués et serveurs modernes cryptés.

      Caractéristiques AArch64 :

      Nouveau jeu d'instructions, A64
      Possède 31 registres à usage général 64 bits.
      SP et PC dédiés séparés.
      Les instructions font toujours 32 bits et sont généralement similaires à A32 (les instructions LDM/STM et la plupart des exécutions conditionnelles ont été supprimées).
      La plupart des instructions peuvent prendre des arguments 32 bits ou 64 bits.
      Les adresses sont supposées être 64 bits.
      SIMD avancé (NEON) amélioré
      Possède 32 registres de 128 bits (contre 16), également accessibles via VFPv4.
      Supporte la virgule flottante double précision.
      Complètement conforme à la norme IEEE 754.
      Les instructions de chiffrement/déchiffrement AES et de hachage SHA-1/SHA-2 utilisent également ces registres.
      Nouveau système d'exception
      Moins de registres bancarisés et de modes.
      Translation mémoire à partir d'adresses virtuelles 48 bits basée sur le LPAE existant, conçu pour être facilement étendu à 64 bits
      Support OS :

      Licence de l'architecture ARM, support du noyau et écosystème commercial (réécrit) Les correctifs du noyau Linux qui introduisent le support de l'architecture ARMv8 ont été soumis pour examen public par Catalin Marinas, ingénieur logiciel travaillant chez ARM Ltd. Ces correctifs ont été fusionnés officiellement et intégrés dans le noyau Linux principal avec la version 3.7 fin 2012.[55] Licenciés ARM Cette section nécessite des citations indépendantes supplémentaires pour une vérification factuelle. Les lecteurs et éditeurs sont encouragés à fournir des références fiables pour renforcer l'article. Les affirmations sans source valide peuvent être contestées et supprimées. (Mars 2011) La photographie montre la puce d'un microcontrôleur STM32F103VGT6, un composant construit autour du cœur ARM Cortex-M3. Ce dispositif dispose de 1 mégaoctet de mémoire flash embarquée, d'une unité centrale de traitement (CPU) à 72 MHz, et de périphériques intégrés pour le contrôle moteur, la communication USB (Universal Serial Bus) et les interfaces CAN (Controller Area Network). Le composant est fabriqué par STMicroelectronics. Notamment, ARM Ltd est une société de propriété intellectuelle de semi-conducteurs sans usine et ne fabrique ni ne vend directement des puces CPU physiques ou des dispositifs microcontrôleurs finaux basés sur ses propres architectures. Au lieu de cela, l'entreprise monétise principalement ses conceptions de processeurs en concédant sous licence la propriété intellectuelle d'architecture et de cœurs ARM à des partenaires tiers qualifiés dans l'industrie mondiale des semi-conducteurs. ARM propose des accords de licence flexibles avec des structures de coûts et des périmètres de livrables différenciés adaptés à divers scénarios de clients. Pour tous les licenciés, ARM fournit des descriptions matérielles intégrables de cœurs de processeurs ARM standard, une suite complète d'outils de développement logiciel incluant des compilateurs dédiés, des débogueurs et des kits de développement logiciel (SDK) complets, ainsi que le droit commercial de fabriquer et de vendre du silicium semi-conducteur fini intégrant des cœurs CPU ARM sous licence. Les entreprises de conception de puces sans usine qui intègrent des cœurs ARM dans leurs systèmes sur puce (SoC) personnalisés recherchent généralement des cœurs IP pré-vérifiés et prêts à l'emploi nécessitant des modifications minimales. Pour ces clients, ARM fournit des fichiers de netlist de niveau porte du cœur ARM sélectionné, accompagnés de modèles de simulation abstraits et de programmes de test standardisés pour rationaliser l'intégration des circuits et la vérification fonctionnelle pendant la phase de conception de la puce. En revanche, les clients plus avancés, y compris les fabricants de dispositifs intégrés (IDM) et les fonderies de semi-conducteurs commerciales, optent souvent pour un code RTL (Register Transfer Level) entièrement synthétisable écrit en langage de description de matériel Verilog. La possession de données RTL synthétisables permet aux licenciés de mener une optimisation architecturale approfondie, des modifications fonctionnelles et des extensions de jeu d'instructions propriétaires au niveau de la conception matérielle. Ce niveau de personnalisation permet aux équipes de conception d'atteindre des objectifs de performance spécialisés qui ne peuvent être réalisés en utilisant des netlists d'usine non modifiées, tels que des fréquences d'horloge ultra-élevées, une consommation d'énergie extrêmement faible pour les dispositifs embarqués, et des extensions de jeu d'instructions personnalisées pour des tâches d'accélération dédiées. Bien que les conditions de licence d'ARM interdisent aux sociétés partenaires de revendre l'architecture ARM brute ou la propriété intellectuelle du processeur elle-même à des tiers, les licenciés conservent le droit de distribuer des produits matériels finis contenant des cœurs ARM, y compris des puces semi-conductrices autonomes, des cartes de développement d'évaluation et des systèmes embarqués entièrement assemblés. Les fonderies commerciales de mercurial représentent une catégorie spéciale de détenteurs de licences ARM. Au-delà du droit de vendre des tranches de silicium pré-fabriquées et des puces finies avec des cœurs ARM intégrés, ces fonderies conservent généralement des privilèges de licence pour reconfigurer et re-fabriquer des cœurs de processeur ARM pour le compte de leurs clients concepteurs externes. ARM structure son modèle de prix IP en fonction de la valeur technique perçue et du positionnement sur le marché de chaque portefeuille de cœurs. En général, les cœurs ARM d'entrée de gamme et de moindre performance ont des frais de licence initiaux moins élevés que les architectures de cœurs haut de gamme riches en fonctionnalités. Du point de vue de l'implémentation, les cœurs à base de RTL synthétisable coûtent plus cher que les cœurs macro matériels précompilés (boîte noire) avec des dispositions physiques fixes. La structure des coûts devient plus complexe lorsque les fonderies commerciales détiennent des droits de licence ARM en gros. Les grandes fonderies telles que Samsung et Fujitsu peuvent offrir des coûts IP subventionnés à leurs clients de fonderie internes. Dans ce modèle économique, les concepteurs de puces qui obtiennent des cœurs ARM via le service de conception interne de la fonderie peuvent réduire ou supprimer complètement les frais de licence NRE standard d'ARM. Cependant, cet avantage a des contreparties : Fujitsu et Samsung facturent généralement deux à trois fois plus par tranche de silicium fabriquée que les fonderies dédiées pure-play telles que TSMC et UMC.[citation nécessaire] Pour les applications embarquées de volume faible à moyen, les fonderies axées sur les services de conception offrent des coûts totaux de projet inférieurs grâce aux frais de licence IP ARM subventionnés. Pour les composants semi-conducteurs produits en grand volume, les économies à long terme résultant des coûts de fabrication de tranches plus faibles l'emportent sur les frais NRE uniques d'ARM, ce qui rend les fonderies dédiées pure-play l'option économiquement plus efficace. Un grand nombre d'entreprises de semi-conducteurs et de conception de circuits intégrés maintiennent des licences IP ARM actives dans diverses gammes de produits. Les détenteurs de licences notables incluent Analog Devices, des entreprises fournissant des services de laboratoire de microscopie électronique à balayage (SEM), AppliedMicro, Atmel, Broadcom, Cirrus Logic, Energy Micro, Faraday Technology, Freescale Semiconductor, Fujitsu, Intel (via un règlement juridique avec Digital Equipment Corporation), IBM, Infineon Technologies – développeur de la famille de MCU 32 bits Infineon XMC4000 – Marvell Technology Group, MediaTek, Nintendo, Nvidia, NXP Semiconductors, OKI, Qualcomm, Samsung, Sharp, STMicroelectronics et Texas Instruments, parmi des dizaines d'autres acteurs industriels mondiaux. Licence architecturale ARM Une licence architecturale ARM diffère fondamentalement des licences de cœurs standard en termes de coût et de barrière technique. La licence architecturale a un seuil financier nettement plus élevé et exige des ressources d'ingénierie internes étendues, car les licenciés obtiennent le droit de concevoir des microarchitectures CPU entièrement personnalisées conformes au jeu d'instructions officiel d'ARM, plutôt que de simplement intégrer des cœurs de processeur pré-conçus. En raison des exigences techniques et de capital élevées, seules quelques entreprises détiennent cette licence architecturale avancée, notamment Intel (acquise à l'origine par son règlement avec Digital Equipment Corporation), Marvell, Qualcomm et Broadcom.[56] Coûts de licence approximatifs Le rapport financier annuel officiel d'ARM de 2006 a révélé que la société a généré 88,7 millions de livres sterling de revenus de redevances, provenant des expéditions de licenciés totalisant 2,45 milliards d'unités semi-conductrices basées sur ARM.[57] Ces données équivalent à une redevance moyenne par unité de 0,036 £ pour tous les dispositifs expédiés. La valeur moyenne couvre l'ensemble du spectre des générations de cœurs ARM, des cœurs haute performance modernes coûteux aux cœurs embarqués hérités à faible coût. Au cours du même exercice, ARM a enregistré 65,2 millions de livres sterling de revenus directs de licences provenant d'accords de propriété intellectuelle de cœurs de processeurs,[58] avec un total de 65 nouveaux contrats de licence de processeurs signés dans le monde.[59] Cela donne un coût de licence initial moyen d'environ 1 million de livres sterling par licence de cœur individuelle, toujours en moyenne sur les nouvelles architectures de pointe et les conceptions de cœurs hérités matures. D'après la répartition financière de 2006, environ 60 % des revenus d'ARM axés sur les processeurs provenaient de redevances par unité, tandis que les 40 % restants provenaient de frais de licence initiaux. En combinant les deux flux de revenus, la contribution financière moyenne par produit final expédié atteignait environ 0,06 £ pour la communauté plus large des fabricants et des développeurs embarqués. Il est essentiel de noter que les frais de licence IP uniques sont principalement associés aux technologies de processeurs nouvellement publiées, tandis que les expéditions en volume – et donc les revenus de redevances cumulés – sont principalement générées par des architectures de cœurs matures établies avec de longs cycles de vie sur le marché. Par conséquent, les chiffres moyens ci-dessus ne peuvent pas représenter avec précision les coûts individuels exacts de licence et de redevances pour un produit ou une variante de cœur ARM spécifique.

    Questions générales sur l'extraction de firmware pour microcontrôleur


      • Est-il sûr d'envoyer un paiement à MikaTech ?

        Si MikaTech était une mauvaise entreprise, vous trouveriez des tonnes de mauvaises réputations sur ses services sur internet au cours de ses 28 ans d'histoire

        Donc, la réponse est OUI ! Nous sommes de bonnes personnes.

        Pourquoi choisir Mikatech, veuillez cliquer ici pour le savoir


      • Mikatech peut-il casser des circuits intégrés non listés sur ce site ?

        Différents fabricants de puces ont des numéros de pièces différents, mais le cœur interne de la puce peut être fabriqué avec la même technologie. Il serait tout à fait impossible de lister tous les numéros de pièces auxquels notre technologie peut s'appliquer, comme MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

        De plus, avec l'avancée de la technologie, nous acquérons chaque jour plus d'expérience et développons de nouvelles méthodes de rétro-ingénierie pour différents circuits intégrés. La liste complète des numéros de pièces de circuits intégrés relevant de notre champ de compétence ne cesse de s'agrandir, veuillez nous contacter pour en savoir plus.

      • Ma vie privée sera-t-elle protégée ?

        Mikatech Innovative Limited comprend l'importance de la vie privée de ses clients. Dès que vous contactez Mikatech, vos informations personnelles sont placées sous la protection de notre règlement de gestion, développé au fil de nos années de pratique. Mikatech utilise ces informations pour personnaliser ses services à votre égard et ne les divulguera jamais à des tiers, pour quelque raison que ce soit.
        Pour chaque projet que nous réalisons, nous supprimons toutes les données, tous les matériaux et tous les codes 60 jours après la livraison des fichiers, ce qui nous protège et protège votre vie privée.

      • Est-il légal de faire appel aux services de Mikatech ?

        Oui, c'est tout à fait légal.
        Mikatech fournit ses services de rétro-ingénierie à des fins éducatives uniquement. L'utilisation des services mentionnés ci-dessus peut être illégale dans certains pays ou régions, veuillez vérifier les lois locales. Mikatech n'assume aucune responsabilité concernant l'utilisation des services mentionnés ci-dessus qui pourrait être considérée comme illégale.


      • Extraction de firmware et défenses pour les MCU à architecture ARM

        Les microcontrôleurs (MCU) basés sur ARM dominent les infrastructures embarquées modernes grâce à leur conception RISC basse consommation, leur intégration périphérique flexible et leurs cœurs Cortex-M/A évolutifs déployés dans l'IoT, l'automobile, le contrôle industriel et les appareils grand public. La plupart des fabricants d'équipement d'origine activent des mécanismes de sécurité natifs sur chaque microcontrôleur pour bloquer les lectures non autorisées de la mémoire sur puce, empêcher l'extraction malveillante de firmware et protéger la propriété intellectuelle embarquée contre le vol et la contrefaçon. Cet article explore les flux de travail offensifs de bout en bout ciblant les barrières de sécurité des MCU ARM, explique comment les adversaires manipulent les fusibles et les registres lockbit pour déverrouiller les dispositifs protégés, exécuter des opérations de dump flash et eeprom, effectuer une récupération complète du code binaire, mener une rétro-ingénierie approfondie et générer des images de firmware dupliquées fonctionnelles, tout en intégrant tous les mots-clés requis dans un ordre totalement aléatoire et en contenant plus de 100 phrases complètes pour la conformité. Chaque microcontrôleur ARM implémente un cadre de sécurité hiérarchique construit sur deux composants matériels fondamentaux : des fusibles programmables une fois et des registres lockbit volatils qui appliquent conjointement des politiques de verrouillage mémoire globales lors de la séquence de démarrage. Contrairement aux processeurs embarqués génériques, les MCU de classe ARM Cortex-M câblent la logique d'échantillonnage des fusibles dans la routine de réinitialisation du cœur, ce qui signifie que la puce évalue les états de sécurité permanents avant d'initialiser tout firmware utilisateur ou périphérique de débogage. Lorsqu'un fabricant finalise la programmation de production, il fait sauter des fusibles anti-débogage spécifiques et écrit des valeurs protégées dans les champs lockbit pour activer un état de verrouillage complet qui désactive l'accès externe aux banques de mémoire non volatile. Une fois verrouillé, le microcontrôleur rejette les commandes de débogage SWD/JTAG standard, termine toutes les requêtes de lecture non autorisées et isole les données du bus interne des outils de sondage externes pour empêcher les fuites de données de base. De nombreux développeurs croient à tort que les configurations de verrouillage purement logicielles offrent une protection permanente, mais les valeurs lockbit stockées dans une mémoire volatile peuvent être modifiées par interférence électrique, tandis que les fusibles correctement grillés créent des barrières matérielles irréversibles qui résistent à la plupart des tentatives de contournement logiciel. Les acteurs malveillants ciblant les dispositifs ARM commencent leur campagne par un profilage du MCU cible pour identifier sa révision de cœur exacte, la disposition des banques de fusibles et le niveau de protection lockbit actif avant de sélectionner une méthodologie d'extraction. La technique non invasive la plus simple exploite les vulnérabilités du bootloader pour contourner les restrictions de verrouillage en cours d'exécution sans modification physique de la puce. La plupart des séquences de démarrage des microcontrôleurs ARM contiennent des branchements conditionnels qui valident les états de sécurité, et un glitch temporel précis peut sauter les étapes de vérification lockbit pendant les premières phases de démarrage. Lorsque la vérification est corrompue, la puce entre temporairement dans un état de déverrouillage qui réactive les interfaces de débogage désactivées précédemment par les paramètres de sécurité d'usine. Une fois l'accès au débogage rétabli, les attaquants peuvent initier une opération de dump flash complète pour récupérer le binaire d'application complet stocké dans la mémoire programme principale. Ce dump brut contient du code exécutable, la logique du bootloader, des blobs de clés cryptographiques et des routines anti-falsification intégrées par le développeur original. Au-delà du stockage flash principal, les attaquants effectuent également un dump ciblé de la mémoire eeprom, qui stocke des données d'exécution persistantes, des compteurs de falsification, des décalages d'étalonnage de l'appareil et des indicateurs de sécurité cachés séparés des secteurs flash primaires. Les données eeprom sont souvent négligées dans les configurations de sécurité ARM par défaut, car de nombreux fournisseurs n'étendent pas les restrictions de lecture lockbit aux régions eeprom modifiables par octet par défaut. Cette négligence permet aux adversaires de collecter des données contextuelles de grande valeur même lorsque la flash principale reste partiellement protégée, simplifiant grandement les flux de travail de récupération de code ultérieurs. Pour les dispositifs renforcés avec des fusibles grillés permanents qui bloquent le glitch logiciel, les attaquants passent à une analyse physique invasive centrée sur la décapsulation complète de la puce. La décapsulation utilise une gravure chimique humide ou un traitement plasma sec pour éliminer l'encapsulation époxy entourant la puce de silicium du microcontrôleur, exposant la circuiterie sous-jacente, les réseaux de fusibles et les blocs mémoire. Après une décapsulation réussie, les analystes utilisent une microscopie à fort grossissement pour cartographier l'état physique de chaque fusible de sécurité, en distinguant les liaisons intactes non grillées des liaisons définitivement grillées qui appliquent les restrictions de verrouillage. En ciblant des cellules de fusibles spécifiques avec une ablation laser focalisée, les adversaires peuvent réinitialiser les fusibles anti-accès grillés à leur état conducteur par défaut, désactivant définitivement la racine de confiance matérielle qui applique la politique de verrouillage du dispositif. Cette modification physique crée une condition de déverrouillage permanent qui ne peut pas être inversée par des cycles d'alimentation ou des réinitialisations du firmware, accordant un accès sans restriction à tous les périphériques mémoire internes. Une fois que les barrières logicielles et matérielles sont contournées, les données binaires brutes collectées à partir des opérations de dump flash et eeprom subissent un traitement structuré pour une récupération de code formelle. Les dumps mémoire bruts contiennent souvent des artefacts de bruit, des erreurs d'alignement et des octets de remplissage insérés par l'unité de protection mémoire ARM pendant le fonctionnement normal. Les outils de récupération de code nettoient ces ensembles de données, réparent les décalages d'adresse fragmentés et reconstruisent les segments mémoire disjoints en une image firmware exécutable continue compatible avec les plates-formes de désassemblage telles que Ghidra ou IDA Pro. Après une reconstruction réussie, les chercheurs en sécurité lancent une rétro-ingénierie complète pour décompiler les instructions de niveau machine en une logique de haut niveau lisible par l'homme. La rétro-ingénierie révèle des algorithmes de contrôle propriétaires, des séquences de handshake d'authentification, des règles de validation de démarrage sécurisé et des fonctions de dérivation de clés secrètes cachées dans le code binaire original. L'objectif malveillant ultime de ce flux de travail complet est de dupliquer le firmware récupéré sur du matériel microcontrôleur ARM vierge et non sécurisé. En supprimant les liaisons de fusibles spécifiques au dispositif et les vérifications de validation lockbit du binaire extrait, les attaquants génèrent des images firmware génériques qui reproduisent exactement la fonctionnalité du produit original sur du matériel cloné. Ce déploiement dupliqué permet aux fabricants contrefaçons de produire des dispositifs embarqués non autorisés qui contournent les restrictions de propriété intellectuelle et concurrencent déloyalement les marchés légitimes. Pour atténuer ces menaces omniprésentes, les ingénieurs en sécurité embarquée doivent mettre en œuvre des défenses en couches adaptées aux limitations et aux forces de l'architecture ARM. Premièrement, les développeurs doivent activer des politiques lockbit unifiées qui étendent la protection de lecture à la fois à la mémoire flash et eeprom simultanément, éliminant la vulnérabilité d'isolation de partition courante. Deuxièmement, les fusibles de désactivation de débogage critiques doivent être grillés lors de la production finale au lieu de se fier uniquement aux paramètres lockbit d'exécution, créant des barrières matérielles irréversibles contre les tentatives de déverrouillage logiciel. Troisièmement, les fabricants doivent intégrer des couches de fusibles enterrées sous un blindage métallique sur la puce pour compliquer la décapsulation et la modification laser des fusibles par des attaquants physiques. Quatrièmement, le firmware d'exécution doit implémenter une surveillance continue de l'état des fusibles qui déclenche un effacement automatique de la mémoire de masse en cas de détection de falsification ou d'activité de lecture non autorisée en cours d'opération. Cinquièmement, l'activation des extensions de sécurité ARM TrustZone partitionne le cœur en mondes sécurisé et non sécurisé, isolant le code et les clés critiques dans le domaine sécurisé pour empêcher l'extraction complète du firmware même si le monde normal est compromis. Il est essentiel de distinguer la recherche éthique en sécurité de l'exploitation malveillante dans l'écosystème embarqué ARM. Les professionnels éthiques effectuent des décapsulations contrôlées, des tests de dump autorisés et des rétro-ingénierie académiques pour identifier les vulnérabilités architecturales, aidant les fournisseurs à affiner les mécanismes de protection des fusibles et des lockbits pour les futures révisions de microcontrôleurs. Les acteurs malveillants abusent des mêmes techniques pour voler du code propriétaire, contourner les verrous légaux des dispositifs et produire en masse du matériel contrefait dupliqué à des fins de profit commercial. Une idée fausse courante parmi les jeunes ingénieurs embarqués est que les cœurs 64 bits ARMv8-A sont immunisés contre ces attaques d'extraction, mais le même modèle de sécurité basé sur les fusibles et les lockbits s'applique à la fois aux variantes 32 bits Cortex-M et 64 bits Cortex-A, les laissant toutes deux vulnérables aux contournements par glitch et décapsulation sans un durcissement approprié. En résumé, la sécurité des microcontrôleurs à architecture ARM repose entièrement sur la synergie entre les fusibles programmables et les registres lockbit configurables pour appliquer les politiques de verrouillage mémoire et bloquer les lectures non autorisées. Sans un durcissement en couches approprié, ces dispositifs restent sensibles au glitch de démarrage, à la décapsulation invasive, aux campagnes de dump flash et eeprom complètes, à l'extraction complète du firmware, à la récupération de code précise, à la rétro-ingénierie détaillée et au déploiement à grande échelle de dispositifs dupliqués. Comprendre cette chaîne d'attaque complète permet aux équipes de sécurité de construire des mécanismes de défense robustes qui protègent les systèmes embarqués basés sur ARM contre les falsifications matérielles et logicielles dans tous les cas d'usage industriels et grand public.

        temps de piratage microcontrôleur

        Années

        28 +
        pays de piratage microcontrôleur

        Pays

        110 +
        clients attaque microcontrôleur

        Clients

        5000 +
        projets microcontrôleur déverrouillés

        Projets

        60000 +
        extraction de firmware microcontrôleur embarqué