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 |
| 0 | 1 | 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