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