0% ont trouvé ce document utile (0 vote)
107 vues4 pages

Architecture ARM et Cortex-M expliquée

Le document décrit l'architecture ARM7TDMI et Cortex M, y compris leurs caractéristiques clés telles que le pipeline, les registres et le mappage mémoire. Il explique également le fonctionnement du boot et du bit banding.

Transféré par

azza memmi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
107 vues4 pages

Architecture ARM et Cortex-M expliquée

Le document décrit l'architecture ARM7TDMI et Cortex M, y compris leurs caractéristiques clés telles que le pipeline, les registres et le mappage mémoire. Il explique également le fonctionnement du boot et du bit banding.

Transféré par

azza memmi
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Résumé du cours

Cœur ARM7TDMI :
Processeur à Architecture « Von Neumann » : Même bus mémoire pour instructions et données
3 étages de pipeline : Fetch, Decode, Execute
Instructions sur 32 Bits
2 instructions d'accès à la mémoire LOAD et STORE
T : support du mode "Thumb" (instructions sur 16 bits)
D : extensions pour la mise au point
M : Multiplieur et instructions pour résultats sur 64 bits.
I : émulateur embarqué ("Embedded ICE" )
Architecture Cortex M :
Cortex-M3 et Cortex-M4 sont des microcontrôleurs 32bits basés sur une architecture Armv7-
M. Cortex-M4 a été étendu pour implémenter le profil d’une architecture Armv7E-M (FPU,
Instructions DSP …).
Cortex M possède un jeu d’instructions RISC. Toutes les opérations sur les données sont
effectuées sur les registres du CPU, ce qui limite l’accès à la mémoire uniquement pour
chargement et le sauvegarde des données.
Architecture Load/Store :

Dans le bit d’optimisation de la mémoire, ARM a introduit les instructions Thumb sur 16bits.
Par la suite, ARM a introduit le jeu d’instructions Thumb-2, qui est un mélange de jeux
d’instructions de 16 et 32 bits.
Cortex M3/M4/M7 sont conçus pour supporter les instructions Thumb et Thumb-2, avec les
instructions de l’unité à virgule flottante et les instructions SIMD : Single Instruction Multiple
Data.
S’appuyant sur une architecture Hardvard, le microcontrôleur Cortex M possèdent plusieurs
bus, ce qui lui permet d’effectuer plusieurs opérations en parallèles.
Cortex-M3/M4 intègrent :
- Un contrôleur d’interruptions NVIC (Nested Vectored Interrupt Controller) déterministe
et rapide, dont la latence est limitée à 12 cycles.
- Un SysTick Timer 24 bits à auto-rechargement. Ce SysTick Timer fournit une interruption
périodique pour l’implémentation d’un système d’exploitation temps réel (RTOS).
- Une architecture de débogage CoreSight au sein des processeurs Cortex-M. Il permet de
placer jusqu'à huit points d'arrêt matériels dans des régions de code ou de données.
Les Registres :
Cortex-M est une architecture de type Load-Store ; cela signifie s’il y a des données en
mémoire à traiter, il doit transférer les données de la mémoire vers les registres, les traitées à
l’intérieur du processeur, puis faire le transfert vers la mémoire si nécessaire.
La banque de registre cortex-M4 comporte 16 registres. Dont treize registres à usage général.

1
16 registres de 32 bits sont disponibles :
• R0 à R12: usage général
• R13 à R15: registres “spéciaux”
• R13: Pointeur de pile (Stack Pointer ou SP)
• R14: Registre de liens (Link Register ou LR) :
Lorsqu’elle fonction veut appeler une autre fonction. Elle doit sauvegarder le contenu du
registre LR dans la pile.
• R15: Compteur de programme (Program Counter ou PC) :
Le contenu du PC indique à quel endroit de la mémoire se trouve la prochaine exécution que
le processeur doit lire
Pipeline ARM: Le registre “Program Counter” R15/PC
2 considérations importantes :
• après chaque exécution, de combien doit-on incrémenter PC?
PC = PC + 4
• qu’est-ce que contient PC?
PC = adresse de deux instructions plus loin que l’instruction exécutée
PC = adresse de l’instruction exécutée (courante) + 8

La figure suivante présente un pipeline de profondeur trois, sa latence en termes de cycles ainsi
que le nombre d’instructions par cycle une fois le pipeline rempli.

2
Une instruction par cycle une fois le pipeline rempli
Arrangement des octets
Pour stocker le mot de 32 bits : 0x12 34 56 78 à l’adresse 0x0 en BIG et LITTLE ENDIAN

Mappage mémoire
ARM définit un espace d'adressage mémoire normalisé commun à tous les cœurs Cortex-M, ce
qui garantit la portabilité du code entre différents fabricants de silicium. L'espace d'adressage a
une largeur de 4 Go et divisé en plusieurs régions. Le partitionnement est basé sur des usages
typiques de sorte que différentes zones sont conçues pour être utilisés principalement pour :
- Accès au code du programme (région de CODE)
- Accès de données (région de SRAM)
- Périphériques (région périphérique)
- contrôle et déboguer les composants internes du processeur (par exemple, le bus PPB)
L’accès aux bits (bit banding)

3
Formule pour calculer l’adresse dans la région alias :
bit_band_address = alias_region_base + (region_base_offset x 32) + (bit_number x 4)
Exemple :
Soit une donnée sur 32 bits X=X31…X0 stocke en mémoire à partir de l’adresse 0x20000000
(Mode Little Endian), En utilisant le « Bit banding » qu’elle est l’adresse qui manipule le bit
X3 ?
bit_band_address = alias_region_base + (region_base_offset x 32) + (bit_number x 4)
alias_region_base= 0x22000000
region_base_offset=0x20000000-0x20000000=0
bit_band_address=0x22000000+0*32+3*4= 0x2200000C.
Système boot
Dans les microcontrôleurs cortex M, la zone de code commence à partir de l’adresse
0x00000000 (accessible via I-bus et D-bus), tandis que la zone de la SRAM commence à partir
de l’adresse 0x20000000 (accessible vis S-bus).
Après un RESET, le microcontrôleur commence à partir à partir de l’adresse 0x00000000,
Initialise le pointeur de pile MSP, par la suite il charge l’adresse du début de l’application à
partir de l’adresse 0x00000004.

Vous aimerez peut-être aussi