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 - ro), la mémoire de données (SRAM - rw), 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
.
Exercice La mémoire du STM32F412/1
Comment le compilateur est instruit de ces adresses mémoire pour créer le fichier binaire ?
Est-ce qu’il est possible d’utiliser d’autres adresses ?
Solution
En remontant le contenu du fichier
.pio/build/DISCO_F/idedata.json
, nous retrouvons dans la
distribution sous le répertoire
<Home>/.platformio/packages/tool-ldscripts-ststm32/stm32f4/
le
fichier de définition STM32F412ZGTX_FLASH.ld
avec les informations
d’édition des liens pour la plateforme. Celle-ci est spécifiée dans
le fichier de configuration du projet custom_targets.json
.
L’option upload_command
de platformio permet de redéfinir le logiciel d’upload ainsi que
les adresses mémoires où placer le code binaire défini dans le
fichier .elf.
Accès aux bits des périphériques
L’accès aux bits de configuration des registres des prériphiques 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.