source: soft/giet_vm/4c_1p_four.xml @ 208

Last change on this file since 208 was 208, checked in by alain, 12 years ago

Introducing two mappings, for tsarv4_generic_mmu (4 clusters),
and caba_vgsb_xicu_mmu (mono cluster)

File size: 15.3 KB
Line 
1<?xml version="1.0"?>
2
3<mapping_info signature = "0xdeadbeef" name = "C4_P1_FOUR" clusters = "4" vspaces = "4" >
4
5    <clusterset>
6
7        <cluster index = "0" >
8
9            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x00000000" length = "0x00C00000" />
10            <pseg name = "PSEG_ICU" type = "PERI" base = "0x00F00000" length = "0x00001000" />
11            <pseg name = "PSEG_DMA" type = "PERI" base = "0x00F30000" length = "0x00008000" />
12
13            <proc index = "0" >
14                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
15                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
16            </proc>
17
18            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" />
19
20        </cluster>
21        <cluster index = "1" >
22
23            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x40000000" length = "0x00C00000" />
24            <pseg name = "PSEG_ICU" type = "PERI" base = "0x40F00000" length = "0x00001000" />
25            <pseg name = "PSEG_DMA" type = "PERI" base = "0x40F30000" length = "0x00008000" />
26
27            <proc index = "0" >
28                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" />
29                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" />
30            </proc>
31
32            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" />
33
34        </cluster>
35        <cluster index = "2" >
36
37            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x80000000" length = "0x00C00000" /> 
38            <pseg name = "PSEG_ICU" type = "PERI" base = "0x80F00000" length = "0x00001000" />
39            <pseg name = "PSEG_DMA" type = "PERI" base = "0x80F30000" length = "0x00008000" />
40
41*** Boot ROM and non replicated peripherals
42
43            <pseg name = "PSEG_FBF" type = "PERI" base = "0x80D00000" length = "0x00200000" /> 
44            <pseg name = "PSEG_TTY" type = "PERI" base = "0x80F20000" length = "0x00001000" /> 
45            <pseg name = "PSEG_IOC" type = "PERI" base = "0x80F10000" length = "0x00001000" /> 
46            <pseg name = "PSEG_NIC" type = "PERI" base = "0x80F80000" length = "0x00021000" />
47            <pseg name = "PSEG_ROM" type = "ROM"  base = "0xBFC00000" length = "0x00100000" />
48
49            <proc index  = "0" >
50                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" /> 
51                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" /> 
52                <irq type = "HARD" icuid = "16" isr = "ISR_TTY" channel = "0" /> 
53                <irq type = "HARD" icuid = "17" isr = "ISR_TTY" channel = "1" /> 
54                <irq type = "HARD" icuid = "18" isr = "ISR_TTY" channel = "2" /> 
55                <irq type = "HARD" icuid = "19" isr = "ISR_TTY" channel = "3" /> 
56                <irq type = "HARD" icuid = "20" isr = "ISR_TTY" channel = "4" /> 
57                <irq type = "HARD" icuid = "21" isr = "ISR_TTY" channel = "5" /> 
58                <irq type = "HARD" icuid = "22" isr = "ISR_TTY" channel = "6" /> 
59                <irq type = "HARD" icuid = "23" isr = "ISR_TTY" channel = "7" /> 
60                <irq type = "HARD" icuid = "24" isr = "ISR_TTY" channel = "8" /> 
61                <irq type = "HARD" icuid = "25" isr = "ISR_TTY" channel = "9" />
62                <irq type = "HARD" icuid = "26" isr = "ISR_TTY" channel = "10" /> 
63                <irq type = "HARD" icuid = "27" isr = "ISR_TTY" channel = "11" /> 
64                <irq type = "HARD" icuid = "28" isr = "ISR_TTY" channel = "12" /> 
65                <irq type = "HARD" icuid = "29" isr = "ISR_TTY" channel = "13" /> 
66                <irq type = "HARD" icuid = "30" isr = "ISR_TTY" channel = "14" /> 
67                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" /> 
68            </proc> 
69
70            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" /> 
71            <periph type = "IOC" psegname = "PSEG_IOC" channels = "1" /> 
72            <periph type = "TTY" psegname = "PSEG_TTY" channels = "8" /> 
73            <periph type = "NIC" psegname = "PSEG_NIC" channels = "8" />
74            <periph type = "FBF" psegname = "PSEG_FBF" />
75
76        </cluster>
77        <cluster index = "3" >
78
79            <pseg name = "PSEG_RAM" type = "RAM"  base = "0xC0000000" length = "0x00C00000" />
80            <pseg name = "PSEG_ICU" type = "PERI" base = "0xC0F00000" length = "0x00001000" />
81            <pseg name = "PSEG_DMA" type = "PERI" base = "0xC0F30000" length = "0x00008000" />
82
83            <proc index = "0" >
84                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
85                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
86            </proc>
87
88            <periph  type = "DMA" psegname  = "PSEG_DMA" channels = "1" />
89        </cluster>
90    </clusterset>
91
92    <globalset> 
93        <vseg name = "seg_boot_code"      vbase = "0xbfc00000" mode = "CXW_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
94            <vobj name = "boot_code"      type = "ELF" length = "0x00008000" binpath    = "build/boot/boot.elf" />
95        </vseg>
96        <vseg name = "seg_boot_stack"     vbase = "0xbfc08000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
97            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00004000" />
98        </vseg>
99        <vseg name = "seg_boot_mapping"   vbase = "0xbfc0c000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
100            <vobj name = "boot_mapping"   type = "BLOB" length  = "0x00004000" binpath  = "map.bin" />
101        </vseg>
102
103*** On voudrait répliquer le segment de code du systÚme (seg_kernel_code) dans tous les clusters...
104 
105        <vseg name = "seg_kernel_code"    vbase = "0x80000000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
106            <vobj name = "kernel_code"    type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
107        </vseg>
108        <vseg name = "seg_kernel_data"    vbase = "0x80010000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" > 
109            <vobj name = "kernel_data"    type = "ELF" length = "0x00040000" binpath = "build/sys/sys.elf" />
110                </vseg>
111        <vseg name = "seg_kernel_uncdata" vbase = "0x80080000" mode = "__W_" clusterid = "0" psegname = "PSEG_RAM" > 
112            <vobj name = "kernel_uncdata" type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
113        </vseg>
114        <vseg name = "seg_kernel_init"    vbase = "0x80090000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
115            <vobj name  = "kernel_init"   type = "ELF" length = "0x00010000" binpath    = "build/sys/sys.elf" />
116        </vseg>
117
118*** Non replicated peripherals
119
120        <vseg name = "seg_ioc"            vbase = "0x80F10000" mode = "__W_" clusterid = "2" psegname = "PSEG_IOC" ident = "1" >
121            <vobj name = "ioc"            type = "PERI" length  = "0x00001000" /> 
122        </vseg>
123        <vseg name = "seg_tty"            vbase = "0x80F20000" mode = "__W_" clusterid = "2" psegname = "PSEG_TTY" ident = "1" >
124                        <vobj name = "tty"            type = "PERI" length  = "0x00001000" />
125        </vseg>
126        <vseg name = "seg_fbf"            vbase = "0x80D00000" mode = "__W_" clusterid = "2" psegname = "PSEG_FBF" ident = "1" >
127            <vobj name = "fbf"            type = "PERI" length  = "0x00200000" /> 
128        </vseg>
129        <vseg name = "seg_nic"            vbase = "0x80f80000" mode = "__W_" clusterid = "2" psegname = "PSEG_NIC" ident = "1" >
130            <vobj name = "nic"            type = "PERI" length  = "0x00021000" /> 
131        </vseg>
132
133*** On pourrait supprimer les vsegs associés aux composants XICU en les traitant comme les schedulers :
134*** accÚs en addresse physique et stockage de l'adresse de base de chaque XICU dans chaque processeur.
135*** On peut aussi définir un vseg factorisé en introduisant le CLUSTER_SIZE...
136
137        <vseg name = "seg_icu_0"          vbase = "0x00F00000" mode = "__W_" clusterid = "0" psegname = "PSEG_ICU" > 
138            <vobj name = "icu_0"          type = "PERI" length  = "0x00001000" /> 
139        </vseg>
140        <vseg name = "seg_icu_1"          vbase = "0x40F00000" mode = "__W_" clusterid = "1" psegname = "PSEG_ICU" > 
141            <vobj name = "icu_1"          type = "PERI" length  = "0x00001000" /> 
142        </vseg>
143        <vseg name = "seg_icu_2"          vbase = "0x80F00000" mode = "__W_" clusterid = "2" psegname = "PSEG_ICU" > 
144            <vobj name = "icu_2"          type = "PERI" length  = "0x00001000" /> 
145        </vseg>
146        <vseg name = "seg_icu_3"          vbase = "0xC0F00000" mode = "__W_" clusterid = "3" psegname = "PSEG_ICU" > 
147            <vobj name = "icu_3"          type = "PERI" length  = "0x00001000" /> 
148        </vseg>
149
150*** Il faudrait trouver un moyen de supprimer les vsegs associés aux composants DMA distribués, ou de les factoriser...
151
152        <vseg name = "seg_dma_0"          vbase = "0x00F30000" mode = "__W_" clusterid = "0" psegname = "PSEG_DMA" >
153            <vobj name = "dma_0"          type = "PERI" length  = "0x00008000" />
154        </vseg>
155        <vseg name = "seg_dma_1"          vbase = "0x40F30000" mode = "__W_" clusterid = "1" psegname = "PSEG_DMA" >
156            <vobj name = "dma_1"          type = "PERI" length  = "0x00008000" />
157        </vseg>
158        <vseg name = "seg_dma_2"          vbase = "0x80F30000" mode = "__W_" clusterid = "2" psegname = "PSEG_DMA" >
159            <vobj name = "dma_2"          type = "PERI" length  = "0x00008000" />
160        </vseg>
161        <vseg name = "seg_dma_3"          vbase = "0xC0F30000" mode = "__W_" clusterid = "3" psegname = "PSEG_DMA" >
162            <vobj name = "dma_3"          type = "PERI" length  = "0x00008000" />
163        </vseg>
164***
165    </globalset> 
166
167    <vspaceset>
168        <vspace name = "router" startname = "data" > 
169            <vseg name = "seg_data"        vbase = "0x00800000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" >
170                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" />
171            </vseg>
172            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname = "PSEG_RAM" > 
173                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" /> 
174            </vseg>
175            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "0" psegname = "PSEG_RAM" > 
176                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
177            </vseg>
178            <vseg name = "seg_stack_prod"  vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname = "PSEG_RAM" >
179                <vobj name = "stack_prod"  type = "BUFFER" length = "0x00010000" /> 
180            </vseg>
181            <vseg name = "seg_stack_cons"  vbase = "0x00020000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" > 
182                <vobj name = "stack_cons"  type = "BUFFER" length = "0x00010000" />
183            </vseg>
184            <vseg name = "seg_stack_routA" vbase = "0x00030000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" > 
185                <vobj name = "stack_routA" type = "BUFFER" length = "0x00010000" />
186            </vseg>
187            <vseg name = "seg_stack_routB" vbase = "0x00040000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" > 
188                <vobj name = "stack_routB" type = "BUFFER" length = "0x00010000" />
189            </vseg>
190            <vseg name = "seg_mwmrs"       vbase = "0x00050000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" > 
191                <vobj name = "mwmr_in"     type = "MWMR" length = "0x00000020" init = "1" />
192                <vobj name = "mwmr_out"    type = "MWMR" length = "0x00000020" init = "1" />
193                    </vseg>
194
195            <task name = "producer" clusterid = "0" proclocid = "0" stackname = "stack_prod"  startid = "0" usetty = "1" />
196            <task name = "consumer" clusterid = "1" proclocid = "0" stackname = "stack_cons"  startid = "1" usetty = "1" />
197            <task name = "router_A" clusterid = "2" proclocid = "0" stackname = "stack_routA" startid = "2" usetty = "1" />
198            <task name = "router_B" clusterid = "3" proclocid = "0" stackname = "stack_routB" startid = "2" usetty = "1" />
199        </vspace>
200
201        <vspace name = "hello" startname = "data" >
202            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
203                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
204            </vseg>
205            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "1" psegname = "PSEG_RAM" > 
206                <vobj name = "code"            type     = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
207            </vseg>
208            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "1" psegname = "PSEG_RAM" >
209                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" /> 
210            </vseg>
211            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
212                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
213            </vseg>
214
215            <task name = "main_hello" clusterid = "1" proclocid = "0" stackname = "stack" startid = "0" usetty = "1" />
216        </vspace>
217
218        <vspace name = "pgcd" startname = "data" >
219            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
220                <vobj name      = "data"       type     = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
221            </vseg>
222            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "2" psegname = "PSEG_RAM" >
223                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" />
224            </vseg>
225            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "2" psegname = "PSEG_RAM" >
226                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
227            </vseg>
228            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
229                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" /> 
230            </vseg>
231
232            <task name = "main_pgcd" clusterid = "2" proclocid = "0" stackname = "stack" startid = "0" usetty = "1" />
233        </vspace>
234
235        <vspace name = "display" startname = "data" >
236            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
237                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
238                        </vseg>
239            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "3" psegname = "PSEG_RAM" >
240                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
241            </vseg>
242            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "3" psegname = "PSEG_RAM" >
243                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
244            </vseg>
245            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
246                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
247            </vseg>
248
249            <task name = "main_display" clusterid = "3" proclocid = "0" stackname = "stack" startid = "0" usetty = "1" usefbdma = "1" />
250        </vspace>
251    </vspaceset>
252</mapping_info>
Note: See TracBrowser for help on using the repository browser.