Changes between Version 76 and Version 77 of SoclibCourseTp3
- Timestamp:
- Dec 5, 2013, 8:35:33 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp3
v76 v77 52 52 = 3 Logiciel embarqué = 53 53 54 Les composants de la bibliothèque SoCLib permettent d'exécuter des systèmes d'exploitation généralistes (tels que LINUX ou NetBSD), ou des systèmes d'exploitation spécialisés pour MPSoC (tels que MutekH ou ALMOS). Dans ce TP et les suivants, on se contentera d'un 55 système d'exploitation minimal, constitué par un Gestionnaire d'Interruptions, Exceptions et Trappes (GIET). 56 57 L'application qui nous intéresse dans ce TP est une application logicielle qui s'exécute en mode utilisateur. 58 Comme elle utilise deux périphériques (terminal TTY et coprocesseur GCD), elle doit faire faire des appels 59 système vers le GIET pour accéder à ces périphériques. 54 Les applications logicielles qui s'exécutent sur le (ou les) processeur(s) programmable(s) ont besoin d'accéder à des périphériques ou à des coprocesseurs matériels spécialisés. Ces applications sont souvent multi-tâches et splusieurs tâches s'exécutent en parallèle sur un même processeur en multiplexage temporel. Pour ces raisons, on a généralement besoin d'un système d'exploitation embarqué sur le MPSoC. 55 56 Les composants de la bibliothèque SoCLib permettent d'exécuter des systèmes d'exploitation généralistes (tels que LINUX ou NetBSD), ou des systèmes d'exploitation spécialisés pour MPSoC (tels que MutekH ou ALMOS). Pour simplifier les choses, dans ce TP et les suivants, on se contentera d'un 57 système d'exploitation minimal, appelé GIET (Gestionnaire d'Interruptions, Exceptions et Trappes). 60 58 61 59 == 3.1 Gestionnaire d'Interruptions, exceptions et Trappes == … … 75 73 * Le fichier '''ctx_handler.c''' est écrit en C. Il est dans le répertoire '''sys''', et contient le code du gestionnaire de changements de contexte, utilisé lorsque un processeur exécute plusieurs tâches en multiplexage temporel. 76 74 * Le fichier '''drivers.c''' contient les fonctions d'accès aux périphériques. Il rassemble donc les ''pilotes'' de tous les périphériques de la machine. 77 * Le fichier '''common.c''' est écrit en C. Il est dans le répertoire '''sys''', et contient les fonctions générales du système d'exploitation , telles que les primitives de synchronisation entre tâches.75 * Le fichier '''common.c''' est écrit en C. Il est dans le répertoire '''sys''', et contient les fonctions générales du système d'exploitation. 78 76 * Le fichier '''giet.s''' est écrit en assembleur MIPS32. Il est dans le répertoire '''sys''', et contient la fonction qui analyse la cause de l'appel au GIET, et la fonction de sauvegarde/restauration de contexte. 79 77 * Le fichier '''stdio.c''' est écrit en C. Il est dans le répertoire '''app''' car il contient l'ensemble des appels systèmes qui peuvent être utilisés par un programme utilisateur écrit en C. Le nom de ce fichier provient du fait que la plupart des appels systèmes sont utilisés pour accéder aux périphériques. … … 146 144 Les adresses de base des segments sont utilisées à la fois par le matériel et par le logiciel embarqué. Elles doivent donc être définies à deux endroits : 147 145 148 1. Pour le matériel, les addresses de base et les longueurs des segments doivent être définies dans le fichier ''tp3_top.cpp'' pour ëtre stockées dans la !MappingTable. Elles sont utilisées dans la phase de configuration du matériel par les constructeurs des composants. 149 150 1. Pour le logiciel, les adresses de base des segments doivent être définies dans le fichier ''soft/seg.ld'' qui contient les directives pour l'éditeur de liens lors de la compilation du logiciel embarqué. 151 152 Par ailleurs le GIET peut supporter des architectures comportant plusieurs processeur, mais les structures de données utilisées par le système doivent être dimensionnées en fonction du nombre de processeurs et du nombre de tâches parallèles. Ces paramètres doivent donc être définies dans le fichier '''tp"_top.cpp''' et dans le fichier '''soft/config.h'''. 153 154 == 4.1 Compilation du logiciel embarqué == 146 1. Pour le matériel, les addresses de base et les longueurs des segments doivent être définies dans le fichier '''tp3_top.cpp''' pour ëtre stockées dans la !MappingTable. Elles sont utilisées dans la phase de configuration du matériel par les constructeurs des composants. 147 148 1. Pour le logiciel, les adresses de base des segments doivent être définies dans le fichier '''soft/seg.ld''' qui contient les directives pour l'éditeur de liens lors de la compilation du logiciel embarqué. 149 150 == 4.2 Compilation du logiciel embarqué == 155 151 156 152 Le répertoire '''soft''' de l'archive qui vous est fournie contient les fichiers spécifiques à l'application embarquée : 157 153 154 * Le GIET peut supporter des architectures comportant plusieurs processeur, mais les structures de données utilisées par le système doivent être dimensionnées en fonction du nombre de processeurs et du nombre de tâches parallèles. Ces paramètres doivent donc être définies dans le fichier '''soft/config.h'''. 155 158 156 * le fichier '''reset.s''' est écrit en assembleur et contient le code de boot qui est exécuté à la mise sous tension, ou lors de l'activation du signal NRESET. Ce code s'exécute en mode ''kernel'', mais il est spécifique à chaque plate-forme matérielle, car il est chargé d'initialiser les périphériques présents dans l'architecture. 159 157 160 158 * le fichier '''main.c''' est écrit en C et contient le code de l'application logicielle. Il utilise les appels système définis dans le fichier ''stdio.c''. 161 159 162 * les fichiers '''sys.ld''', app.ld''', et '''seg.ld''' contiennent les directives pour l'éditeur de liens, et en particulier les adresses de base des différents segments , ainsi que certains paramètres de la plate-forme matérielle tels que le nombre de processeurs.160 * les fichiers '''sys.ld''', app.ld''', et '''seg.ld''' contiennent les directives pour l'éditeur de liens, et en particulier les adresses de base des différents segments. 163 161 164 162 * le fichier '''Makefile''' permet de lancer la génération du logiciel embarqué. … … 192 190 '''Question''' : Comment le code de boot (résultant de la compilation du fichier '''reset.s''' obtient-il l'adresse du point d'entrée dans le code utilisateur? 193 191 194 == 4. 2Description de l'architecture matérielle ==192 == 4.3 Description de l'architecture matérielle == 195 193 196 194 Pour ce qui concerne le matériel, il faut compléter le fichier ''tp3_top.cpp'' qui vous est fourni: … … 209 207 '''Question''' : Complétez la net-list en connectant les signaux du bus. 210 208 211 == 4. 3Génération du simulateur ==209 == 4.4 Génération du simulateur == 212 210 213 211 Les composants matériels modélisées dans les TP1 et TP2 étaient très simples. Vous avez pu décrire vous-même les modèles de simulation de ces composants, et vous avez pu écrire ''à la main'' le Makefile permettant de générer le simulateur. … … 310 308 L'exécutable ''simulator.x'' devrait être créé dans le répertoire de travail ''TP3''. 311 309 312 == 4. 4Simulation ==310 == 4.5 Simulation == 313 311 314 312 Lancez la simulation avec la commande : … … 329 327 1. Déclarez le segment correspondant au périphériques GCD (seg_gcd) comme cachables. Relancez la compilation et la simulation. Expliquez les résultats obtenus. 330 328 331 == 4. 5Modification du logiciel embarqué ==329 == 4.6 Modification du logiciel embarqué == 332 330 333 331 Puisque le logiciel embarqué est chargé dynamiquement dans la RAM et dans la ROM lors du lancement du simulateur,