Changes between Version 21 and Version 22 of Archi-1-TP11
- Timestamp:
- Dec 10, 2021, 5:07:37 PM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP11
v21 v22 303 303 304 304 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 ? 305 1. 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 ? 307 306 {{{#!protected ------------------------------------------------------------------------------------ 308 307 '' … … 311 310 }}} 312 311 1. Supposons que l'on ait défini les registres du TIMER de la façon suivante : 312 {{{#!c 313 struct 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 }; 319 extern 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 325 static 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 }}} 313 332 314 333