Notes et transcriptions du cours Développez en C pour l'embarqué disponible sur la plateforme Openclassrooms.
Entraînez-vous en créant un projet
À vous de jouer !
Pour vous entraîner, réalisez cet exercice étape par étape. Une fois terminé, vous pouvez comparer votre travail avec les pistes que je vous propose.
Cette première activité a pour but de vérifier que vous disposez de tous les outils nécessaires pour avancer dans la suite de ce cours.
Pour cela, vous allez créer un projet, importer du code, le compiler et l’exécuter tout en observant son comportement.
Documents à réaliser
Le rendu se fera sous la forme de captures d’écran sur lesquelles vous surlignerez les éléments à visualiser. Par exemple, vous pouvez montrer que votre code a bien compilé en indiquant par un cadre le résultat de la compilation :
Travail à réaliser
Étape 1
Créez un nouveau projet que vous nommerez Act1. Ajoutez un fichier C dans lequel vous copierez le code du fichier main.c de l’archive (vous pouvez aussi directement l’importer). Ne modifiez pas le contenu du code. Compilez.
Faites une capture d’écran montrant :
Étape 2
Ajoutez à votre projet les fichiers librairie.lib et functions.h (qui sont dans l’archive) avec un clic droit sur le répertoire avec les sources ou bien en utilisant le bouton
.
Attention, pensez bien à sélectionner All files (*) comme type de fichiers.
Décommentez toutes les lignes commentées de votre fichier C (lignes 2, 6, 9 et 11). Vous devriez avoir un code similaire à :
Étape 3
Étape 4
Observez la valeur de la variable observable à chaque incrément de la boucle for ;
Faites deux captures d’écran montrant la valeur de observable. Les captures doivent montrer de combien observable augmente à chaque pas de la boucle for. Autrement dit, faites une capture à un instant, puis une autre capture après avoir fait un pas de la boucle.
Étape 5
Étape 6
Vérifiez votre travail
Alors, vous êtes allé au bout ? Suivez le guide pour vérifier votre travail !
Sur chaque image, il vous faudra vérifier que les éléments demandés sont bien présents sur la capture et qu’ils ont été bien mis en évidence.
Les éléments sont bien tous identifiés sur les captures d'écran ;
Le mode debug est bien lancé ;
Le point d'arrêt est présent à la bonne ligne et l'exécution est suspendu à ce niveau ;
Les deux captures d'écran montrent bien un écart de 42 (ou 2A en hexadécimal) entre les deux valeurs de la variable ;
La durée est indiquée et représente bien la durée d'exécution ;
La fenêtre “Memory” est bien présente sur la capture d'écran ainsi que l'adresse, et la valeur est correcte.
Étape 1
Correction
Créer un dossier dédié au projet nommé act1 dans son répertoire de travail ;
On crée notre projet dans Keil µVision via le menu Projet > New µVision Project… ;
On crée le fichier projet “act1” dans notre dossier dédié au projet act1 ;
On sélectionne la cible initiale du projet ici STMicroelectronics > STM32F103 > STM32F103RB ;
On sélectionne les fichiers Device > Startup et CMSIS > Core ;
Le projet existe à présent, on va y introduire les sources de l'activité.
On peut décompresser l'archive de l'activité dans le dossier du projet, elle contient un répertoire src ;
On va utiliser la gestion des composants du projet

pour associer nos sources au projet ;
Pour plus de clarté, on renomme : “Target_1” en “EMULATION” et “Source Group 1” en “SRC”;
Dans notre source group “SRC” on associe notre premier fichier source via le bouton Add Files…. On sélectionne “.\src\main.c” on clique sur les boutons Add puis Close ;
Par défaut, les fichiers générés par la compilation sont stockés dans le répertoire du projet. Je préfère qu'ils soient créés et stockés en dehors des fichiers source du projet (dans mon cas dans un RAM disk car je ne souhaite pas conserver ces fichiers temporaires sur le disque). C'est paramétrable via le bouton Options for Target…
.
Sélectionner l'onglet “Output” ;
Cliquer sur le bouton Select Folder for Objects… et sélectionner le répertoire dans lesquels les fichiers objets et le binaire seront générés.
On peut maintenant supprimer le dossier “.\Objects” du dossier projet.
Pour lancer la compilation :
Si vous n'avez pas réussi à éditer et compiler du code, veillez consulter les sections 1 et 2 du chapitre 1.3
Étape 2
Correction
Vérifier les paramétrages du simulateur
Cliquer sur le bouton Options for target () ;
Sélectionner l' onglet “Debug” et assurez-vous que l'option Use Simulator est bien cochée ;
Vérifiez que dans la partie à gauche qui sert pour la simulation, vous avez bien les valeurs suivantes pour :
Vérifier que la partie droite qui sert pour l'exécution sur cible réelle et vous avez bien les valeurs suivantes :
“Driver DLL” : SARMCM3.DLL ;
“Dialog DLL” : TARMSTM.DLL, “Parameter” : -pSTM32F103RB.
La méthode pour passer en mode debug est expliquée dans la section 3 du chapitre 1.3.
Étape 3
Correction
L’image doit montrer le point d’arrêt sur la ligne 9 ainsi que les doubles flèches indiquant que le programme est arrêté sur cette ligne.
Pour ajouter un point d'arrêt, il suffit de cliquer sur la partie gauche des lignes de code. Il faut ensuite lancer l'exécution en cliquant sur run (). L'exécution s'arrêtera au premier point d'arrêt qu'elle rencontre. La section 1 du chapitre 1.4 explique cela.
Étape 4
Correction
On lance le mode débogage via le bouton Debug Session

;
On clique sur le bouton Run

pour continuer l'exécution jusqu'au point d'arrêt de la
ligne 9 ;
On affiche la fenêtre Watch 1 via le menu View > Watch Windows > Watch 1 ;
On ajoute la variable nommée “observable” à la fenêtre via le menu contextuel. Sur la variable clic droit sélectionner l'option Add 'observable' to… > Watch 1 ;
Via le menu contextuel on peut sélectionner le format d'affichage de la variable ;
Initialement observable vaut 0. Via le bouton Run(F5)
, on relance l'exécution du code jusqu’à retomber sur le point d'arrêt. La variable “observable” vaut alors 42.
On clique a nouveau sur le Run(F5)
et “observable vaut 84.
A chaque appel de la fonction fonction1 la variable observable est incrémentée de 42 unités.
Étape 5
Correction
La durée de la simulation est indiquée en bas de la fenêtre. Pour avoir le temps simulé pour atteindre la ligne 13, il faut un point d’arrêt sur la ligne 13 et que le programme y soit arrêté.
Comme précisé dans la section 1 du chapitre 1.4, la durée du temps estimé en simulation est indiquée en bas de la fenêtre. Vous pouvez la remettre à zéro en effectuant un clic droit sur elle.
Étape 6
Correction
Pour observer la valeur de la mémoire, il faut que la fenêtre Memory soit sélectionnée et que l’adresse soit saisie. On observe à l’adresse 0x20000004 (contenue dans le registre R1) les bits 24 00 00 00 en hexadécimal, soit la valeur de 0x00000024 (ou 36 en décimal).
La fenêtre mémoire peut être affichée en allant dans le menu View et en sélectionnant Memory Windows comme cela est indiqué dans la section 3 du chapitre 1.4.
Une fois cette fenêtre apparue, en saisissant l'adresse de la mémoire dans Address, il est possible d'observer la valeur contenue dans cette plage mémoire.
Attention, la lecture des octets se fait à l'envers (on parle d'architecture little-endian). La valeur 0x24000000 en mémoire correspond à la valeur 0x00000024