Aller au contenu

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.

STM32F412 Reset

Démarrage du STM32F412

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