La mémoire du STM32F412
Plan mémoire unifié des Cortex-M
Le STM32F412 utilisé dans nos laboratoires est un microprocesseur 32 bits de la série Armv7.
Le plan mémoire de base des ARM®-Cortex®-M est quasiment identique pour chaque CPU. La mémoire de programme (Flash - R/O), la mémoire de données (SRAM - R/W), les registres et les ports des entrées et sorties sont organisés dans un espace mémoire linéaire de 4 GB. La mémoire adressable est divisée en 8 blocs principaux de 512 MB chacun.
Le Cortex®-M s’appuie sur une architecture de
Harvard
qui sépare les bus de code et de données. Le processeur possède
plusieurs bus organisés en matrice avec deux niveaux : Master
et
Slave
. Cela lui permet d’effectuer des opérations en parallèle et sur
un cycle. Les accès aux données sont soit alignés sur 32 bits, soit non
alignés.
Les octets sont codés en mémoire dans le format Little Endian
. Dans un
mot mémoire (Word
), l’octet d’adressage inférieur est le Last
Significant Byte
et l’octet d’adressage supérieur est le Most
Significant Byte
.
La configuration de la matrice de bus dépend du mode de démarrage du processeur.
Plan mémoire du STM32F412
Le STM32F412 dispose de:
- 256 KB de mémoire SRAM aux adresses
0x2000 0000 - 0x203 FFFF
. - 1 MB de mémoire Flash aux adresses
0x0800 0000 - 0x080F FFF
.
Accès aux bits des périphériques
L’accès aux bits de configuration des registres des périphériques se
fait, en principe, individuellement. Le plus souvent cet accès est
effectué par l’application de masques (AND
et OR
) lors d’opérations
lecture-modification-écriture sur plusieurs cycles.
Les Cortex^®-M disposent d’une solution plus efficace dite
Bit-Banding
. Un bit de mémoire est lié sur un mot mémoire (alias) et
peut être modifié sur un cycle d’instruction.
Le premier MB de la mémoire et le premier MB des périphériques sont liés
sur 32 MB de mémoire Bit-Band
.
Le calcul de l’adresse en Bit-Band
est donné ci-dessous.
La représentation graphique de ce calcul est illustrée dans la figure ci-dessous.
Bit-Band
en mémoire