Académique Documents
Professionnel Documents
Culture Documents
En 1990 apparait une nouvelle société nommée ARM qui signifie désormais Advanced RISC
Machine limited ARM Ltd, se positionnant avec une offre indépendante pour le
marché de l'électronique embarquée.
Une particularité des processeurs ARM est leur mode de vente. En effet, ARM Ltd
ne fabrique ni ne vend ses processeurs sous forme de circuits intégrés. La société
vend les licences de ses processeurs de manière qu'ils soient gravés dans le silicium
par d'autres fabricants. Aujourd'hui, la plupart des grands fondeurs de puces
proposent de l'architecture ARM.
Les architectures ARM sont des architectures de type RISC 32 bits (ARMv1 à ARMv7) et
64 bits (ARMv8) développées par ARM Ltd spécialisée dans le développement de
processeurs d'architecture 32 bits et d'architecture 64 bits de type RISC.
Dotés d'une architecture relativement plus simple que d'autres familles de processeurs
et de faibles consommateurs d'électricité, les processeurs ARM sont aujourd'hui
dominants dans le domaine de l'informatique embarquée, en particulier par la
téléphonie mobile et les tablettes.
Ces processeurs sont fabriqués sous licence par un grand nombre de constructeurs, qui
ajoutent leur propre propriété intellectuelle (IP) à la propriété intellectuelle d'ARM.
Aujourd'hui, ARM est surtout connu pour ses systèmes sur une puce (SoC), intégrant
sur une seule puce : microprocesseur, processeur graphique (GPU), DSP, FPU, SIMD,
et contrôleur de périphériques. Ils sont présents dans la majorité des smartphones et
des tablettes.
ARM propose ainsi pour les SoC les plus récents les microprocesseurs Cortex de la
famille
Cortex-A (Application): Processeur à Architecture ARMv7-A, SIMD, Jazelle,
DSP, Thumb-2, pour les dispositifs portables de type smartphones et tablettes,
Cortex-M (Microcontrôleur): Processeur embarqué à Architecture ARMv6-M,
ARMv7-M et ARMv8-M, pour le couplage à un microcontrôleur,
Cortex-R (Real time): Processeur temps-réel à Architecture ARMv7-R et
ARMv8-R, pour les microprocesseurs temps réel,
Certains constructeurs, tels que Nvidia, préfèrent produire leur propre processeur
graphique, d'autres, comme Samsung, préfèrent prendre dans certains cas un
processeur graphique de prestataire tiers ou d'ARM selon les modèles, et d'autres,
comme Apple, modifient certains composants du microprocesseur en mélangeant
plusieurs architectures processeur ARM (l'Apple A6 par exemple, mixe les technologies
de microprocesseur Cortex-A9 et Cortex-A15).
Historique
Le projet Acorn Risk Machine démarre en 1983 avec le partenaire VLSI Technology – fondeur
des prototypes ARM.
L'ARM1 (1985) était le premier prototype de processeur ARM avec architecture RISC.
L' ARM2 (1986) a été le premier processeur en production. Il ne comprenait que 30 000
transistors. Il comportait un pipeline à 3 étages. Perfomance : 4 MIPSs@8Mhz
L'ARM3 était une version améliorée de l'ARM2 avec une mémoire cache.
L’ARM 6 (1992) conçu à la demande d'Apple , n'avait que 35 000 transistors. Performance :
17MIPS@20MHz
Le cœur le plus célèbre est l’ARM7TDMI qui comporte un pipeline à 3 étages. De plus,
le ARM7TDMI dispose d'un second jeu d'instructions appelé THUMB permettant le
codage d'instructions sur 16 bits afin de réaliser une importante économie de mémoire,
notamment pour les applications embarquées.
ARM Ltd. a ensuite développé le cœur ARM9 qui comporte un pipeline à 5 étages. Cela
permet ainsi l'augmentation du nombre d'opérations logiques sur chaque cycle d'horloge
et donc une amélioration des performances en vitesse.
Architectures ARM
La gamme ARM-M
M0: Alternative pour les processeurs 8 bits, processeur 32
bits très basse consommation.
M1: Implémentés dans des processeurs FPGA
M3: Haute performance à basse consommation
M4: Processeur avec fonction DSP, optimisation
mathématiques et virgule flottante simple précision.
M7: Processeur très haute performance
• Une unité de protection de mémoires (MPU: Memory Protection Unit) qui permet de
déterminer des droits d’accès des applications à des zones mémoires définies. Cette unité
est optionnelle et n’est pas disponible dans tous les processeurs Cortex-M3.
L'architecture ARM est fortement inspirée des principes de conception RISC. Elle dispose
de 16 registres généraux de 32 bits. Les instructions, codées sur 32 bits jusqu'à l'ARMv7
peuvent toutes disposer d'exécution conditionnelle ; sur l'architecture 64 bits (ARMv8),
quelques instructions seulement peuvent disposer d'exécution conditionnelle.
Le jeu d'instructions a reçu des extensions au fil du temps, telles que Thumb, permettant
d'améliorer la densité du code, NEON, apportant des instructions SIMD, ou Jazelle,
améliorant l'exécution de code Java.
Jazelle
Jazelle DBX (Direct Bytecode eXecution) est une technique permettant d'exécuter
directement du bytecode Java dans les architectures ARM comme un troisième état
d'exécution (et jeu d'exécution), en parallèle à l'ARM existant et au mode Thumb. Le
support pour cet état est signalé par le « J » de l'architecture ARMv5TEJ et les noms
de cœurs ARM9EJ-S et ARM7EJ-S. Le support de cet état est requis à partir d'ARMv6
(sauf pour le profil ARMv7-M). Malgré tout, les cœurs plus récents incluent
seulement une implémentation triviale qui ne fournit pas d'accélération matérielle.
Thumb
Thumb est un jeu d'instructions 16 bits qui fournit un sous-ensemble des instructions ARM
32 bits classiques et permet un gain de mémoire important. Pour obtenir un codage plus
compact de ces instructions, certains opérandes sont implicites et les possibilités offertes
sont plus limitées.
Dans le mode Thumb, les instructions 16 bits offrent moins de possibilités. Seuls les
branchements peuvent être conditionnels et plusieurs instructions sont limitées en accès à
une partie réduite des registres généraux du processeur. Ces possibilités réduites
améliorent la densité globale d'un programme, bien que certaines opérations nécessitent
plus d'instructions. Cela peut réduire le temps de chargement du code en mémoire
(libérant ainsi de la bande passante) et augmenter la probabilité de rester dans le cache
d'instruction, augmentant ainsi considérablement les performances.
La technologie Thumb-2 commence avec le cœur ARM1156 annoncé en 2003. Thumb-2 étend le
jeu d'instructions limité 16 bits de Thumb par des instructions 32 bits additionnelles afin de
donner plus de largesse au jeu d'instruction. Il en résulte un jeu d'instructions de largeur
variable. Thumb-2 a pour visée d'atteindre une densité de code proche de Thumb tout en
conservant des performances similaires au jeu d'instructions ARM en mémoire 32 bits.
Thumb-2 étend à la fois le jeu instructions Thumb et celui d'ARM avec notamment de la
manipulation de champs de bits, des exécutions conditionnelles et des tables de branchement.
Introduction à la famille STM32
La famille STM32 est une série de microcontrôleurs 32-bits en circuits intégrés
réalisés par la société STMicroelectronics.
Les puces STM32 sont regroupées dans différentes séries, basées sur les
processeurs d'architecture ARM 32-bits, tels que le Cortex-M7F, leCortex-M4F,
le Cortex-M3, Cortex-M0+, ou le Cortex-M0.
Chaque microcontrôleur est constitué d'un cœur de calcul, de mémoire vive (RAM)
statique, de mémoire flash (pour le stockage), d'une interface de débogage et de
différents périphériques.
Nucléo
Les cartes Stm32 Nucleo, supportent une compatibilité avec les cartes Arduino,
bien que basées sur des microcontrôleurs ARM Cortex-M (32 bits) et non Atmel
AVR (8 bits) comme utilisés dans les cartes Arduino standard. Il ajoute ainsi à
Arduino de bonnes performances graphiques en y ajoutant l'accélérateur
graphique Chrom-ART (fourni avec une bibliothèque open source)
Audio
Les STM32 F4 et supérieurs possédants un DSP, ils sont adaptés également à
l'usage pour le son. La carte synthétiseur Axoloti est un exemple d'application
dans le domaine du son.
Le logiciel de synthétiseur analogique libre, Mozzi pour Arduino peut être utilisé
directement sur les STM32.
Séries:
Série F0 basée sur l'ARM Cortex-M0 et peut monter jusqu'à une fréquence de 48 Mhz.
Série F1 première à utiliser le cœur ARM Cortex-M3, la fréquence du CPU peut aller de 24 à
72 MHz. C'est un des plus gros succès de la marque dans ce domaine.
Série F3 dont le cœur est un ARM Cortex-M4F pouvant monter jusqu'à 72 MHz
Série F2
Série F4
Série F7
Série H7
Architecture du microcontrôleur STM32F4xx
Conclusion:
Dans beaucoup de cas, des routines peuvent être transférées d’un microprocesseur à l’autre,
sans impliquer une connaissance intime des instructions supportées par le microprocesseur ou
sans connaître le nombre de registres disponibles.
La programmation en assembleur de logiciel embarqué est très rare de nos jours. Écrire du
code en assembleur est complexe, laborieux et le code n’est pas portable ! D’un autre côté, de
très bons compilateurs sont habituellement disponibles sur le marché...
Pour ces raisons, dans tout ce qui va suivre, nous décrirons l’architecture d’un
microcontrôleur donné, la structure de sa mémoire et sa gestion des interruptions et des
timers. Cela donne également un exemple d’architecture de microprocesseur qui
permettra à l’étudiant d’extrapoler pour d’autres architectures.