Changes between Version 45 and Version 46 of SoclibCourseTp3
- Timestamp:
- Nov 28, 2010, 8:15:05 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp3
v45 v46 131 131 == 4.2 Compilation du logiciel embarqué == 132 132 133 Le logiciel embarqué est défini dans deux types de fichiers: 134 * Les fichiers définissant le code du système d'exploitation sont stockés dans le répertoire / 135 * fichiers spécifiques à chaque application embarquée. 136 137 Les fichiers c 138 plusieurs fichiers source, que vous trouverez dans le répertoire ''soft''. 133 Le logiciel embarqué est défini dans deux types de fichiers. 134 135 Vous pouvez consulter le code source générique du système d'exploitation dans le répertoire '''/users/cao/alain/ue_almo/soft/giet'''. 139 136 Certains de ces fichiers sont écrits en assembleur Mips32, certains sont écrits en C : 140 * 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'' et initialise quelques registres, avant de se brancher à la pemière instruction du programme ''main'', et en forçant le processeur à passer en mode ''user'' gràce à l'instruction ''eret''. 137 141 138 * le fichier '''giet.s''' est écrit en assembleur et contient le code du Gestionnaire d'Interruption, Exceptions et Trappes. Le GIET est l'unique point d'entrée dans le système d'exploitation. Ce code s'exécute en mode ''kernel'', et se termine toujours par une instruction ''eret''. 142 * le fichier '''stdio.c''' est écrit en C, et contient le code des fonctions C permettant à un programme applicatif s'exécutant en mode ''user'' d'accéder aux périphériques ''mappés'' dans le segment ''kernel'', en effectuant des appels système. 143 * le fichier '''syscalls.s''' est écrit en C et contient le code des appels systèmes proprement dits. Ce code s'exécute en mode kernel, et permet l'accès aux périphériques ou aux registres protégés du processeur. 144 * le fichier '''main.c''' est écrit en C et contient le code de l'application logicielle, qui peut évidemment utiliser les fonctions définies dans le fichier ''stdio.c''. 145 * le fichier '''ldscript''' contient les directives pour l'éditeur de liens, et en particulier les adresses de base des différents segments. 139 * les fichier '''stdio.c''' et '''stdio.h''' sont écrits en C, et contiennent le code des appels systèmes permettant à un programme s'exécutant en mode ''user'' d'accéder aux périphériques. 140 * les fichiers '''drivers.c''' et '''drivers.h''' sont écrits en C et contiennent le code des fonctions systèmes qui s'exécutent en mode kernel, qui accèdent effectivement aux périphériques ou aux registres protégés du processeur. 141 * le fichier '''isr.s''' contient le code des routines de traitement des interruptions (Interrupt Service Routine). 142 143 Le répertoire '''soft''' de l'archive qui vous est fournie contient les fichiers spécifiques à l'application embarquée : 144 145 * 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, 146 car il est chargé d'initialiser les périphériques présents dans l'architecture. IL initialise quelques registres, du processeur 147 (en particulier le pointeur de pile), avant de se brancher à la pemière instruction du programme ''main'', en forçant le processeur à passer en mode ''user'' gràce à l'instruction ''eret''. 148 * le fichier '''main.c''' est écrit en C et contient le code de l'application logicielle, qui peut évidemment utiliser les appels système définis dans le fichier ''stdio.c''. 149 * le fichier '''ldscript''' contient 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 ou de terminaux TTY. 146 150 * le fichier '''Makefile''' permet de lancer la génération du logiciel embarqué. 147 151 148 La génération du code binaire e st totalement indépendante de la génération du simulateur. La chaîne de compilation croisée GCC fournit quatre outils:152 La génération du code binaire embarqué est totalement indépendante de la génération du simulateur de l'architecture matérielle. La chaîne de compilation croisée GCC fournit quatre outils: 149 153 * mipsel-unknown-elf-gcc : '''compilateur''', pour transformer un fichier source C (extension .c) en fichier assembleur pour MIPS32 (extension .s) 150 154 * mipsel-unknown-elf-as : '''assembleur''', pour transformer un fichier assembleur (extension .s) en fichier binaire objet (extension .o) … … 157 161 }}} 158 162 159 '''Question''' : Editez le fichier ''stdio.c''. Quels sont les appels système qui permettent d'accéder à un terminal TTY ? Lorsqu'il y a plusieurs terminaux dans l'architecture, comment est sélectionné le terminal cible ? (la réponse est dans le fichier ''syscalls.s'')160 161 163 '''Question''' : Editez le fichier ''reset.s''.Quelles sont les initialisations réalisées par le code de boot ? 162 164 163 165 On rappelle que l'instruction ''eret'' de sortie du GIET ou du code de boot effectue principalemnt deux actions : 164 1. Elle modifie le registre protégé SR (registre 12 du coprocesseur ''système'') pour que le processeur retourne dans le mode où il était lorsqu'il a été dérouté par une interruption, une exception ou un appel système.166 1. Elle modifie le registre protégé SR (registre 12 du coprocesseur ''système'') pour que le processeur retourne dans le mode ''user''. 165 167 1. Elle effectue un branchement à l'adresse contenue dans le registre protégé EPC (registre 14 du coprocesseur ''système''). 166 168 167 169 '''Question''' : Ouvrez le fichier ''main.c''. Que fait ce programme ? (on rappelle que la fonction ''tty_getc()'' est bloquante, et ne rend pas la main tant qu'un caractère n'a pas été saisi au clavier). 170 171 '''Question''' : Editez le fichier ''stdio.c''. Quels sont les appels système qui permettent d'accéder à un terminal TTY ? Lorsqu'il y a plusieurs terminaux dans l'architecture, comment est sélectionné le terminal cible ? 172 173 Complétez le fichier '''ldscript''' pour définir les adresses de base des différents segments, ainsi que les paramètres NB_PROCS et NB_TTYS. 168 174 169 175 Lancez l'exécution du Makefile. Deux fichiers ''bin.soft'' et ''bin.soft.txt'' doivent être créés dans le répertoire ''soft'' : … … 172 178 == 4.3 Définition de l'architecture matérielle == 173 179 174 Complétezle fichier ''tp3_top.cpp'':175 * Il faut enregister les 7 segments dans la ''!MappingTable''. N'hésitez pas à consulterla documentation de la !MappingTable pour bien comprendre la signification des 4 arguments du constructeur de la !MappingTable, ainsi que la signification des 5 arguments du constructeur d'un segment.180 Vous devez Compléter le fichier ''tp3_top.cpp'': 181 * Il faut enregister les 7 segments dans la ''!MappingTable''. Consultez la documentation de la !MappingTable pour bien comprendre la signification des 4 arguments du constructeur de la !MappingTable, ainsi que la signification des 5 arguments du constructeur d'un segment. 176 182 * Il faut définir les arguments de tous les constructeurs des composants matériels instanciés, ainsi que les valeurs de leurs paramètres template. 177 183 * Il faut définir le cheminom permettant au ''loader'' des composants ROM et RAM d'accéder au fichier ''bin.soft'' contenant le code binaire. 178 * Il faut enfin compléter la net 184 * Il faut enfin compléter la net-list en connectant les signaux du bus. 179 185 180 186 Pour ce qui concerne le composant vci_xcache_wrapper, on choisira des caches à correspondance directe (c'est à dire un seul niveau d'associativité), ayant une capacité totale de 4 Koctets et des lignes de caches d'une longueur de 16 octets. 181 187 182 '''Question''' : Parmi les 7 segments utilisés dans cette l'architecture, lesquels doivent être déclaréscachables ?188 '''Question''' : Parmi les 9 segments utilisés dans cette l'architecture, lesquels doivent être non-cachables ? 183 189 184 190 '''Question''' : Quel est le nombre de bits de poids fort de l'adresse qui doivent être décodés par le contrôleur du bus