Changes between Version 95 and Version 96 of SoclibCourseTp4


Ignore:
Timestamp:
Dec 11, 2013, 9:04:32 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v95 v96  
    8787Le GIET définit donc deux tableaux '''_tty_get_buf[32]''' et '''_tty_get_full[32]''', indexés par le numéro du terminal concerné.
    8888
    89 '''Question''' : Comment les appels système ''tty_getc_irq()'' et ''tty_pus()'' calculent-ils l'index du terminal associé à la tâche qui effectue l'appel système ? La réponse se trouve dans le fichier '''sys/drivers.c'''.
     89'''Question''' : Comment les appels système '''tty_getc_irq()''' et '''tty_puts()''' calculent-ils l'index du terminal associé à la tâche qui effectue l'appel système ? La réponse se trouve dans le fichier '''sys/drivers.c'''.
    9090
    9191'''Question''' : Comment le code de l'ISR associée à l'interruption générée par le TTY calcule-il l'index de l'entrée qui doit être modifiée dans les tableaux '''_tty_get_buf[32]''' et '''_tty_get_full[32] ? La réponse se trouve dans le fichier '''sys/irq_handler.c'''.
     
    119119}}}
    120120
    121 Outre 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é.
    122 
    123 '''Question''' : Complêtez le fichier '''tp4_top.cpp''' pour définir les adresses de base et les tailles des segments associés aux composants TTY, GCD, ICU, TIMER, IOC, FBF et DMA, et pour introduire ces 7 segments dans la table des segments. Ces segments sont-ils cachables ou non cachables? Les adresses de base des sgments sont définis dans le fichier '''ldscript''' du répertoire '''soft'''. Les tailles des segments sont définis dans la documentation des composants matèriels sur le site SoCLib.
    124 
    125 '''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les arguments des constructeurs des  composants ICU, TIMER, IOC, FBF, DMA et BUS. Pour le composant IOC on fera en sorte que le cheminom désignant le fichier
    126 externe puisse être redéfini par un paramètre sur la ligne de commande au lancement du simulateur. Pour le composant FBF, on choisira une taille d'écran de 128 lignes de 128 pixels.
    127 
    128 '''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, et pour connecter sur le bus les 3 initiateurs et les 3 cibles.
     121Outre 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é.
     122
     123'''Question''' : Complêtez le fichier '''tp4_top.cpp''' pour définir les adresses de base et les tailles des segments associés aux composants TTY, GCD, ICU, TIMER, IOC, FBF et DMA, et pour introduire ces 7 segments dans la table des segments. Ces segments sont-ils cachables ou non cachables? Les adresses de base des sgments sont définis dans le fichier '''soft/seg.ld'''. Les tailles des segments sont définis dans la documentation des composants matèriels sur le site SoCLib.
     124
     125'''Question''' : Complétez le fichier '''tp4_top.cpp''' pour définir les arguments des constructeurs des  composants ICU, TIMER, IOC, FBF, DMA et BUS. Pour le composant IOC on fera en sorte que le cheminom désignant le fichier externe représentant le disque puisse être redéfini par un paramètre sur la ligne de commande au lancement du simulateur. Pour le composant FBF, on choisira une taille d'écran de 128 lignes de 128 pixels.
     126
     127'''Question''' : Complétez la net-list dans le fichier '''tp4_top.cpp''' pour  connecter sur les 4 premières entrées du composant ICU les 4 lignes d'interruption '''irq_tim''', '''irq_tty''', '''irq_ioc''', '''irq_dma''' utilisées dans cette architecture, dans cet ordre.
     128
     129'''Question''' Complétez la net-list pour connecter sur le bus les 3 initiateurs et les 3 cibles.
    129130
    130131'''Question''' : Complétez le fichier '''tp4_top.desc''' pour pouvoir utiliser soclib-cc, et utilisez le Makefile pour générer le simulateur.
     
    132133= 4. Logiciel embarqué =
    133134
    134 Le répertoire ''soft'' contient les quatre fichiers '''ldscript''', '''reset.s''', '''main.c''', et '''Makefile''' permettant de générer
     135Le 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
    135136le logiciel embarqué.
    136137
     
    139140Puisqu'on utilise des interruptions, le ''code de boot'' 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.
    140141
    141 '''Question''' : En ouvrant le fichier '''isr.s''', déterminez les nom des quatre ISRs associées aux composants TIMER, TTY,
    142 IOC et DMA. Modifiez le fichier '''reset.s''' pour initialiser les entrées correspondantes du vecteur d'interruption.
    143 
    144 '''Question''' : Le fichier '''icu.h''' contient la carte des registres adressables du composant ICU. Ouvrez ce fichier (rangé)
    145 dans le répertoire du GIET) pour déterminer l'offset du registre ICU_MASK_SET, et complétez le fichier '''reset.s''' pour
     142'''Question''' : En ouvrant le fichier '''sys/irq_handler.c''', déterminez les nom des quatre ISRs associées aux composants TIMER, TTY,
     143IOC et DMA. Modifiez le fichier '''reset.s''' pour initialiser les 4 premières entrées du vecteur d'interruption dans cet ordre.
     144
     145'''Question''' : Le fichier '''sys/hwr_mapping.h''' contient la carte des registres adressables des périphériques supportés par le GIET. Ouvrez ce fichier pour déterminer l'offset du registre ICU_MASK_SET, et complétez le fichier '''reset.s''' pour
    146146configurer le composant ICU de façon à autoriser les quatre lignes d'interruption utilisées : irq_in[0], irq_in[1], irq_in[2], irq_in[3].
    147147
    148148== 4.2 Activation du TIMER ==
    149149
    150 On va commencer par exécuter un programme main_0 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.
    151 
    152 '''Question''' : modifiez le fichier '''main_0.c''' pour que le TIMER génère des interruptions avec une période de 100000 cycles, et lancez la simulation.
     150On 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.
    153153
    154154N'oubliez pas de modifier préalablement la variable d'environnement PATH de la fenêtre dans laquelle vous lancez le simulateur, en exécutant la commande: