Changes between Version 18 and Version 19 of MjpegCourse/Monopro
- Timestamp:
- Mar 11, 2009, 12:18:53 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Monopro
v18 v19 34 34 35 35 On se limitera dans ce TP à une architecture ne contenant qu'un seul processeur 36 programmable de type MIPS R3000. Cette architecture matérielle est36 programmable de type MIPS32. Cette architecture matérielle est 37 37 appelée '!VgmnNoirqMono'. 38 38 … … 65 65 66 66 Une 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. 67 une netlist SystemC décrivant la ''top-cell''. 68 69 * Rendez le fichier de description exécutable, lancez-le. 79 70 80 71 Si 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`.72 La description SystemC de la ''top-cell'' est dans `hard/topcell.cpp`. 82 73 83 74 = 2. Déploiement de l'application SplitMsg = … … 87 78 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg' 88 79 * 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_mono80 * Recopiez dans ce répertoire la description DSX vgmn_noirq_mono.py 90 81 * Modifiez cette description DSX en ajoutant après la description du TGG l'instanciation de l'architecture matérielle !VgmnNoirqMono. 91 82 … … 99 90 ######################################################### 100 91 101 from soclib import *102 103 92 from vgmn_noirq_mono import VgmnNoirqMono 104 93 … … 112 101 Dans cette section, un objet `Mapper` doit être créé. 113 102 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 tou tes 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. 117 106 118 107 {{{ … … 122 111 ######################################################### 123 112 124 mapper = Mapper(archi, tcg)113 mapper = dsx.Mapper(archi, tcg) 125 114 126 115 # mapping the MWMR channel 127 116 128 mapper.map( mapper.tcg["fifo"],117 mapper.map( "fifo", 129 118 buffer = "cram1", 130 119 status = "cram1", … … 133 122 # mapping the "prod0" and "cons0" tasks 134 123 135 mapper.map( mapper.tcg["prod0"],136 run = " processor",124 mapper.map("prod0", 125 run = "cpu0", 137 126 stack = "cram0", 138 127 desc = "cram0", 139 128 status = "uram0") 140 129 141 mapper.map( mapper.tcg["cons0"],142 run = " processor",130 mapper.map("cons0", 131 run = "cpu0", 143 132 stack = "cram0", 144 133 desc = "cram0", … … 147 136 # mapping the software objects associated to a processor 148 137 149 mapper.map( mapper.hard["processor"],138 mapper.map( 'cpu0', 150 139 private = "cram0", 151 140 shared = "cram0") … … 168 157 # Embedded software linked with the Mutek/S OS 169 158 170 mapper.generate( MutekS() )159 mapper.generate( dsx.MutekS() ) 171 160 172 161 # The software application for a POSX workstation can still be generated 173 162 174 tcg.generate( Posix() )163 tcg.generate( dsx.Posix() ) 175 164 176 165 }}} … … 211 200 modifier les déclarations des modèles de tâches en conséquence. 212 201 213 Retournez dans le répertoire mjpeg du TP1, et exécutez la commande {{{ make mrproper}}}202 Retournez dans le répertoire mjpeg du TP1, et exécutez la commande {{{./mjpeg -m clean}}} 214 203 qui détruit tous les fichiers générés par les différentes compilations effectuées. 215 204 Ce ménage est indispensable pour vous éviter de dépasser votre quota d'espace … … 219 208 `tg` et `ramdac` pour introduire leurs implémentations matérielles. 220 209 Comme 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 dans222 votre fichier de description .210 {{{import soclib}}} doit être présente avant la description des tâches dans 211 votre fichier de description de tâche (`.task`). 223 212 * Pour la tâche `tg`, modifiez la déclaration de la tâche pour ajouter l'implémentation matérielle virtuelle (`SyntheticTask`): 224 213 {{{ … … 249 238 address = 0x94000000 ) 250 239 }}} 251 * De même déployez `ramdac` sur la plateforme .240 * De même déployez `ramdac` sur la plateforme (à une autre adresse). 252 241 * Relancez la description, recompilez, lancez la simulation. 253 242 {{{ 254 243 $ ./description 255 244 $ ./exe.muteks_hard 245 }}} 246 247 Pour 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 256 250 }}} 257 251 … … 266 260 L'environnement DSX permet actuellement d'utiliser deux systèmes d'exploitation embarqués. 267 261 268 * Mutek/S, un noyau "statique" , très performant, maisne 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. 270 264 271 265 Modifiez la description DSX de l'application MJPEG, pour utiliser l'OS Mutek/H. La section D devient: 272 266 {{{ 273 mapper.generate( 'muteks' ) 274 mapper.generate( 'mutekh' ) 275 tcg.generate('posix') 267 mapper.generate( dsx.MutekS() ) 268 mapper.generate( dsx.MutekH() ) 276 269 }}} 277 270 … … 288 281 289 282 {{{ 290 $ mipsel-unknown-elf-objdump -h bin.muteks291 $ mipsel-unknown-elf-objdump -h bin.mutekh283 $ mipsel-unknown-elf-objdump -h muteks/soft/bin.soft 284 $ mipsel-unknown-elf-objdump -h mutekh/soft/bin.soft 292 285 }}} 293 286 … … 320 313 (éventuellement mises à jour par rapport à la semaine dernière) vous ayant servi à exécuter les tests de ce TP. 321 314 * 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 fevrier2008, 18h00 à [MailAsim:nipo Nicolas Pouillon].315 posées dans le texte, nommé exactement `tp2/rapport.pdf`. 316 317 Vous livrerez cette archive avant mardi 17 mars 2008, 18h00 à [MailAsim:nipo Nicolas Pouillon]. 325 318 326 319 = Suite =