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. |
| 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 '''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. |
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, |
| 143 | IOC 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 |
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. |
| 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. |