567 | | 1. 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 `trace0.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. Pour trouver cette durée, il va falloir réduire le tick pour que la simulation ne soit pas trop longue et retirer l'affichage `kprintf()` de l'ISR. |
568 | | {{{#!protected ------------------------------------------------------------------------------------ |
569 | | '' |
570 | | * La durée mesurée est de l'ordre de 160 cycles. |
571 | | '' |
572 | | }}} |
| 567 | 1. 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 `trace0.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. |
| 568 | |
| 569 | Pour cette question, il faut commenter les affichages dans l'ISR, changer la valeur du tick pour voir plus d'IRQ (par exemple 1000) et exécuter en mode débug puis regarder la trace dans `trace0.S`, il faut chercher un `kentry` correspondant à une IRQ et chercher l'instruction `eret` qui marque la fin du traitement. |
| 570 | {{{#!protected ------------------------------------------------------------------------------------ |
| 571 | '' |
| 572 | * La durée mesurée est de l'ordre de 430 cycles pour la première (vers le cycle 3600). |
| 573 | '' |
| 574 | }}} |