Changes between Version 117 and Version 118 of SoclibCourseTp4


Ignore:
Timestamp:
Oct 23, 2020, 2:35:42 AM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp4

    v117 v118  
    2929connecté au processeur. C'est en interrogeant le composant matériel ICU (Interrupt Controler Unit) que le système d'exploitation (en pratique le gestionnaire d'interruption) peut obtenir le numéro de la ligne d'interruption active la plus prioritaire.
    3030
    31 Le composant '''vci_icu''' est un contrôleur d'interruptions vectorisées. C'est une cible VCI dont vous trouverez  la spécification fonctionnelle [https://www.soclib.fr/trac/dev/wiki/Component/VciIcu ici].  Prenez le temps de la lire.
     31Le composant '''vci_icu''' est un contrôleur d'interruptions vectorisées. C'est une cible VCI dont vous trouverez  la spécification fonctionnelle [http://www.soclib.fr/trac/dev/wiki/Component/VciIcu ici].  Prenez le temps de la lire.
    3232
    3333Le composant '''vci_multi_timer''' est également une cible VCI
    3434contenant un nombre queconque de timers programmables capables de générer des interruptions périodiques. On trouvera la spécification fonctionnelle de ce composant
    35 [https://www.soclib.fr/trac/dev/wiki/Component/VciMultiTimer ici].
    36 
    37 Le composant '''vci_block_device''' est un contrôleur de périphérique de stockage externe (disque ou mémoire flash). Ce composant IOC est à la fois un initiateur VCI, capable de lire et d'écrire dans la mémoire, et une cible qui peut recevoir des commandes de configuration. Puisque nous sommes en simulation, le composant IOC gère un unique fichier, stocké sur le disque de la station de travail qui exécute le simulateur. Le nom de ce fichier est un argument du constructeur. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciBlockDevice ici].
     35[http://www.soclib.fr/trac/dev/wiki/Component/VciMultiTimer ici].
     36
     37Le composant '''vci_block_device''' est un contrôleur de périphérique de stockage externe (disque ou mémoire flash). Ce composant IOC est à la fois un initiateur VCI, capable de lire et d'écrire dans la mémoire, et une cible qui peut recevoir des commandes de configuration. Puisque nous sommes en simulation, le composant IOC gère un unique fichier, stocké sur le disque de la station de travail qui exécute le simulateur. Le nom de ce fichier est un argument du constructeur. On trouvera la spécification fonctionnelle de ce composant [http://www.soclib.fr/trac/dev/wiki/Component/VciBlockDevice ici].
    3838
    3939Le composant '''vci_frame_buffer''' est un contrôleur d'écran graphique. C'est une cible VCI qui est vue
    4040comme un tampon mémoire directement adressable de M lignes de N pixels, dans lequel le logiciel peut lire ou écrire.
    41 Le contenu de ce buffer est parcouru périodiquement, et son contenu est affiché sur l'écran graphique externe. On trouvera la spécification fonctionnelle de ce composant [https://www.soclib.fr/trac/dev/wiki/Component/VciFrameBuffer ici].
     41Le contenu de ce buffer est parcouru périodiquement, et son contenu est affiché sur l'écran graphique externe. On trouvera la spécification fonctionnelle de ce composant [http://www.soclib.fr/trac/dev/wiki/Component/VciFrameBuffer ici].
    4242
    4343Le composant '''vci_dma''' est un composant matériel qui peut être programmé par le système d'exploitation pour éffectuer
    4444de gros transferts de données, tel que la copie d'une image d'un tampon mémoire situé dans l'espace utilisateur vers le
    45 tampon mémoire du composant FBF. On trouvera la spécification fonctionnelle de ce composant DMA [https://www.soclib.fr/trac/dev/wiki/Component/VciDma ici].
     45tampon mémoire du composant FBF. On trouvera la spécification fonctionnelle de ce composant DMA [http://www.soclib.fr/trac/dev/wiki/Component/VciDma ici].
    4646
    4747Les deux composants IOC et DMA étant à la fois initiateur et cible, on obtient finalement une architecture possédant
     
    203203 * Vous utiliserez une boucle indexée par l'index du processeur pour les constructeurs des composants PROC[i].
    204204
    205  * Chaque processeur a besoin de son propre concentrateur d'interruption. Le composant matériel !VciIcu est un composant mono-canal, qui ne peut servir qu'un seul processeur. Il faut donc utiliser le composant matériel multi-canaux !VciMultiIcu, qui peut servir jusqu'à 8 processeurs. Vous pouvez consulter la documentation [https://www.soclib.fr/trac/dev/wiki/Component/VciMultiIcu ici].
    206 
    207  * De même, pour ce qui concerne le contrôleur DMA, on souhaite avoir un canal DMA indépendant pour chaque processeur. Il faut donc utiliser le composant matériel multi-canaux !VciMultiDma dont vous pouvez consulter la documentation [https://www.soclib.fr/trac/dev/wiki/Component/VciMultiDma ici]. Attention:  Le composant !VciMultiDma utilise le champs VCI TRDID, qui doit avoir au moins 4 bits. Il faudra donc modifier la valeur du champs ''trdid_size'' dans les deux fichier '''tp4_top.cpp''' et '''tp4_top.desc'''.
     205 * Chaque processeur a besoin de son propre concentrateur d'interruption. Le composant matériel !VciIcu est un composant mono-canal, qui ne peut servir qu'un seul processeur. Il faut donc utiliser le composant matériel multi-canaux !VciMultiIcu, qui peut servir jusqu'à 8 processeurs. Vous pouvez consulter la documentation [http://www.soclib.fr/trac/dev/wiki/Component/VciMultiIcu ici].
     206
     207 * De même, pour ce qui concerne le contrôleur DMA, on souhaite avoir un canal DMA indépendant pour chaque processeur. Il faut donc utiliser le composant matériel multi-canaux !VciMultiDma dont vous pouvez consulter la documentation [http://www.soclib.fr/trac/dev/wiki/Component/VciMultiDma ici]. Attention:  Le composant !VciMultiDma utilise le champs VCI TRDID, qui doit avoir au moins 4 bits. Il faudra donc modifier la valeur du champs ''trdid_size'' dans les deux fichier '''tp4_top.cpp''' et '''tp4_top.desc'''.
    208208
    209209 * Pour ce qui concerne les timers, on souhaite avoir un timer indépendant pour chaque processeur, mais puisque le composant !VciTimer peut contenir jusque 256 timers indépendants, on utilisera un seul composant !VciTimer.