Changes between Version 21 and Version 22 of Archi-1-TP11


Ignore:
Timestamp:
Dec 10, 2021, 5:07:37 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP11

    v21 v22  
    303303
    304304
    305 1. La configuration des périphériques et des interruptions est faites dans la fonction `arch_init()` appelée par `kinit()`.
    306 Comment configurer l'ICU  pour démasquer l'IRQ connectée sur son entrée n°0 ?
     3051. La configuration des périphériques et des interruptions est faites dans la fonction `arch_init()` appelée par `kinit()`.\\Comment configurer l'ICU  pour démasquer l'IRQ connectée sur son entrée n°0 ?
    307306{{{#!protected ------------------------------------------------------------------------------------
    308307''
     
    311310}}}
    3123111. Supposons que l'on ait défini les registres du TIMER de la façon suivante :
     312{{{#!c
     313struct timer_s {
     314    int value;          // timer's counter : +1 each cycle, can be written
     315    int mode;           // timer's mode : bit 0 = ON/OFF ; bit 1 = IRQ enable
     316    int period;         // timer's period between two IRQ
     317    int resetirq;       // address to acknowledge the timer's IRQ
     318};
     319extern volatile struct timer_s __timer_regs_map[NCPUS];
     320}}}
     321  Ecrivez le code de la fonction `static void timer_init (int timer, int tick)` qui initialise la période avec du timer n° `timer` avec le nombre de période nommé `tick`.
     322{{{#!protected ------------------------------------------------------------------------------------
     323''
     324{{{#!c
     325static void timer_init (int timer, int tick)
     326{
     327    __timer_regs_map[timer].period =  tick;     // next period
     328    __timer_regs_map[timer].mode = (tick)?3:0;  // timer ON with IRQ only if (tick != 0)
     329}
     330}}}
     331}}}
    313332
    314333