79 | | teste la variable '''_tty_get_full''' rangée en mémoire pour savoir si un caractère est disponible. C'est la routine d'interruption (ISR) associée au terminal TTY qui se charge d'écrire le code ASCII du caractère dans le tampon '''_tty_get_buf''', et de forcer à 1 la variable de synchronsation '''_tty_get_full''' pour signaler que le tampon est plein. Cette variable de synchronisation est remise à 0 par l'appel système ''tty_getc_irq()'' lorsque le caractère est transféré du tampon système '''tty_get_buf''' vers le tampon mémoire défini par l'utilisateur. |
80 | | |
81 | | Une architecture peut contenir plusieurs processeurs et chaque processeur peut exécuter plusieurs tâches (plusieurs programmes utilisateurs) en pseudo-paralléliseme, par multiplexage temporel. Le GIET supporte au plus 8 processeurs, et au plus 4 tâches par processeur. Le GIET supporte donc au plus 32 tâches. |
| 79 | teste la variable '''_tty_get_full''' rangée en mémoire pour savoir si un caractère est disponible. C'est la routine d'interruption (ISR) associée au terminal TTY qui se charge d'écrire le code ASCII du caractère dans le tampon '''_tty_get_buf''', et de forcer à 1 la variable de synchronsation '''_tty_get_full''' pour signaler que le tampon est plein. Cette variable de synchronisation est remise à 0 par l'appel système '''tty_getc_irq()''' lorsque le caractère est transféré du tampon système '''tty_get_buf''' vers le tampon mémoire défini par l'utilisateur. |
| 80 | |
| 81 | Une architecture peut contenir plusieurs processeurs et chaque processeur peut exécuter plusieurs tâches (plusieurs programmes utilisateurs) en pseudo-paralléliseme, par multiplexage temporel. Le GIET supporte au plus 8 processeurs, et au plus 4 tâches par processeur, soit 32 tâches au maximum. |
135 | | Le répertoire ''soft'' contient les sept fichiers '''app.ld''', '''sys.ld''', '''seg.ld''', '''config.h''', '''reset.s''', '''interp.c''', et '''Makefile''' permettant de générer |
| 135 | Le répertoire ''soft'' contient les sept fichiers '''app.ld''', '''sys.ld''', '''seg.ld''', '''config.h''', '''reset.s''', '''main.c''', et '''Makefile''', permettant de générer |
150 | | On va commencer par exécuter un programme très simple défini dans le fichier '''soft/timer.c''', qui se contente d'activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier '''app/stdio.c'' pour déterminer quels sont les deux appels système qui permettent de définir la période et d'autoriser le TIMER à générer les interruptions périodiques. |
151 | | |
152 | | '''Question''' : modifiez le fichier '''timer.c''' pour que le TIMER génère des interruptions avec une période de 100000 cycles, compilez le logiciel embarqué, et lancez la simulation. |
| 150 | On va commencer par exécuter un programme très simple, qui se contente d'activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier '''app/stdio.c'' pour déterminer quels sont les deux appels système qui permettent de définir la période et d'autoriser le TIMER à générer les interruptions périodiques. |
| 151 | |
| 152 | '''Question''' : modifiez le fichier '''main.c''' pour que le TIMER génère des interruptions avec une période de 500000 cycles, compilez le logiciel embarqué, et lancez la simulation. |
186 | | Modifiez le Makefile pour utiliser main_1.c au lieu de main_0.c, compilez le logiciel embarqué, et exécutez-le sur le simulateur. |
187 | | |
188 | | '''Question''' : Complétez le fichier '''main_1.c''' pour encapsuler cette séquence chargement / affichage dans une boucle |
189 | | de façon à afficher successivement les images du fichier '''images.raw'''. On pourra utiliser l'appel système '''tty_getc_irq''' pour rendre interactif le passage à l'image suivante. |
| 186 | Modifiez le Makefile pour utiliser main_display.c au lieu de main.c, compilez le logiciel embarqué, et exécutez-le sur le simulateur. |
| 187 | |
| 188 | '''Question''' : Dans quel segment sera rangéé ce tableau tab[128][128]? |
| 189 | |
| 190 | '''Question''' : Complétez le fichier '''main_display.c''' pour encapsuler cette séquence chargement / affichage dans une boucle |
| 191 | de façon à afficher successivement les images du fichier '''images.raw'''. On pourra utiliser l'appel système '''tty_getc_irq()''' pour rendre interactif le passage à l'image suivante. |