TP - Programmation ARM
TP - Programmation ARM
TP - Programmation ARM
Matériel cible
La programmation se fera sur un matériel cible. Pour ce projet vous travaillerez avec le microcontrôleur
de la famille STM32F1 basé sur un processeur ARM Cortex-M3.
(1) Télécharger le logiciel Keil MDK ARM (MDK537). Ensuite lancer l’installation.
https://www.keil.com/demo/eval/arm.htm
______________________________________________________________________________
[email protected]
Université Virtuelle du Sénégal (IUVS) 2021 ⎯ 2022
TP Microprocesseur | Dr Ousmane SADIO L2 Robotique
_______________________________________________________________________________________________________________
(2) Pour assurer la rétrocompatibilité avec les versions antérieures du MDK, télécharger puis installer
le module Legacy support for ARM Cortex-M device (MDKCM525) présent dans le dossier Drive.
https://www2.keil.com/mdk5/legacy/
(3) Une fois l’installation terminée, devez spécifier les composants sur lesquels vous allez tester vos
codes. Dans la partie Devices, aller dans STMMicroelectronics puis dans STM32F1 afin
d’installer ou mettre à jour un certain nombre de packs : STM32F1xx_DFP, STM32NUCLEO_BSP,
CMSIS et MDK-Middleware.
______________________________________________________________________________
[email protected]
Université Virtuelle du Sénégal (IUVS) 2021 ⎯ 2022
TP Microprocesseur | Dr Ousmane SADIO L2 Robotique
_______________________________________________________________________________________________________________
(5) Renommer les dossiers de votre projet en cliquant sur le bouton File Extensions, Books and
Environment…
(9) Lancer la session de debug en allant sur Debug puis cliquer sur Start/Stop Debug Session… Après
le lancement, plusieurs fenêtres s’affichent :
❶ : le listing source écrit en langage C ;
❷ : l’état des registres du processeur avant la réalisation de l’instruction repérée par la flèche jaune
(dans la fenêtre ③) ;
❸: le code assembleur produit par le compilateur ;
______________________________________________________________________________
[email protected]
Université Virtuelle du Sénégal (IUVS) 2021 ⎯ 2022
TP Microprocesseur | Dr Ousmane SADIO L2 Robotique
_______________________________________________________________________________________________________________
Une fois le debug lancé, vous pouvez exécuter le code avec le bouton Run ( ) et l'arrêter avec le bouton Stop
( ). Si vous voulez réinitialiser le système, vous pouvez utiliser le bouton Reset ( ).
Le contrôle de l’exécution en pas à pas se fait à l’aide des boutons Step ( ), Step Over ( ) et Step Out ( ).
L’ajout d’un point d’arrêt se fait soit en double cliquant à droite de la ligne où l’on souhaite déposer le point
d’arrêt, soit en cliquant sur le bouton Insert/Remove Breakpoint ( ). En utilisant le bouton Run ( ), l’exécution
avance jusqu’au prochain point d’arrêt.
Interprétation
Sur la fenêtre de désassemblage, chaque ligne est constituée des champs suivants : adresse instruction,
mot code, mnémonique, opérandes.
# Ce bloc d’instructions montre que la variable i est initialisée à 0.
______________________________________________________________________________
[email protected]
Université Virtuelle du Sénégal (IUVS) 2021 ⎯ 2022
TP Microprocesseur | Dr Ousmane SADIO L2 Robotique
_______________________________________________________________________________________________________________
# Ce bloc d’instructions montre l’assignation de la valeur 6 à la variable j (voir dernière ligne bloc
précédent) puis son stockage à l’adresse mémoire sp + 0.
# Ce bloc permet de remettre la pile système (SP) à sa valeur d’origine puis un branchement
inconditionnel vers le registre LR contenant l'adresse de retour de la fonction. La valeur de retour est
R0.
______________________________________________________________________________
[email protected]
Université Virtuelle du Sénégal (IUVS) 2021 ⎯ 2022
TP Microprocesseur | Dr Ousmane SADIO L2 Robotique
_______________________________________________________________________________________________________________
(11) Créer un nouveau projet que vous nommeriez led_blink contenant le programme suivant.
(12) Effectuer le débogage du programme étape par étape. Arrivé à l’intérieur de la boucle while,
observer l’état de la GPIOA en allant dans Peripherals / General Purpose I/O puis cliquer sur
GPIOA.
______________________________________________________________________________
[email protected]