Mapping mémoire
On rappelle que le mapping mémoire du processeur est disponible en page 75 du manuel de référence du processeur. L'emplacement des zones qui nous intéressent est rappelé ci-dessous :
- Flash : adresse de début =
0x08000000
, taille = 1 MB - RAM : elle est séparée en deux blocs non contigus :
- SRAM1 : début =
0x20000000
, taille = 96 kB - SRAM2 : début =
0x10000000
, taille = 32 kB
- SRAM1 : début =
Dans un premier temps, le programme qu'on écrira sera logé en RAM. Plus précisément, le programme (code + données) sera dans SRAM1 et la pile dans SRAM2.
L'avantage de cette façon de faire est qu'un débordement de pile se traduira par un accès dans une zone réservée qui passera le processeur en mode erreur. On pourra donc tout de suite identifier le problème. A contrario, si on avait mis la pile tout en haut de la RAM (à la fin de SRAM1), un débordement de pile se serait traduit par un écrasement de la zone de données (bss ou data), ce qui ne produit un comportement erratique (crash) que longtemps après. À débugger, c'est un enfer !