Changes between Version 60 and Version 61 of SoclibCourseTp4
- Timestamp:
- Dec 5, 2010, 1:48:14 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp4
v60 v61 120 120 '''Question''' : Complêtez le fichier '''tp4_top.cpp''' pour définir les adresses de base et les tailles des cinq segments associés aux composants ICU, TIMER, IOC, FBF et DMA, et pour introduire ces 5 segments dans la table des segments. Ces segments sont-ils cachables ou non cachables? 121 121 122 '''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les paramètres des constructeurs des cinq nouveaux composants ICU, TIMER, IOC, FBF et DMA. 122 '''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les paramètres des constructeurs des cinq nouveaux composants ICU, TIMER, IOC, FBF et DMA. Pour le composant IOC on fera en sorte que le cheminom désignant le fichier 123 externe puisse être redéfini par un paramètre sur la ligne de commande au lancement du simulateur. Pour le composant 124 FBF, on choisira une taille d'écran de 128 lignes de 128 pixels. 123 125 124 126 '''Question''' : Complétez la net-list dans le fichier '''tp4_top.cpp''' pour connecter les 4 lignes d'interruption utilisées dans cette architecture mono-processeur. … … 146 148 On va commencer par exécuter un programme main() très simple, qui se contente d'activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier ''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. 147 149 148 '''Question''' : modifiez le fichier '''main .c''' pour que le TIMER génère des interruptions avec une période de 1 000 000 cycles. Compilez ce programme, et exécutez-le sur le simulateur.150 '''Question''' : modifiez le fichier '''main_0.c''' pour que le TIMER génère des interruptions avec une période de 1 000 000 cycles. 149 151 150 == 4.3 Programme utilisateur utilisant leTTY ==152 == 4.3 Utilisation du contrôleur TTY == 151 153 152 154 On veut maintenant utiliser le contrôleur TTY en écrivant … … 158 160 * '''q''' : sortie du programme par l'appel système exit() 159 161 160 '''Question''' : Modifiez le programme main() pour écrire cet interprêteur de commandes en utilisant les appels système ''tty_getc_irq()'' et tty_puts().162 '''Question''' : Modifiez le fichier '''main_0.c''' pour écrire cet interprêteur de commandes en utilisant les appels système '''tty_getc_irq()''' et '''tty_puts()'''. Compilez en utilisant le Make file du répertoire soft, et exécutez ce programme interactif sur le simulateur. 161 163 162 == 4.4 Contrôleur IOC et Contrôleurgraphique ==164 == 4.4 Contrôleur IOC et contrôleur d'écran graphique == 163 165 164 Le contrôleur de disque disponible dans SoCLib... 166 On va utiliser le contrôleur IOC pour charger dans un tampon mémoire du programme utilisateur une séquence d'images stockées dans le fichier '"images.raw''' qui est fourni dans l'archive, avant d'afficher ces images sur l'écran graphique contrôlé par le composant FBF. 167 Le fichier '''images.raw''' contient des images de 128 lignes de 128 pixels codées en 256 niveaux de gris (un octet par pixel. 168 169 '''Question''' : Quel est l'encombrement d'une image en nombre de blocs? 170 171 '''Question''' : Ecrivez un nouveau programme main() dans un fichier '''main_1.c'''. Vous utiliserez les appels système '''ioc_read()''' et '''ioc_completed()''' pour charger une image dans un tampon mémoire de 128*128 octets tab[128][128], déclaré dans la fonction main(). Dans quel segment sera rangéé ce tableau tab[128][128]? 172 Utilisez l'appel système '''fbf_write()''' pour afficher cette image sur l'écran graphique. 173 N'oubliez pas de tester systématiquement la valeur du code de retour chaque fois que vous utilisez un appel système. 174 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. 175 176 '''Question''' : Complétez le fichier '''main_1.c''' pour encapsuler cette séquence chargement / affichage dans une boucle 177 de façon à afficher successivement les images du fichier '''images.raw'''. On pourra utiliser les appels système '''tty_puts()''' et 178 '''tty_getc_irq''' pour rendre interactif le passage à l'image suivante. 165 179 166 180 = 5. Architecture multi-processeurs générique =