Changes between Version 60 and Version 61 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 5, 2010, 1:48:14 PM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v60 v61  
    120120'''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?
    121121
    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
     123externe puisse être redéfini par un paramètre sur la ligne de commande au lancement du simulateur. Pour le composant
     124FBF, on choisira une taille d'écran de 128 lignes de 128 pixels.
    123125
    124126'''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.
     
    146148On 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.
    147149
    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.
    149151
    150 == 4.3 Programme utilisateur utilisant le TTY ==
     152== 4.3 Utilisation du contrôleur TTY ==
    151153
    152154On veut maintenant utiliser le contrôleur TTY en écrivant
     
    158160 * '''q''' : sortie du programme par l'appel système exit()
    159161
    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.
    161163
    162 == 4.4 Contrôleur IOC et Contrôleur graphique ==
     164== 4.4 Contrôleur IOC et contrôleur d'écran graphique ==
    163165
    164 Le contrôleur de disque disponible dans SoCLib...
     166On 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.
     167Le 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]?
     172Utilisez l'appel système '''fbf_write()''' pour afficher cette image sur l'écran graphique.
     173N'oubliez pas de tester systématiquement la valeur du code de retour chaque fois que vous utilisez un appel système.
     174Modifiez 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
     177de 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.
    165179
    166180= 5. Architecture multi-processeurs générique =