Changes between Version 76 and Version 77 of SoclibCourseTp3


Ignore:
Timestamp:
Dec 5, 2013, 8:35:33 PM (11 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp3

    v76 v77  
    5252= 3 Logiciel embarqué =
    5353
    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.
     54Les 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
     56Les 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
     57système d'exploitation minimal, appelé GIET (Gestionnaire d'Interruptions, Exceptions et Trappes).
    6058
    6159== 3.1 Gestionnaire d'Interruptions, exceptions et Trappes ==
     
    7573 * 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.
    7674 * 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.
    7876 * 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.
    7977 * 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.
     
    146144Les 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 :
    147145
    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é ==
    155151
    156152Le répertoire '''soft''' de l'archive qui vous est fournie contient les fichiers spécifiques à l'application embarquée :
    157153
     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
    158156 * 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.
    159157
    160158 * 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''.
    161159
    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.
    163161
    164162 * le fichier '''Makefile''' permet de lancer la génération du logiciel embarqué.
     
    192190'''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?
    193191
    194 == 4.2 Description de l'architecture matérielle ==
     192== 4.3 Description de l'architecture matérielle ==
    195193
    196194Pour ce qui concerne le matériel, il faut  compléter le fichier ''tp3_top.cpp'' qui vous est fourni:
     
    209207'''Question''' : Complétez la net-list en connectant les signaux du bus.
    210208
    211 == 4.3 Génération du simulateur ==
     209== 4.4 Génération du simulateur ==
    212210
    213211Les 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.
     
    310308L'exécutable ''simulator.x'' devrait être créé dans le répertoire de travail ''TP3''.
    311309
    312 == 4.4 Simulation ==
     310== 4.5 Simulation ==
    313311
    314312Lancez la simulation avec la commande :
     
    329327 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.
    330328 
    331 == 4.5 Modification du logiciel embarqué ==
     329== 4.6 Modification du logiciel embarqué ==
    332330
    333331Puisque le logiciel embarqué est chargé dynamiquement dans la RAM et dans la ROM lors du lancement du simulateur,