Changes between Version 18 and Version 19 of MjpegCourse/Monopro


Ignore:
Timestamp:
Mar 11, 2009, 12:18:53 AM (15 years ago)
Author:
Nicolas Pouillon
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MjpegCourse/Monopro

    v18 v19  
    3434
    3535On se limitera dans ce TP à une architecture ne contenant qu'un seul processeur
    36 programmable de type MIPS R3000. Cette architecture matérielle est
     36programmable de type MIPS32. Cette architecture matérielle est
    3737appelée '!VgmnNoirqMono'.
    3838
     
    6565
    6666Une fois la description de la plateforme complète, nous pouvons la tester en générant
    67 une netlist SystemC  décrivant la ''top-cell''. Créez un fichier contenant:
    68 {{{
    69 #!/usr/bin/env python
    70 
    71 import soclib
    72 from vgmn_noirq_mono import VgmnNoirqMono
    73 
    74 archi = VgmnNoirqMono()
    75 
    76 archi.generate(soclib.PfDriver('hard'))
    77 }}}
    78  * Rendez ce nouveau fichier de description exécutable, lancez-le.
     67une netlist SystemC  décrivant la ''top-cell''.
     68
     69 * Rendez le fichier de description exécutable, lancez-le.
    7970
    8071Si tout se passe bien, vous devriez avoir un nouveau répertoire `hard` dans le répertoire courant.
    81 La description SystemC de la  ''top-cell'' est dans `hard/top_cell.cpp`.
     72La description SystemC de la  ''top-cell'' est dans `hard/topcell.cpp`.
    8273
    8374= 2. Déploiement de l'application SplitMsg =
     
    8778 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg'
    8879 * Recopiez dans ce répertoire la description DSX de l'application !SplitMsg du TP1.
    89  * Recopiez dans ce répertoire la description DSX de vgmn_noirq_mono
     80 * Recopiez dans ce répertoire la description DSX vgmn_noirq_mono.py
    9081 * Modifiez cette description DSX en ajoutant après la description du TGG  l'instanciation de l'architecture matérielle !VgmnNoirqMono.
    9182
     
    9990#########################################################
    10091
    101 from soclib import *
    102 
    10392from vgmn_noirq_mono import VgmnNoirqMono
    10493
     
    112101   Dans cette section, un objet `Mapper` doit être créé.
    113102   Supposons qu'on crée une variable `mapper`,
    114    les objets logiciels doivent être accédés à travers mapper.tcg!['nom'].
    115    Il va falloir placer toutes les tâches, tous les canaux de communication,
    116    tous les objets logiciels associés aux processeurs et enfin les objets globaux du système.
     103   les objets logiciels doivent être identifiés par leur nom.
     104   Il va falloir placer tous les canaux de communication, toutes les tâches,
     105   tous les objets logiciels associés aux processeurs et enfin les objets globaux du système; dans cet ordre.
    117106
    118107{{{
     
    122111#########################################################
    123112
    124 mapper = Mapper(archi, tcg)
     113mapper = dsx.Mapper(archi, tcg)
    125114
    126115# mapping the MWMR channel
    127116
    128 mapper.map( mapper.tcg["fifo"],
     117mapper.map( "fifo",
    129118  buffer  = "cram1",
    130119  status  = "cram1",
     
    133122# mapping the "prod0" and "cons0" tasks
    134123
    135 mapper.map(mapper.tcg["prod0"],
    136    run = "processor",
     124mapper.map("prod0",
     125   run = "cpu0",
    137126   stack   = "cram0",
    138127   desc    = "cram0",
    139128   status  = "uram0")
    140129
    141 mapper.map(mapper.tcg["cons0"],
    142    run = "processor",
     130mapper.map("cons0",
     131   run = "cpu0",
    143132   stack   = "cram0",
    144133   desc    = "cram0",
     
    147136# mapping the software objects associated to a processor
    148137
    149 mapper.map( mapper.hard["processor"],
     138mapper.map( 'cpu0',
    150139  private    = "cram0",
    151140  shared   = "cram0")
     
    168157# Embedded software linked with the Mutek/S OS
    169158
    170 mapper.generate( MutekS() )
     159mapper.generate( dsx.MutekS() )
    171160
    172161# The software application for a POSX workstation can still be generated
    173162
    174 tcg.generate( Posix() )
     163tcg.generate( dsx.Posix() )
    175164
    176165}}}
     
    211200modifier les déclarations des modèles de tâches en conséquence.
    212201
    213 Retournez dans le répertoire mjpeg du TP1, et exécutez la commande  {{{make mrproper}}}
     202Retournez dans le répertoire mjpeg du TP1, et exécutez la commande  {{{./mjpeg -m clean}}}
    214203qui détruit tous les fichiers générés par les différentes compilations effectuées.
    215204Ce ménage est indispensable pour vous éviter de dépasser votre quota d'espace
     
    219208`tg` et `ramdac` pour introduire leurs implémentations matérielles.
    220209Comme ces deux implémentations sont définies dans soclib, la directive
    221 {{{from soclib import *}}} doit être présente avant la description des tâches dans
    222 votre fichier de description.
     210{{{import soclib}}} doit être présente avant la description des tâches dans
     211votre fichier de description de tâche (`.task`).
    223212 * Pour la tâche `tg`, modifiez la déclaration de la tâche pour ajouter l'implémentation matérielle virtuelle (`SyntheticTask`):
    224213{{{
     
    249238            address = 0x94000000 )
    250239}}}
    251    * De même déployez `ramdac` sur la plateforme.
     240   * De même déployez `ramdac` sur la plateforme (à une autre adresse).
    252241 * Relancez la description, recompilez, lancez la simulation.
    253242{{{
    254243$ ./description
    255244$ ./exe.muteks_hard
     245}}}
     246
     247Pour avoir des statistiques, vous pouvez positionner la variable d'environnement `STATS_EVERY` à un nombre de cycles (500000 semble une bonne valeur):
     248{{{
     249$ STATS_EVERY=500000 ./exe.muteks_hard
    256250}}}
    257251
     
    266260L'environnement DSX permet actuellement d'utiliser deux systèmes d'exploitation embarqués.
    267261
    268  * Mutek/S, un noyau "statique" , très performant, mais ne fournissant pas la compatibilité POSIX. En particulier, il ne permet pas la création dynamique de tâches au moment de l'exécution.
    269  * Mutek/H, un noyau fournissant aux applications l'API des threads POSIX (y compris la création dynamique de tâches).
     262 * Mutek/S, un noyau "statique", ne fournissant pas la compatibilité POSIX. En particulier, il ne permet pas la création dynamique de tâches au moment de l'exécution.
     263 * Mutek/H, un noyau fournissant aux applications l'API des threads POSIX (y compris la création dynamique de tâches), permettant d'héberger sur le même système des applications tierces.
    270264
    271265Modifiez la description DSX de l'application MJPEG, pour utiliser l'OS Mutek/H. La section D devient:
    272266{{{
    273 mapper.generate( 'muteks' )
    274 mapper.generate( 'mutekh' )
    275 tcg.generate('posix')
     267mapper.generate( dsx.MutekS() )
     268mapper.generate( dsx.MutekH() )
    276269}}}
    277270
     
    288281
    289282{{{
    290 $ mipsel-unknown-elf-objdump -h bin.muteks
    291 $ mipsel-unknown-elf-objdump -h bin.mutekh
     283$ mipsel-unknown-elf-objdump -h muteks/soft/bin.soft
     284$ mipsel-unknown-elf-objdump -h mutekh/soft/bin.soft
    292285}}}
    293286
     
    320313   (éventuellement mises à jour par rapport à la semaine dernière) vous ayant servi à exécuter les tests de ce TP.
    321314 * Le rapport sera court (une table des matières pour dire que tout est sur la même page est superflue), répondant aux questions
    322    posées dans le texte, nommé `tp2/rapport.pdf`.
    323 
    324 Vous livrerez cette archive avant mardi 26 fevrier 2008, 18h00 à [MailAsim:nipo Nicolas Pouillon].
     315   posées dans le texte, nommé exactement `tp2/rapport.pdf`.
     316
     317Vous livrerez cette archive avant mardi 17 mars 2008, 18h00 à [MailAsim:nipo Nicolas Pouillon].
    325318
    326319= Suite =