Changes between Version 4 and Version 5 of MjpegCourse/Monopro
- Timestamp:
- Feb 19, 2008, 9:43:20 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MjpegCourse/Monopro
v4 v5 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 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 sur le modèle SystemC de25 l'architecture matérielle .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ère 23 partie. On validera ce déploiement en simulant l'exécution d>u code binaire 24 de l'application logicielle (généré par DSX) sur le modèle SystemC de 25 l'architecture matérielle (également généré par DSX). 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éger 47 l'accès aux canaux de communication MWMR. 46 48 * Elle comporte deux contrôleurs mémoire RAM0 et RAM1 47 49 * Elle comporte un contrôleur de terminal TTY. … … 70 72 #!/usr/bin/env python 71 73 72 import soclib73 74 from vgmn_noirq_mono import VgmnNoirqMono 74 75 75 76 archi = VgmnNoirqMono() 76 77 77 archi.generate(soclib.PfDriver()) 78 }}} 79 * Rendez ce nouveau fichier de description exécutable, lancez-le. 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. 80 82 81 83 Si tout se passe bien, vous devriez avoir un nouveau répertoire `caba` dans le répertoire courant. 82 La description SystemC de la ''top-cell'' est dans `hard/top.cpp`. 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.''''' 83 89 84 90 = 2. Déploiement de l'application SplitMsg = … … 86 92 On va commencer par déployer l'application !SplitMsg, qui ne comporte que deux tâches et un canal 87 93 sur notre architecture de SoC monoprocesseur. 88 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg' 94 * Créez dans le répertoire TP2 un sous-répertoire 'splitmsg' (Important!) 89 95 * 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_mono91 96 * Modifiez cette description DSX en ajoutant après la description du TGG l'instanciation de l'architecture matérielle !VgmnNoirqMono. 92 97 … … 102 107 from soclib import * 103 108 109 import sys 110 sys.path.append("..") 111 104 112 from vgmn_noirq_mono import VgmnNoirqMono 105 113 … … 112 120 113 121 Dans cette section, un objet `Mapper` doit être créé. 114 Supposons qu'on crée une variable `mapper`, 115 les objets logiciels doivent être accédés à travers mapper.tcg!['nom']. 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']. 116 126 Il va falloir placer toutes les tâches, tous les canaux de communication, 117 127 tous les objets logiciels associés aux processeurs et enfin les objets globaux du système. … … 127 137 # mapping the "prod0" and "cons0" tasks 128 138 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") 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) 140 152 141 153 # mapping the MWMR channel 142 154 143 mapper.map( mapper.tcg["fifo"], 144 status = "cram1", 145 desc = "cram1") 155 mapper.map( "fifo", 156 lock = mapper.hard.locks, 157 status = mapper.hard.cram1, 158 desc = mapper.hard.cram1) 146 159 147 160 # mapping the software objects associated to a processor 148 161 149 mapper.map( mapper.platform["processor"],150 desc = "cram0",151 priv = "cram0",152 status = "uram0")162 mapper.map("processor", 163 desc = mapper.hard.cram0, 164 priv = mapper.hard.cram0, 165 status = mapper.hard.uram0) 153 166 154 167 # mapping the software objects used by the embedded OS 155 168 156 169 mapper.map(mapper.tcg, 157 desc = "cram1",158 shared = "uram1",159 code = "cram1")170 desc = mapper.hard.cram1, 171 shared = mapper.hard.uram1, 172 code = mapper.hard.cram1) 160 173 }}} 161 174 … … 170 183 # SystemC simulator for the hardware architecture at Cycle Accurate/Bit Accurate abstraction level 171 184 172 mapper.generate( SrlOverHexo() ) 185 muteks = MutekS() 186 simulator = Caba() 187 mapper.generate( muteks, simulator ) 173 188 174 189 # The software application for a POSX workstation can still be generated … … 177 192 tcg.generate(posix) 178 193 179 }}} 180 181 182 [[Image(MjpegCourse:q.gif)]] Q2: '''''Quels objets logiciels doit-on placer dans 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 183 200 l'espace addressable pour une tâche ? pour un canal mwmr ? pour un processeur ?''''' 184 201 … … 187 204 $ ./SplitMsg.py 188 205 }}} 206 * Générez le code binaire et le modèle SystemC de l'architecture matérielle. 207 {{{ 208 $ make 209 }}} 210 211 Une fois la compilation effectuée, visualisez le fichier de "top cell" généré par DSX spécifiquement pour 212 ce déploiement. Il se situe dans muteks/caba/top.h. Déterminez les adresses 213 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 segments 215 vus à la question 2 ?''''' 189 216 190 217 * Executez l'application logicielle sur la station de travail … … 194 221 * Simulez l'exécution de l'application logicielle sur le modèle SystemC du SoC 195 222 {{{ 196 $ ./exe. srloverhexo197 }}} 198 199 [[Image(MjpegCourse:q.gif)]] Q 2: '''''Qu'observez-vous ? En quoi est-ce différent de ce223 $ ./exe.muteks_caba 224 }}} 225 226 [[Image(MjpegCourse:q.gif)]] Q5: '''''Qu'observez-vous ? En quoi est-ce différent de ce 200 227 qui se passe dans la version pour station de travail ?''''' 201 228