Changes between Version 3 and Version 4 of MjpegCourse/Monopro
- Timestamp:
- Feb 19, 2008, 9:34:32 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Monopro
v3 v4 19 19 20 20 La seconde partie du TP vous permettra d'utiliser DSX pour décrire et 21 contrôler précisément le déploiement de l'application logicielle !SplitMsg 22 (TCG décrit avec DSX),sur l'architecture matérielle décrite dans la première23 partie. On validera ce déploiement en simulant l'exécution d >u code binaire24 de l'application logicielle (généré par DSX)sur le modèle SystemC de25 l'architecture matérielle (également généré par DSX).21 contrôler précisément le déploiement de l'application logicielle !SplitMsg, 22 sur l'architecture matérielle décrite dans la première 23 partie. On validera ce déploiement en simulant l'exécution du code binaire 24 de l'application logicielle sur le modèle SystemC de 25 l'architecture matérielle. 26 26 27 27 La troisième partie du TP vous permettra d'atteindre notre véritable but, qui est … … 44 44 la latence du réseau: nombre minimal de cycles pour une traversée du réseau 45 45 "one-way". 46 * Elle comporte un contrôleur de verrous (composant LOCKS), utilisé pour protéger47 l'accès aux canaux de communication MWMR.48 46 * Elle comporte deux contrôleurs mémoire RAM0 et RAM1 49 47 * Elle comporte un contrôleur de terminal TTY. … … 72 70 #!/usr/bin/env python 73 71 72 import soclib 74 73 from vgmn_noirq_mono import VgmnNoirqMono 75 74 76 75 archi = VgmnNoirqMono() 77 76 78 archi.generate(Caba()) 79 }}} 80 * Rendez ce nouveau fichier de description exécutable, lancez-le. Ne réalisez pas la compilation 81 de la plateforme résultante: nous n'avons pas encore de logiciel à exécuter dedans. 77 archi.generate(soclib.PfDriver()) 78 }}} 79 * Rendez ce nouveau fichier de description exécutable, lancez-le. 82 80 83 81 Si tout se passe bien, vous devriez avoir un nouveau répertoire `caba` dans le répertoire courant. 84 La description SystemC de la ''top-cell'' est dans `caba/top.h.new`. DSX alloue automatiquement des adresses aux 85 segments mémoire pour lesquels les adresses de base ne sont pas imposées par l'utilisateur. 86 [[BR]] 87 [[Image(MjpegCourse:q.gif)]] Q2: '''''Visualisez le fichier de "top-cell" pour déterminer les adresses 88 et les tailles des 6 segments de l'espace adressable définis dans cette application.''''' 82 La description SystemC de la ''top-cell'' est dans `hard/top.cpp`. 89 83 90 84 = 2. Déploiement de l'application SplitMsg = … … 92 86 On va commencer par déployer l'application !SplitMsg, qui ne comporte que deux tâches et un canal 93 87 sur notre architecture de SoC monoprocesseur. 94 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg' (Important!)88 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg' 95 89 * Recopiez dans ce répertoire la description DSX de l'application !SplitMsg du TP1. 90 * Recopiez dans ce répertoire la description DSX de vgmn_noirq_mono 96 91 * Modifiez cette description DSX en ajoutant après la description du TGG l'instanciation de l'architecture matérielle !VgmnNoirqMono. 97 92 … … 107 102 from soclib import * 108 103 109 import sys110 sys.path.append("..")111 112 104 from vgmn_noirq_mono import VgmnNoirqMono 113 105 … … 120 112 121 113 Dans cette section, un objet `Mapper` doit être créé. 122 Supposons qu'on crée une variable `mapper`, l'architecture matérielle doit 123 être référencée à travers mapper.hard.''nom'' pour accéder aux composants 124 créés par self.''nom'' dans la description de la plateforme. 125 De même les objets logiciels doivent être accédés à travers mapper.tcg!['nom']. 114 Supposons qu'on crée une variable `mapper`, 115 les objets logiciels doivent être accédés à travers mapper.tcg!['nom']. 126 116 Il va falloir placer toutes les tâches, tous les canaux de communication, 127 117 tous les objets logiciels associés aux processeurs et enfin les objets globaux du système. … … 137 127 # mapping the "prod0" and "cons0" tasks 138 128 139 mapper.map("prod0", 140 run = mapper.hard.processor, 141 stack = mapper.hard.cram0, 142 desc = mapper.hard.cram0, 143 status = mapper.hard.uram0, 144 code = mapper.hard.cram0) 145 146 mapper.map("cons0", 147 run = mapper.hard.processor, 148 stack = mapper.hard.cram0, 149 desc = mapper.hard.cram0, 150 status = mapper.hard.uram0, 151 code = mapper.hard.cram0) 129 mapper.map(mapper.tcg["prod0"], 130 run = "processor", 131 stack = "cram0", 132 desc = "cram0", 133 status = "uram0") 134 135 mapper.map(mapper.tcg["cons0"], 136 run = "processor", 137 stack = "cram0", 138 desc = "cram0", 139 status = "uram0") 152 140 153 141 # mapping the MWMR channel 154 142 155 mapper.map( "fifo", 156 lock = mapper.hard.locks, 157 status = mapper.hard.cram1, 158 desc = mapper.hard.cram1) 143 mapper.map( mapper.tcg["fifo"], 144 status = "cram1", 145 desc = "cram1") 159 146 160 147 # mapping the software objects associated to a processor 161 148 162 mapper.map( "processor",163 desc = mapper.hard.cram0,164 priv = mapper.hard.cram0,165 status = mapper.hard.uram0)149 mapper.map( mapper.platform["processor"], 150 desc = "cram0", 151 priv = "cram0", 152 status = "uram0") 166 153 167 154 # mapping the software objects used by the embedded OS 168 155 169 156 mapper.map(mapper.tcg, 170 desc = mapper.hard.cram1,171 shared = mapper.hard.uram1,172 code = mapper.hard.cram1)157 desc = "cram1", 158 shared = "uram1", 159 code = "cram1") 173 160 }}} 174 161 … … 183 170 # SystemC simulator for the hardware architecture at Cycle Accurate/Bit Accurate abstraction level 184 171 185 muteks = MutekS() 186 simulator = Caba() 187 mapper.generate( muteks, simulator ) 172 mapper.generate( SrlOverHexo() ) 188 173 189 174 # The software application for a POSX workstation can still be generated … … 192 177 tcg.generate(posix) 193 178 194 # Global Makefile generation 195 TopMakefile( muteks, simulator, posix ) 196 }}} 197 198 199 [[Image(MjpegCourse:q.gif)]] Q3: '''''Quels objets logiciels doit-on placer dans 179 }}} 180 181 182 [[Image(MjpegCourse:q.gif)]] Q2: '''''Quels objets logiciels doit-on placer dans 200 183 l'espace addressable pour une tâche ? pour un canal mwmr ? pour un processeur ?''''' 201 184 … … 204 187 $ ./SplitMsg.py 205 188 }}} 206 * Générez le code binaire et le modèle SystemC de l'architecture matérielle.207 {{{208 $ make209 }}}210 211 Une fois la compilation effectuée, visualisez le fichier de "top cell" généré par DSX spécifiquement pour212 ce déploiement. Il se situe dans muteks/caba/top.h. Déterminez les adresses213 et les tailles des 6 segments de l'espace adressable définis dans cette application.[[BR]]214 [[Image(MjpegCourse:q.gif)]] Q4: '''''En quoi diffèrent-ils de ces mêmes segments215 vus à la question 2 ?'''''216 189 217 190 * Executez l'application logicielle sur la station de travail … … 221 194 * Simulez l'exécution de l'application logicielle sur le modèle SystemC du SoC 222 195 {{{ 223 $ ./exe. muteks_caba224 }}} 225 226 [[Image(MjpegCourse:q.gif)]] Q 5: '''''Qu'observez-vous ? En quoi est-ce différent de ce196 $ ./exe.srloverhexo 197 }}} 198 199 [[Image(MjpegCourse:q.gif)]] Q2: '''''Qu'observez-vous ? En quoi est-ce différent de ce 227 200 qui se passe dans la version pour station de travail ?''''' 228 201