305 | | 1. La configuration des périphériques et des interruptions dans la fonction `arch_init()` se fait Comment configurer l'ICU masquer l'IRQ connectée sur son entrée n°5 ? |
306 | | {{{#!protected ------------------------------------------------------------------------------------ |
307 | | '' |
308 | | '' |
309 | | }}} |
| 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 ? |
| 307 | {{{#!protected ------------------------------------------------------------------------------------ |
| 308 | '' |
| 309 | * Il suffit d'appeler `icu_set_mask (0,0;` puisque `icu` = 0` et `irq = 0`. |
| 310 | '' |
| 311 | }}} |
| 312 | 1. Supposons que l'on ait défini les registres du TIMER de la façon suivante : |
| 313 | |
| 314 | |
| 315 | {{{#!comment |
| 316 | |
| 317 | 1. Le TIMER est le composant qui produit périodiquement des IRQ, (mettre la structure) écrivez le code d'une fonction qui active une IRQ tous les 1000 cycles. |
| 318 | {{{#!protected ------------------------------------------------------------------------------------ |
| 319 | '' |
| 320 | '' |
| 321 | }}} |
| 322 | 1. Comment configurer le noyau pour qu'il exécute une ISR nommée `x_isr()` pour un périphérique `x` dont l'IRQ est connectée à l'entrée 3 ? |
| 323 | {{{#!protected ------------------------------------------------------------------------------------ |
| 324 | '' |
| 325 | '' |
| 326 | }}} |
| 327 | 1. Pourquoi est-ce plus simple d'exécuter le traitement des interruptions en mode in-interruptible ? |
| 328 | {{{#!protected ------------------------------------------------------------------------------------ |
| 329 | '' |
| 330 | '' |
| 331 | }}} |
| 332 | 1. On a vu qu'un syscall est comme un appel de fonction, il ne garantie pas que les registres temporaires sont conservés, mais il garantit que les registres persistants le sont. Est-ce que c'est pareil pour les interruptions ? |
| 333 | {{{#!protected ------------------------------------------------------------------------------------ |
| 334 | '' |
| 335 | '' |
| 336 | }}} |
| 337 | |
| 338 | }}} |
| 339 | |
| 340 | = TME sur les interruptions. |
| 341 | |
| 342 | == Ajout de l'ISR timer |
| 343 | |
| 344 | |
| 345 | |
| 346 | == Game Over |
| 347 | |
| 348 | Dans le premier TME, vous avez réalisé un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Ce jeu avait été mis dans kinit parce qu'a ce moment, il n'y avait pas encore d'application utilisateur. Nous vous proposons de mettre le jeu dans l'application user et de limiter le temps pendant lequel vous pouvez jouer. |
| 349 | |
| 350 | Modifier l'ISR du timer pour afficher "Game Over" |
| 351 | |
| 352 | |
| 353 | |
312 | | {{{#!comment |
313 | | |
314 | | 1. Le TIMER est le composant qui produit périodiquement des IRQ, (mettre la structure) écrivez le code d'une fonction qui active une IRQ tous les 1000 cycles. |
315 | | {{{#!protected ------------------------------------------------------------------------------------ |
316 | | '' |
317 | | '' |
318 | | }}} |
319 | | 1. Comment configurer le noyau pour qu'il exécute une ISR nommée `x_isr()` pour un périphérique `x` dont l'IRQ est connectée à l'entrée 3 ? |
320 | | {{{#!protected ------------------------------------------------------------------------------------ |
321 | | '' |
322 | | '' |
323 | | }}} |
324 | | 1. Pourquoi est-ce plus simple d'exécuter le traitement des interruptions en mode in-interruptible ? |
325 | | {{{#!protected ------------------------------------------------------------------------------------ |
326 | | '' |
327 | | '' |
328 | | }}} |
329 | | 1. On a vu qu'un syscall est comme un appel de fonction, il ne garantie pas que les registres temporaires sont conservés, mais il garantit que les registres persistants le sont. Est-ce que c'est pareil pour les interruptions ? |
330 | | {{{#!protected ------------------------------------------------------------------------------------ |
331 | | '' |
332 | | '' |
333 | | }}} |
334 | | |
335 | | }}} |
336 | | |
337 | | = TME sur les interruptions. |
338 | | |
339 | | == Ajout de l'ISR timer |
340 | | |
341 | | |
342 | | |
343 | | == Game Over |
344 | | |
345 | | Dans le premier TME, vous avez réalisé un petit jeu dans lequel vous deviez deviner un nombre tiré au hasard. Ce jeu avait été mis dans kinit parce qu'a ce moment, il n'y avait pas encore d'application utilisateur. Nous vous proposons de mettre le jeu dans l'application user et de limiter le temps pendant lequel vous pouvez jouer. |
346 | | |
347 | | Modifier l'ISR du timer pour afficher "Game Over" |
348 | | |
349 | | |
350 | | |
351 | | [...] |
352 | | |
353 | | |
| 356 | |