Mode de démarrage et initialisation de la mémoire
Les modes de démarrage des processeurs
Nous disposons de plusieurs modes de démarrage (boot
) sur les
processeurs. Ceci nous permet de résoudre plusieurs problématiques :
- le démarrage ‘normal’ du programme déjà chargé en mémoire, le mode par défaut, simple et rapide usuel des systèmes embarqués,
- le démarrage sur un ‘chargeur de programme’
(
bootloader
) qui permet de charger un nouveau programme sur le système via un port de communication (UART, SPI, USB, LAN, etc.), - le démarrage en mode ‘développeur’ pour faire du déverminage de code
(
debugging
) en mémoire.
Note
En cherchant de l’information sur les bootloader
, vous trouverez
principalement des informations sur le démarrage des systèmes
opérationnels avec systèmes de fichiers
(U-Boot
,
BootX
,
GRUB
,
etc. ). Dans notre cas, il s’agit d’un logiciel de programmation
mémoire qui permet de programmer la Flash du processeur.
Démarrage du STM32F412
Le Cortex®-M a trois choix de démarrage (Boot
) en fonction de la
configuration des broches Boot0
et Boot1
.
Boot1 | Boot0 | Mode | Commentaire |
---|---|---|---|
X | 0 | Flash Memory | La mémoire Flash utilisateur est liée à l’espace de Boot |
1 | 0 | Système Memory | La mémoire Système est liée à l’espace de Boot |
1 | 1 | Embedded SRAM | La mémoire SRAM est liée à l’espace de Boot |
Nos systèmes de laboratoire démarrent en mémoire Flash par défaut.
L’espace mémoire sélectionné est lié à la zone de démarrage.
La zone code de démarrage commence à l’adresse 0x0000 0000
.
La zone SRAM commence elle à l’adresse 0x2000 0000
.
Après un RESET, le processeur démarre à l’adresse 0x0000 0000
. Il
initialise le pointeur de pile MSP puis charge l’adresse de la première
instruction exécutée depuis l’adresse 0x0000 00004
.
La mémoire Flash commençant à l’adresse mémoire 0x0800 0000
, cette
adresse est donc ‘mappée’ sur l’adresse 0x000 0000
au démarrage.
Notre cible est connectée à notre ordinateur par le port USB qui permet :
- d’alimenter la cible,
- de dialoguer avec la cible à l’aide d’un port COM virtuel sur USB,
- d’accéder à la mémoire Flash de la cible par interface USB,
- de commander l’exécution du programme pour son déverminage.
Ceci est possible grâce à l’intégration d’un logiciel de programmation et de déverminage directement en mémoire ROM Système.
Pour aller plus loin sur ces sujets, vous pouvez consulter les notes UM1075 et AN2606 de ST-Microélectronique