Changes between Version 36 and Version 37 of Archi-1-TP11


Ignore:
Timestamp:
Dec 13, 2021, 1:00:05 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP11

    v36 v37  
    349349}}}
    350350
    351 {{{#!comment
    352 
    353 = TME sur les interruptions.
     351
     352
     353= B. TME sur les interruptions.
    354354
    355355
     
    491491    exit(1);
    492492}
    493 }}}}}}
    494 
    495 
     493}}}
     494}}}
     4951. Dans ce qui précède, l'exécution de l'ISR du Timer est fatale puisqu'elle stoppe l'application après l'affichage de "Game Over!". Nous vous proposons de modifier l'ISR afin d'avoir un comportement un peu plus réaliste. Dans cette nouvelle version, l'ISR du timer décrémente un compteur alloué dans une variable globale du noyau puis elle revient dans l'application tant que ce compteur est différent de 0. Donc, dans l'ISR du timer si le compteur est différent de 0, elle affiche un message avec la valeur du compteur, sinon elle affiche "game over!" et stoppe l'application, comme dans l'exercice précédent.\\\\Par exemple, au lieu d'afficher:
     496{{{
     497   _     ___    __
     498  | |__ /'v'\  / /
     499  | / /(     )/ _ \
     500  |_\_\ x___x \___/
     501
     502Tapez votre nom : Moi
     503Donnez un nombre entre 1 et 99: 45
     50445 est trop grand: 20
     50520 est trop grand:
     5060 est trop petit:
     507Game Over
     508[105002991] EXIT status = 1
     509}}}
     510 l'application pourrait afficher:
     511{{{
     512   _     ___    __
     513  | |__ /'v'\  / /
     514  | / /(     )/ _ \
     515  |_\_\ x___x \___/
     516
     517Tapez votre nom : Moi
     518Donnez un nombre entre 1 et 99: 45
     51945 est trop grand: 20
     52020 est trop grand:
     521..3 : 12
     52212 est trop petit: 15
     52315 est trop petit:
     524..2 :
     525..1 :
     526Game Over
     527[115002778] EXIT status = 1
     528}}}
     5291. Dans cet usage du TIMER, les ISR ne sont pas fatales, sauf la dernière. En utilisant le mode debug (make debug) et le fichier `label0.S`, déterminez la durée en cycles du traitement par le noyau d'une IRQ du timer. Ce n'est pas exactement la même durée pour toutes les IRQ.