Vous êtes sur la page 1sur 4

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