source: soft/giet_vm/mappings/4c_1p_40.xml @ 238

Last change on this file since 238 was 238, checked in by alain, 11 years ago

Major evolution to support physical addresses larger than 32 bits.
The map.xml format has been modified: the vsegs associated to schedulers
are now explicitely defined and mapped in the page tables.

File size: 17.4 KB
Line 
1<?xml version="1.0"?>
2
3<mapping_info signature    = "0xdeadbeef" 
4              name         = "4c_1p_40" 
5              cluster_x    = "2" 
6              cluster_y    = "2" 
7              vspaces      = "4">
8
9*** This first section describes an instance of the "tsar_generic_xbar" architecture
10*** with 4 clusters, 1 processor per cluster and 40 bits physical address.
11
12    <clusterset>
13
14        <cluster index = "0" >
15            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x0000000000" length = "0x0010000000" />
16            <pseg name = "PSEG_XICU" type = "PERI" base = "0x00B0000000" length = "0x0000002000" />
17            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x00B1000000" length = "0x0000008000" />
18
19*** Boot ROM and non replicated peripherals
20
21            <pseg name = "PSEG_FBF"  type = "PERI" base = "0x00B2000000" length = "0x0000004000" /> 
22            <pseg name = "PSEG_IOC"  type = "PERI" base = "0x00B3000000" length = "0x0000001000" /> 
23            <pseg name = "PSEG_TTY"  type = "PERI" base = "0x00B4000000" length = "0x0000001000" /> 
24            <pseg name = "PSEG_NIC"  type = "PERI" base = "0x00B5000000" length = "0x0000021000" />
25            <pseg name = "PSEG_ROM"  type = "ROM"  base = "0x00BFC00000" length = "0x0000100000" />
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                <irq type = "HARD" icuid = "16" isr = "ISR_TTY" channel = "0" /> 
31                <irq type = "HARD" icuid = "17" isr = "ISR_TTY" channel = "1" /> 
32                <irq type = "HARD" icuid = "18" isr = "ISR_TTY" channel = "2" /> 
33                <irq type = "HARD" icuid = "19" isr = "ISR_TTY" channel = "3" /> 
34                <irq type = "HARD" icuid = "20" isr = "ISR_TTY" channel = "4" /> 
35                <irq type = "HARD" icuid = "21" isr = "ISR_TTY" channel = "5" /> 
36                <irq type = "HARD" icuid = "22" isr = "ISR_TTY" channel = "6" /> 
37                <irq type = "HARD" icuid = "23" isr = "ISR_TTY" channel = "7" /> 
38                <irq type = "HARD" icuid = "24" isr = "ISR_TTY" channel = "8" /> 
39                <irq type = "HARD" icuid = "25" isr = "ISR_TTY" channel = "9" />
40                <irq type = "HARD" icuid = "26" isr = "ISR_TTY" channel = "10" /> 
41                <irq type = "HARD" icuid = "27" isr = "ISR_TTY" channel = "11" /> 
42                <irq type = "HARD" icuid = "28" isr = "ISR_TTY" channel = "12" /> 
43                <irq type = "HARD" icuid = "29" isr = "ISR_TTY" channel = "13" /> 
44                <irq type = "HARD" icuid = "30" isr = "ISR_TTY" channel = "14" /> 
45                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" /> 
46            </proc> 
47
48            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1" /> 
49            <periph type = "XICU" psegname = "PSEG_XICU" channels = "18" />
50            <periph type = "IOC"  psegname = "PSEG_IOC"  channels = "1" /> 
51            <periph type = "TTY"  psegname = "PSEG_TTY"  channels = "8" /> 
52            <periph type = "NIC"  psegname = "PSEG_NIC"  channels = "8" />
53            <periph type = "FBF"  psegname = "PSEG_FBF" />
54        </cluster>
55
56        <cluster index = "1" >
57            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x4000000000" length = "0x0010000000" />
58            <pseg name = "PSEG_XICU" type = "PERI" base = "0x40B0000000" length = "0x0000002000" />
59            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x40B1000000" length = "0x0000008000" />
60
61            <proc index = "0" >
62                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" />
63                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" />
64            </proc>
65
66            <periph type = "DMA"  psegname = "PSEG_DMA" channels = "1" />
67            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
68        </cluster>
69
70        <cluster index = "2" >
71            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x8000000000" length = "0x0010000000" />
72            <pseg name = "PSEG_XICU" type = "PERI" base = "0x80B0000000" length = "0x0000002000" />
73            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x80B1000000" length = "0x0000008000" />
74
75            <proc index = "0" >
76                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
77                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
78            </proc>
79
80            <periph type = "DMA"  psegname = "PSEG_DMA" channels = "1" />
81            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
82        </cluster>
83
84        <cluster index = "3" >
85            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0xC000000000" length = "0x0010000000" />
86            <pseg name = "PSEG_XICU" type = "PERI" base = "0xC0B0000000" length = "0x0000002000" />
87            <pseg name = "PSEG_DMA"  type = "PERI" base = "0xC0B1000000" length = "0x0000008000" />
88
89            <proc index = "0" >
90                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
91                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
92            </proc>
93
94            <periph  type = "DMA" psegname = "PSEG_DMA"  channels = "1" />
95            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
96        </cluster>
97    </clusterset>
98
99
100
101    <globalset> 
102
103*** segments used by the boot code / A[31:28] = 0xB / Identity mapping
104
105        <vseg name = "seg_boot_code"      vbase = "0xBFC00000" mode = "CXW_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" >
106            <vobj name = "boot_code"      type = "ELF" length = "0x00008000" binpath    = "build/boot/boot.elf" />
107        </vseg>
108        <vseg name = "seg_boot_mapping"   vbase = "0xBFC08000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" >
109            <vobj name = "boot_mapping"   type = "BLOB" length  = "0x00004000" binpath  = "map.bin" />
110        </vseg>
111        <vseg name = "seg_boot_stack"     vbase = "0x00000000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" ident = "1" >
112            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00004000" />
113        </vseg>
114
115*** Non replicated peripherals / A[31:28] = 0xB / Identity mapping
116
117        <vseg name = "seg_fbf"            vbase = "0xB2000000" mode = "__W_" clusterid = "0" psegname = "PSEG_FBF" ident = "1" >
118            <vobj name = "fbf"            type = "PERI" length  = "0x00004000" /> 
119        </vseg>
120        <vseg name = "seg_ioc"            vbase = "0xB3000000" 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 = "0xB4000000" mode = "__W_" clusterid = "0" psegname = "PSEG_TTY" ident = "1" >
124                        <vobj name = "tty"            type = "PERI" length  = "0x00001000" />
125        </vseg>
126        <vseg name = "seg_nic"            vbase = "0xB5000000" mode = "__W_" clusterid = "0" psegname = "PSEG_NIC" ident = "1" >
127            <vobj name = "nic"            type = "PERI" length  = "0x00021000" /> 
128        </vseg>
129
130*** segments used by the kernel / A[31:28] = 0x8
131 
132        <vseg name = "seg_kernel_code"    vbase = "0x80000000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
133            <vobj name = "kernel_code"    type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
134        </vseg>
135        <vseg name = "seg_kernel_data"    vbase = "0x80020000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" > 
136            <vobj name = "kernel_data"    type = "ELF" length = "0x00040000" binpath = "build/sys/sys.elf" />
137                </vseg>
138        <vseg name = "seg_kernel_uncdata" vbase = "0x80080000" mode = "__W_" clusterid = "0" psegname = "PSEG_RAM" > 
139            <vobj name = "kernel_uncdata" type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
140        </vseg>
141        <vseg name = "seg_kernel_init"    vbase = "0x80090000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
142            <vobj name  = "kernel_init"   type = "ELF" length = "0x00010000" binpath    = "build/sys/sys.elf" />
143        </vseg>
144
145*** Replicated ICUS / A[31:28] = 0xE / Increment = 0x100000             
146
147        <vseg name = "seg_icu_0"          vbase = "0xE0000000" mode = "__W_" clusterid = "0" psegname = "PSEG_XICU" > 
148            <vobj name = "icu_0"          type = "PERI" length  = "0x00001000" /> 
149        </vseg>
150        <vseg name = "seg_icu_1"          vbase = "0xE0100000" mode = "__W_" clusterid = "1" psegname = "PSEG_XICU" > 
151            <vobj name = "icu_1"          type = "PERI" length  = "0x00001000" /> 
152        </vseg>
153        <vseg name = "seg_icu_2"          vbase = "0xE0200000" mode = "__W_" clusterid = "2" psegname = "PSEG_XICU" > 
154            <vobj name = "icu_2"          type = "PERI" length  = "0x00001000" /> 
155        </vseg>
156        <vseg name = "seg_icu_3"          vbase = "0xE0300000" mode = "__W_" clusterid = "3" psegname = "PSEG_XICU" > 
157            <vobj name = "icu_3"          type = "PERI" length  = "0x00001000" /> 
158        </vseg>
159
160*** Replicated DMAs / A[31:28] = 0xD / Increment = 0x100000
161
162        <vseg name = "seg_dma_0"          vbase = "0xD0000000" mode = "__W_" clusterid = "0" psegname = "PSEG_DMA" >
163            <vobj name = "dma_0"          type = "PERI" length  = "0x00008000" />
164        </vseg>
165        <vseg name = "seg_dma_1"          vbase = "0xD0100000" mode = "__W_" clusterid = "1" psegname = "PSEG_DMA" >
166            <vobj name = "dma_1"          type = "PERI" length  = "0x00008000" />
167        </vseg>
168        <vseg name = "seg_dma_2"          vbase = "0xD0200000" mode = "__W_" clusterid = "2" psegname = "PSEG_DMA" >
169            <vobj name = "dma_2"          type = "PERI" length  = "0x00008000" />
170        </vseg>
171        <vseg name = "seg_dma_3"          vbase = "0xD0300000" mode = "__W_" clusterid = "3" psegname = "PSEG_DMA" >
172            <vobj name = "dma_3"          type = "PERI" length  = "0x00008000" />
173        </vseg>
174
175*** Replicated schedulers / A[31:28] = 0xF / Increment = 0x100000
176
177        <vseg name = "seg_sched_0"        vbase = "0xF0000000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" >
178            <vobj name = "sched_0"        type = "SCHED" length  = "0x00008000" />
179        </vseg>
180        <vseg name = "seg_sched_1"        vbase = "0xF0100000" mode = "C_W_" clusterid = "1" psegname = "PSEG_RAM" >
181            <vobj name = "sched_1"        type = "SCHED" length  = "0x00008000" />
182        </vseg>
183        <vseg name = "seg_sched_2"        vbase = "0xF0200000" mode = "C_W_" clusterid = "2" psegname = "PSEG_RAM" >
184            <vobj name = "sched_2"        type = "SCHED" length  = "0x00008000" />
185        </vseg>
186        <vseg name = "seg_sched_3"        vbase = "0xF0300000" mode = "C_W_" clusterid = "3" psegname = "PSEG_RAM" >
187            <vobj name = "sched_3"        type = "SCHED" length  = "0x00008000" />
188        </vseg>
189***
190    </globalset> 
191
192    <vspaceset>
193        <vspace name = "router" startname = "router_data" > 
194            <vseg name = "seg_data"        vbase = "0x00800000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" >
195                <vobj name = "router_data" type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" />
196            </vseg>
197            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname = "PSEG_RAM" > 
198                <vobj name = "router_code" type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" /> 
199            </vseg>
200            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "0" psegname = "PSEG_RAM" > 
201                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
202            </vseg>
203            <vseg name = "seg_stack_prod"  vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname = "PSEG_RAM" >
204                <vobj name = "stack_prod"  type = "BUFFER" length = "0x00010000" /> 
205                <vobj name = "heap_prod"   type = "BUFFER" length = "0x00010000" /> 
206            </vseg>
207            <vseg name = "seg_stack_cons"  vbase = "0x00030000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" > 
208                <vobj name = "stack_cons"  type = "BUFFER" length = "0x00010000" />
209                <vobj name = "heap_cons"   type = "BUFFER" length = "0x00010000" /> 
210            </vseg>
211            <vseg name = "seg_stack_routA" vbase = "0x00050000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" > 
212                <vobj name = "stack_routA" type = "BUFFER" length = "0x00010000" />
213                <vobj name = "heap_routA"  type = "BUFFER" length = "0x00010000" /> 
214            </vseg>
215            <vseg name = "seg_stack_routB" vbase = "0x00070000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" > 
216                <vobj name = "stack_routB" type = "BUFFER" length = "0x00010000" />
217                <vobj name = "heap_routB"  type = "BUFFER" length = "0x00010000" /> 
218            </vseg>
219            <vseg name = "seg_mwmrs"       vbase = "0x00090000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" > 
220                <vobj name = "mwmr_in"     type = "MWMR" length = "0x00000020" init = "1" />
221                <vobj name = "mwmr_out"    type = "MWMR" length = "0x00000020" init = "1" />
222                    </vseg>
223
224            <task name = "producer" clusterid = "0" proclocid = "0" stackname = "stack_prod"  heapname = "heap_prod"  startid = "0" usetty = "1" />
225            <task name = "consumer" clusterid = "1" proclocid = "0" stackname = "stack_cons"  heapname = "heap_cons"  startid = "1" usetty = "1" />
226            <task name = "router_A" clusterid = "2" proclocid = "0" stackname = "stack_routA" heapname = "heap_routA" startid = "2" usetty = "1" />
227            <task name = "router_B" clusterid = "3" proclocid = "0" stackname = "stack_routB" heapname = "heap_routB" startid = "2" usetty = "1" />
228        </vspace>
229
230        <vspace name = "hello" startname = "hello_data" >
231            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
232                <vobj name = "hello_data"  type = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
233            </vseg>
234            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "1" psegname = "PSEG_RAM" > 
235                <vobj name = "hello_code"  type = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
236            </vseg>
237            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "1" psegname = "PSEG_RAM" >
238                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" /> 
239            </vseg>
240            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
241                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
242                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
243            </vseg>
244
245            <task name = "main_hello" clusterid = "1" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
246        </vspace>
247
248        <vspace name = "pgcd" startname = "pgcd_data" >
249            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
250                <vobj name      = "pgcd_data"  type     = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
251            </vseg>
252            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "2" psegname = "PSEG_RAM" >
253                <vobj name = "pgcd_code"   type = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
254            </vseg>
255            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "2" psegname = "PSEG_RAM" >
256                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" />
257            </vseg>
258            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
259                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" /> 
260                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" /> 
261            </vseg>
262
263            <task name = "main_pgcd" clusterid = "2" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
264        </vspace>
265
266        <vspace name = "display" startname = "disp_data" >
267            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
268                <vobj name = "disp_data"   type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
269                        </vseg>
270            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "3" psegname = "PSEG_RAM" >
271                <vobj name = "disp_code"   type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
272            </vseg>
273            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "3" psegname = "PSEG_RAM" >
274                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
275            </vseg>
276            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
277                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
278                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
279            </vseg>
280
281            <task name = "main_display" clusterid = "3" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" usedma = "1" />
282        </vspace>
283    </vspaceset>
284</mapping_info>
Note: See TracBrowser for help on using the repository browser.