Changes between Version 59 and Version 60 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 5, 2010, 12:30:18 PM (14 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v59 v60  
    118118Outre les fichiers qui permettent de générer le simulateur de l'architecture matérielle, cette archive contient  également le sous-répertoire ''soft'' qui est utilisé pour la génération du logiciel embarqué.
    119119
    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.
     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?
    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. Utilisez le Makefile pour pour générer le simulateur.
     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.
    123123
    124 '''Question''' : Complétez la net-list pour  connecter les 4 lignes d'interruption utilisées dans cette architecture mono-processeur.
     124'''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.
     125
     126'''Question''' : Complétez le fichier '''tp4_top.desc''' pour pouvoir utiliser soclib-cc, et utilisez le Makefile pour pour générer le simulateur.
    125127
    126128= 4. Logiciel embarqué =
    127129
     130Le répertoire ''soft'' contient les quatre fichiers '''ldscript''', '''reset.s''', '''main.c''', et '''Makefile''' permettant de générer
     131le logiciel embarqué.
     132
    128133== 4.1 Code de boot ==
    129134
    130 Le ''code de boot'' défini dans le fichier '''reset.s''' doit maintenant initialiser le vecteur d'interruption (c'est à dire le tableau indexé par le numéro d'interruption, et contenant les adresses des différentes routines d'interruption).
     135Le ''code de boot'' défini dans le fichier '''reset.s''' doit initialiser le vecteur d'interruption (c'est à dire le tableau indexé par le numéro d'interruption, et contenant les adresses des différentes routines d'interruption). Il doit également initialiser le composant ICU, pour démasquer les interruptions qu'on veut autoriser.
    131136
    132 '''Question''' : En ouvrant le fichier ''isr.s'', déterminez les nom des quatre ISRs associées aux composants Timer, TTY,
    133 IOC et DMA. Modifiez le fichier reset.s pour initialiser les entrées correspondantes du vecteur d'interruption.
     137'''Question''' : En ouvrant le fichier '''isr.s''', déterminez les nom des quatre ISRs associées aux composants Timer, TTY,
     138IOC et DMA. Modifiez le fichier '''reset.s''' pour initialiser les entrées correspondantes du vecteur d'interruption.
    134139
    135 == 4.2 Programme utilisateur utilisant le TTY ==
     140'''Question''' : Le fichier '''icu.h''' contient la carte des registres adressables du composant ICU. Ouvrez ce fichier (rangé)
     141dans le répertoire du GIET) pour déterminer l'offset du registre ICU_MASK_SET, et complétez le fichier '''reset.s''' pour
     142démasquer les quatre lignes d'interruption utilisées : irq_in[0], irq_in[1], irq_in[5], irq_in[6],
    136143
    137 '''Question''' : Ecrire ou modifier un programme main() réalisant un interprêteur de commandes utilisant les appels système  ''tty_getc_irq()'', tty_getw_irq(), tty_printf.
     144== 4.2 Activation du TIMER ==
    138145
    139 == 4.3 Activation du TIMER ==
     146On 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.
    140147
    141 On veut maintenant activer la génération d'interruptions périodiques par le TIMER. Consultez le fichier ''stdio.c'' pour
    142 déterminer quels sont les deux appels système qui permettent de définir la période du TIMER et d'autoriser les interruptions périodiques.
     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.
    143149
    144 '''Question''' : Modifiez le programme main()pour que le TIMER génère une interruption périodique tous les 100 000 cyles. Exécutez ce nouveau programme et vérifiez le comportement de la machine.
     150== 4.3 Programme utilisateur utilisant le TTY ==
    145151
    146 '''Question''' : Pour le fun, un interprêteur de commande permettant d'activer ou de désactiver le TIMER
     152On veut maintenant utiliser le contrôleur TTY en écrivant
     153un petit interprêteur de commandes, qui exécute une boucle infinie dans laquelle il lit des commandes tapées au clavier
     154(un seul caractère à la fois) et les exécute.
     155On traitera au minimum les trois commandes suivantes:
     156 * '''d''' : desactivation des interruptions générées par le TIMER
     157 * '''a''' : activation des interruptions générées par le TIMER
     158 * '''q''' : sortie du programme par l'appel système exit()
    147159
    148 == 4.4 Contrôleur de disque ==
     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().
     161
     162== 4.4 Contrôleur IOC et Contrôleur graphique ==
    149163
    150164Le contrôleur de disque disponible dans SoCLib...
     
    152166= 5. Architecture multi-processeurs générique =
    153167
    154 On va dans cette section modéliser une architecture matérielle comportant un nombre variable de processeurs de sorte  que le nombre de processeurs soit un paramètre ; défini sur la ligne de commande au lancement du simulateur.
     168Modifiez l'architecture matérielle de la section 3 pour introduire un nombre variable de processeurs.
     169Chaque processeur aura son propre concentrateur d'interruption (un composant ICU par processeur),
     170et son propre contrôleur TTY (un contrôleur TTY par processeur).
     171Le nombre de processeurs doit être un paramètre défini sur la ligne de commande au lancement du simulateur.
     172
    155173On souhaite exécuter sur cette architecture matérielle une application logicielle multi-tâches coopérative.
    156174
     
    161179== 5.4 Programme coopératif multi-tâches ==
    162180
    163 
    164 
    165 
    166181= 6 Compte-rendu =
    167182