Série 2 : La sécurité dans les systèmes embarqués - BFH

Transcription

Série 2 : La sécurité dans les systèmes embarqués - BFH
MCESY
Série 2, Sécurité dans les systèmes
Page 1
Série 2 : La sécurité dans les systèmes embarqués
But
Les étudiants sont en mesures :
 D’implémenter le Watchdog sur le LM3S9B92.
 D’insérer la fonction « assert() » dans le code source
Exercice 1 : Watchdog
Insérez dans le programme de l’exercice 1 le code pour un Watchdog. Utilisez pour cela le module
périphérique Watchdog 0 (WDT0) du LM3S9B92. Les informations concernant ce module sont
mises à disposition dans l'annexe A.2.4 du manuscrit du cours ou, de façon plus détaillées, dans le
chapitre 12 de la documentation du LM3S9B92 (Datasheet Stellaris LM3S9B92 Microcontroller
[pdf]). Cette documentation est mise à votre disposition sur le site Internet « prof.hti.bfh.ch/fue1 »,
sous la rubrique «  Microcontroller in Embedded Systems  Downloads ». L'initialisation
du watchdog y est plus spécifiquement décrite dans la section 12.3. Définissez la fonction
InitWatchdog(), qui initialise et démarre le watchdog, ainsi que la macro
RefreshWatchdog, qui réinitialise ce dernier. Afin de tester la fonctionnalité du watchdog
insérez dans un des états du programme (par exemple S4) une boucle infinie. Le watchdog devra
alors déclencher une réinitialisation
Pour debugger le code « pas par pas » dans l'IDE, il faut également arrêter le watchdog durant les
arrêts du programme. Sinon, le watchdog réinitialiserait systématiquement le système durant le
débogage. Pour que le watchdog ne réalise pas cette opération, il faut mettre le bit STALL du
registre WDT_TEST à un (voir chapitre 12 de la documentation du LM3S9B92)
Remarque :
L'utilisation du watchdog générera des problèmes avec l'IDE ! En effet, lorsque que le watchdog
déclenche une réinitialisation du système, l'IDE s'arrêtera dans la routine ResetISR().
Les opérations de réinitialisation du système du watchdog peuvent être observées de la manière
suivante :
1) Affichez un motif donné sur les LED (par exemple 0x00 ou 0xF1) au début de main().
2) Exécutez le programme dans le débogueur jusqu’à ce que le watchdog génère une
réinitialisation et fait ainsi entrer le programme dans la routine de démarrage ResetISR().
Fermez le débogueur, puis débranchez brièvement le câble entre le PC et le kit de
développement et rebranchez finalement ce dernier. Le kit de développement est ainsi
réalimenté à travers le port USB et le programme est toujours disponible dans la Flash. Le
logiciel peut ainsi être exécuté sur le kit sans le débogueur. Après chaque réinitialisation du
système, le motif de bits (0x00 ou 0xF0) devrait être réaffiché sur les LED.
Exercice 2 : assert()
Le site Internet « prof.hti.bfh.ch/fue1 » met à disposition le fichier assert.zip, sous la rubrique « 
Microcontroller in Embedded Systems  Downloads ». Ce fichier contient d’une part le
fichier en tête assert.h et d’autre part les fonctions de la libraire destinées pour l’affichage
(vcp.c et vcp.h). Copiez ces fichier dans l’exercice 1 et ajoutez dans votre code quelque
fonctions assert().
2012, Laboratoire d’informatique technique, E. Firouzi
MCESY
Série 2, Sécurité dans les systèmes
Page 2
L’affichage s’effectue à travers le port série virtuel (VCP) avec 38,4 k bit/s, 8 bits de données, 1 bit
d'arrêt. Afin de pouvoir utiliser la fonction assert(), procédez comme suit :
1) Incluez les fichiers d’entête "assert.h" et "vcp.h" avec la directive #include
2) Initialisez l'interface sérielle avec la fonction VCP_Init(0) dans le programme principal.
3) Essayez de vérifier divers conditions comme par exemple : assert(i > 5);
4) Vous pouvez également imprimer des textes comme par exemple :
VCP_WriteString("Bonjour\n");
Démarrez finalement un programme terminal sur votre PC, sélectionnez le bon port virtuel (COM)
pour la communication et fixez la bonne vitesse de transmission (38,4 k bit/s). Lorsque tous
fonctionnent correctement, les opérations d’affichage de votre programme à travers le port virtuel
(assert() et VCP_WriteString()) sont effectuées sur votre terminal. Vous pouvez
également utiliser le terminal, qui est intégré dans Code Composer Studio (CCS). Sélectionnez pour
cela le Menu : Window > show view > other > terminal. Ce menu ouvre un terminal dans la
partie inférieur de CCS. Cette fenêtre contient en haut à droite l’icône « Settings ». Sélectionnez le
bon port virtuel (COM) et connectez en suite le terminal au port en question avec l’icône
« Connect ».
2012, Laboratoire d’informatique technique, E. Firouzi

Documents pareils