source: soft/giet_vm/mappings/1c_4p_four.xml @ 232

Last change on this file since 232 was 232, checked in by meunier, 11 years ago

Ajout du malloc dans le Giet.

File size: 14.9 KB
Line 
1<?xml version="1.0"?>
2
3<mapping_info   signature = "0xdeadbeef" name = "1c_4p_four" cluster_x = "1" cluster_y = "1" vspaces  = "4" >
4
5*** This section describes an instance of the "caba_vgsb_xicu_mmu" generic architecture
6*** containing 4 processors in one single cluster.
7
8    <clusterset>
9        <cluster index  = "0" >
10
11*** RAM, ROM and Peripherals used in the hardware architecture
12
13            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x00000000" length = "0x00C00000" />
14            <pseg name = "PSEG_ROM" type = "ROM"  base = "0xBFC00000" length = "0x00010000" /> 
15            <pseg name = "PSEG_FBF" type = "PERI" base = "0x00D00000" length = "0x00200000" /> 
16            <pseg name = "PSEG_ICU" type = "PERI" base = "0x00F00000" length = "0x00001000" /> 
17            <pseg name = "PSEG_IOC" type = "PERI" base = "0x00F10000" length = "0x00001000" /> 
18            <pseg name = "PSEG_TTY" type = "PERI" base = "0x00F20000" length = "0x00001000" /> 
19            <pseg name = "PSEG_DMA" type = "PERI" base = "0x00F30000" length = "0x00008000" /> 
20            <pseg name = "PSEG_NIC" type = "PERI" base = "0x00F80000" length = "0x00021000" /> 
21             
22*** Peripherals unused in the hardware architecture
23
24            <pseg name = "PSEG_TIM" type = "PERI" base = "0x00F40000" length = "0x00001000" /> 
25            <pseg name = "PSEG_GCD" type = "PERI" base = "0x00F50000" length = "0x00001000" /> 
26            <pseg name = "PSEG_COP" type = "PERI" base = "0x00F60000" length = "0x00001000" /> 
27            <pseg name = "PSEG_IOB" type = "PERI" base = "0x00FF0000" length = "0x00001000" /> 
28
29            <proc index = "0" >
30                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" /> 
31                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" /> 
32                <irq type = "HARD" icuid = "9"  isr = "ISR_DMA" channel = "1" /> 
33                <irq type = "HARD" icuid = "10" isr = "ISR_DMA" channel = "2" /> 
34                <irq type = "HARD" icuid = "11" isr = "ISR_DMA" channel = "3" /> 
35                <irq type = "HARD" icuid = "12" isr = "ISR_DMA" channel = "4" /> 
36                <irq type = "HARD" icuid = "13" isr = "ISR_DMA" channel = "5" /> 
37                <irq type = "HARD" icuid = "14" isr = "ISR_DMA" channel = "6" /> 
38                <irq type = "HARD" icuid = "15" isr = "ISR_DMA" channel = "7" /> 
39                <irq type = "HARD" icuid = "16" isr = "ISR_TTY" channel = "0" /> 
40                <irq type = "HARD" icuid = "17" isr = "ISR_TTY" channel = "1" /> 
41                <irq type = "HARD" icuid = "18" isr = "ISR_TTY" channel = "2" /> 
42                <irq type = "HARD" icuid = "19" isr = "ISR_TTY" channel = "3" /> 
43                <irq type = "HARD" icuid = "20" isr = "ISR_TTY" channel = "4" /> 
44                <irq type = "HARD" icuid = "21" isr = "ISR_TTY" channel = "5" /> 
45                <irq type = "HARD" icuid = "22" isr = "ISR_TTY" channel = "6" /> 
46                <irq type = "HARD" icuid = "23" isr = "ISR_TTY" channel = "7" /> 
47                <irq type = "HARD" icuid = "24" isr = "ISR_TTY" channel = "8" /> 
48                <irq type = "HARD" icuid = "25" isr = "ISR_TTY" channel = "9" /> 
49                <irq type = "HARD" icuid = "26" isr = "ISR_TTY" channel = "10" /> 
50                <irq type = "HARD" icuid = "27" isr = "ISR_TTY" channel = "11" /> 
51                <irq type = "HARD" icuid = "28" isr = "ISR_TTY" channel = "12" /> 
52                <irq type = "HARD" icuid = "29" isr = "ISR_TTY" channel = "13" /> 
53                <irq type = "HARD" icuid = "30" isr = "ISR_TTY" channel = "14" /> 
54                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" /> 
55            </proc>
56
57            <proc index = "1" >
58                <irq type = "HARD" icuid = "1" isr = "ISR_SWITCH" />
59            </proc>
60
61            <proc index = "2" >
62                <irq type = "HARD" icuid = "2" isr = "ISR_SWITCH" />
63            </proc>
64
65            <proc    index  = "3" >
66                <irq type = "HARD" icuid = "3" isr = "ISR_SWITCH" />
67            </proc>
68
69            <periph type = "IOC" psegname = "PSEG_IOC" channels  = "1" /> 
70            <periph type = "NIC" psegname = "PSEG_NIC" channels  = "8" /> 
71            <periph type = "TTY" psegname = "PSEG_TTY" channels  = "8" /> 
72            <periph type = "DMA" psegname = "PSEG_DMA" channels  = "1" /> 
73            <periph type = "TIM" psegname = "PSEG_TIM" channels  = "4" /> 
74            <periph type = "XICU" psegname = "PSEG_ICU" channels  = "5" /> 
75            <periph type = "FBF" psegname = "PSEG_FBF" /> 
76
77        </cluster>
78    </clusterset>
79
80    <globalset> 
81
82*** Global vsegs used in the boot phase
83
84        <vseg name = "seg_boot_code"    vbase = "0xBFC00000" mode = "CXW_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" >
85            <vobj name = "boot_code"    type = "ELF" length  = "0x00010000" binpath = "build/boot/boot.elf" />
86        </vseg>
87        <vseg name = "seg_boot_stack"   vbase = "0xBFC08000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" > 
88            <vobj name = "boot_stack"   type = "BUFFER" length  = "0x00004000" />
89        </vseg>
90        <vseg name = "seg_boot_mapping" vbase = "0xBFC0c000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" > 
91            <vobj name = "boot_mapping" type = "BLOB" length  = "0x00004000" binpath    = "map.bin" />
92        </vseg>
93
94*** Global vsegs used by the kernel
95
96        <vseg name = "seg_kernel_code"  vbase = "0x80000000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
97            <vobj name = "kernel_code"  type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
98        </vseg>
99        <vseg name = "seg_kernel_data"  vbase = "0x80010000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" > 
100            <vobj name = "kernel_data"  type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
101        </vseg>
102        <vseg name = "seg_kernel_unc"   vbase = "0x80080000" mode = "__W_" clusterid = "0" psegname = "PSEG_RAM" > 
103            <vobj name = "kernel_unc"   type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
104        </vseg>
105        <vseg name = "seg_kernel_init"  vbase = "0x80090000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
106            <vobj name = "kernel_init"  type = "ELF" length  = "0x00100000" binpath     = "build/sys/sys.elf" />
107        </vseg>
108
109*** Frame buffer (up to 2 Mbytes)
110
111        <vseg name = "seg_fbf"          vbase = "0x00D00000" mode = "__W_" clusterid = "0" psegname = "PSEG_FBF" ident = "1" > 
112            <vobj name = "fbf"          type = "PERI" length  = "0x00200000" /> 
113        </vseg>
114
115*** Peripherals (4 Kbytes per peripheral / 4 Kbytes per channel for the DMA / 16 Kbytes per channel + 4Kbytes for NIC
116
117        <vseg name = "seg_icu"          vbase = "0x00F00000" mode = "__W_" clusterid = "0" psegname = "PSEG_ICU" ident = "1" > 
118            <vobj name = "icu"          type = "PERI" length  = "0x00001000" /> 
119        </vseg>
120        <vseg name = "seg_ioc"          vbase = "0x00F10000" mode = "__W_" clusterid = "0" psegname = "PSEG_IOC" ident = "1" > 
121            <vobj name = "ioc"          type = "PERI" length  = "0x00001000" /> 
122        </vseg>
123        <vseg name = "seg_tty"          vbase = "0x00F20000" mode = "__W_" clusterid = "0" psegname = "PSEG_TTY" ident = "1" > 
124            <vobj name = "tty"          type = "PERI" length  = "0x00001000" />
125        </vseg>
126        <vseg name = "seg_dma"          vbase = "0x00F30000" mode = "__W_" clusterid = "0" psegname = "PSEG_DMA" ident = "1" > 
127            <vobj name = "dma"          type = "PERI" length  = "0x00008000" /> 
128        </vseg>
129        <vseg name = "seg_tim"          vbase = "0x00F40000" mode = "__W_" clusterid = "0" psegname = "PSEG_TIM" ident = "1" > 
130            <vobj name = "tim"          type = "PERI" length  = "0x00001000" />
131        </vseg>
132        <vseg name = "seg_gcd"          vbase = "0x00F50000" mode = "__W_" clusterid = "0" psegname = "PSEG_GCD" ident = "1" > 
133            <vobj name = "gcd"          type = "PERI" length  = "0x00001000" />
134        </vseg>
135        <vseg name = "seg_iob"          vbase = "0x00FF0000" mode = "__W_" clusterid = "0" psegname = "PSEG_IOB" ident = "1" > 
136            <vobj name = "iob"          type = "PERI" length  = "0x00001000" />
137        </vseg>
138        <vseg name = "seg_nic"          vbase = "0x00FA0000" mode = "__W_" clusterid = "0" psegname = "PSEG_NIC" ident = "1" > 
139            <vobj name = "nic"          type = "PERI" length  = "0x00001000" />
140        </vseg>
141
142    </globalset> 
143
144    <vspaceset>
145
146        <vspace name = "router" startname = "data" >
147
148            <vseg name = "seg_data"     vbase = "0x00800000" mode = "__WU" clusterid = "0" psegname  = "PSEG_RAM" > 
149                <vobj name = "data"     type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" /> 
150            </vseg>
151            <vseg name = "seg_code"     vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname  = "PSEG_RAM" > 
152                <vobj name = "code"     type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" /> 
153            </vseg>
154            <vseg name = "seg_ptab"     vbase = "0x00300000" mode = "C___" clusterid = "0" psegname  = "PSEG_RAM" > 
155                <vobj name = "ptab"     type = "PTAB" length = "0x00012000" align   = "13" /> 
156            </vseg>
157            <vseg name = "seg_stack_p"  vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
158                <vobj name = "stack_p"  type = "BUFFER" length = "0x00010000" />
159                <vobj name = "heap_p"   type = "BUFFER" length = "0x00010000" />
160                           </vseg>
161            <vseg name = "seg_stack_c"  vbase = "0x00030000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" >
162                <vobj name = "stack_c"  type = "BUFFER" length = "0x00010000" />
163                <vobj name = "heap_c"   type = "BUFFER" length = "0x00010000" />
164                                                </vseg>
165            <vseg name = "seg_stack_rA" vbase = "0x00050000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" >
166                <vobj name = "stack_rA" type = "BUFFER" length = "0x00010000" /> 
167                <vobj name = "heap_rA"  type = "BUFFER" length = "0x00010000" />
168            </vseg>
169            <vseg name = "seg_stack_rB" vbase = "0x00070000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" >
170                <vobj name = "stack_rB" type = "BUFFER" length  = "0x00010000" /> 
171                <vobj name = "heap_rB"  type = "BUFFER" length = "0x00010000" />
172            </vseg>
173            <vseg name = "seg_mwmrs"    vbase = "0x00090000" mode = "__WU" clusterid = "0" psegname  = "PSEG_RAM" >
174                <vobj name = "mwmr_in"  type = "MWMR" length = "0x00000020" init = "1" />
175                <vobj name = "mwmr_out" type = "MWMR" length = "0x00000020" init = "1" />
176            </vseg>
177
178            <task name = "producer" clusterid = "0" proclocid = "0" stackname = "stack_p"  heapname = "heap_p"  startid = "0" usetty = "1" />
179            <task name = "consumer" clusterid = "0" proclocid = "1" stackname = "stack_c"  heapname = "heap_c"  startid = "1" usetty = "1" />
180            <task name = "router_A" clusterid = "0" proclocid = "2" stackname = "stack_rA" heapname = "heap_rA" startid = "2" usetty = "1" />
181            <task name = "router_B" clusterid = "0" proclocid = "3" stackname = "stack_rB" heapname = "heap_rB" startid = "2" usetty = "1" />
182
183        </vspace>
184
185        <vspace name = "hello" startname = "data" >
186
187            <vseg name = "seg_data"     vbase = "0x00800000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
188                <vobj name = "data"     type = "ELF" length    = "0x00010000" binpath = "build/hello/hello.elf" />
189            </vseg>
190            <vseg name = "seg_code"     vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname  = "PSEG_RAM" > 
191                <vobj name = "code"     type = "ELF" length    = "0x00010000" binpath = "build/hello/hello.elf" />
192            </vseg>
193            <vseg name = "seg_ptab"     vbase = "0x00300000" mode = "C___" clusterid = "0" psegname  = "PSEG_RAM" > 
194                <vobj name = "ptab"     type = "PTAB" length   = "0x00012000" align   = "13" />
195            </vseg>
196            <vseg name = "seg_stack"    vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
197                <vobj name = "stack"    type = "BUFFER" length  = "0x00010000" />
198            </vseg>
199
200*** allocate NIC channel 2 => base = 0x00F80000 / offset = 0x8000
201
202            <vseg name = "seg_nic_2"    vbase = "0x00F88000" mode = "__WU" clusterid = "0" psegname  = "PSEG_NIC" ident = "1" >
203                <vobj name = "nic_2"    type = "BUFFER" length  = "0x00004000" />
204            </vseg>
205
206            <task name = "main" clusterid = "0" proclocid = "2" stackname = "stack" startid = "0" usetty = "1" />
207        </vspace>
208
209        <vspace name = "pgcd" startname = "data" >
210
211            <vseg name = "seg_data"     vbase = "0x00800000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
212                <vobj name = "data"     type = "ELF" length    = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
213            </vseg>
214            <vseg name = "seg_code"     vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname  = "PSEG_RAM" > 
215                <vobj name = "code"     type = "ELF" length    = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
216            </vseg>
217            <vseg name = "seg_ptab"     vbase = "0x00300000" mode = "C___" clusterid = "0" psegname  = "PSEG_RAM" > 
218                <vobj name = "ptab"     type = "PTAB" length   = "0x00012000" align   = "13" />
219            </vseg>
220            <vseg name = "seg_stack"    vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
221                <vobj name = "stack"    type = "BUFFER" length  = "0x00010000" />
222            </vseg>
223
224            <task name = "main" clusterid = "0" proclocid = "3" stackname = "stack" startid = "0" usetty = "1" />
225        </vspace>
226
227        <vspace name = "display" startname = "data" >
228
229            <vseg name = "seg_data"     vbase = "0x00800000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
230                <vobj name = "data"     type = "ELF" length    = "0x00010000" binpath = "build/display/display.elf" />
231            </vseg>
232            <vseg name = "seg_code"     vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname  = "PSEG_RAM" > 
233                <vobj name = "code"     type = "ELF" length    = "0x00010000" binpath = "build/display/display.elf" />
234            </vseg>
235            <vseg name = "seg_ptab"     vbase = "0x00300000" mode = "C___" clusterid = "0" psegname  = "PSEG_RAM" > 
236                <vobj name = "ptab"     type = "PTAB" length   = "0x00012000" align   = "13" />
237            </vseg>
238            <vseg name = "seg_stack"    vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname  = "PSEG_RAM" > 
239                <vobj name = "stack"    type = "BUFFER" length  = "0x00010000" />
240            </vseg>
241
242            <task name = "main" clusterid = "0" proclocid = "3" stackname = "stack" startid = "0" usetty = "1" usefbdma = "1" />
243        </vspace>
244
245    </vspaceset>
246</mapping_info>
Note: See TracBrowser for help on using the repository browser.