source: soft/giet_vm/mappings/4c_4p_sort_leti.xml @ 292

Last change on this file since 292 was 292, checked in by cfuguet, 10 years ago
  • Introducing XML description file for the tsar_generic_leti platform.
  • Modification in the sort application: Introducing VOBJ CONST for sort application containing the number of threads.
File size: 19.4 KB
Line 
1<?xml version="1.0"?>
2
3<mapping_info signature    = "0xdeadbeef" 
4              name         = "4c_4p_sort_intact" 
5              x_size       = "2" 
6              y_size       = "2" 
7              x_width      = "4"
8              y_width      = "4"
9              vspaces      = "1"
10                          increment    = "0x10000"
11                          irq_per_proc = "4" >
12
13*** The "increment" parameter is the virtual address cluster increment
14*** The physical address cluster increment is 0x10000000000 / NB_CLUSTERS
15
16*** This first section describes an instance of the "tsar_generic_iob" architecture
17*** with 4 clusters, 1 processor per cluster and 40 bits physical address.
18
19    <clusterset>
20
21        <cluster x = "0" y = "0" >
22            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x0000000000" length = "0x0000800000" />
23            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x00F0000000" length = "0x0000002000" />
24            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x00E0000000" length = "0x0000001000" />
25
26*** Non replicated peripherals (including the ROM containing the preloader code)
27
28            <pseg name = "PSEG_IOC"  type = "PERI" base = "0x00F2000000" length = "0x0000001000" /> 
29            <pseg name = "PSEG_TTY"  type = "PERI" base = "0x00F4000000" length = "0x0000001000" /> 
30
31            <proc index  = "0" >
32                <irq type = "SOFT" icuid = "0"  isr = "ISR_WAKUP" /> 
33                <irq type = "TIME" icuid = "4"  isr = "ISR_SWITCH" /> 
34                <irq type = "HARD" icuid = "8"  isr = "ISR_DEFAULT" /> 
35                <irq type = "HARD" icuid = "9"  isr = "ISR_IOC" /> 
36                <irq type = "HARD" icuid = "10" isr = "ISR_TTY" /> 
37            </proc> 
38            <proc index  = "1" >
39                <irq type = "SOFT" icuid = "1"  isr = "ISR_WAKUP" /> 
40                <irq type = "TIME" icuid = "5"  isr = "ISR_SWITCH" /> 
41            </proc> 
42            <proc index  = "2" >
43                <irq type = "SOFT" icuid = "2"  isr = "ISR_WAKUP" /> 
44                <irq type = "TIME" icuid = "6"  isr = "ISR_SWITCH" /> 
45            </proc> 
46            <proc index  = "3" >
47                <irq type = "SOFT" icuid = "3"  isr = "ISR_WAKUP" /> 
48                <irq type = "TIME" icuid = "7"  isr = "ISR_SWITCH" /> 
49            </proc> 
50
51            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "16" />
52            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1"  />
53            <periph type = "IOC"  psegname = "PSEG_IOC"  channels = "1" subtype = "BDV" /> 
54            <periph type = "TTY"  psegname = "PSEG_TTY"  channels = "1"  /> 
55
56        </cluster>
57
58        <cluster x = "0" y = "1" >
59            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x0100000000" length = "0x0000800000" />
60            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x01F0000000" length = "0x0000002000" />
61            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x01E0000000" length = "0x0000001000" />
62
63            <proc index  = "0" >
64                <irq type = "SOFT" icuid = "0"  isr = "ISR_WAKUP" /> 
65                <irq type = "TIME" icuid = "4"  isr = "ISR_SWITCH" /> 
66                <irq type = "HARD" icuid = "8"  isr = "ISR_DEFAULT" /> 
67            </proc> 
68            <proc index  = "1" >
69                <irq type = "SOFT" icuid = "1"  isr = "ISR_WAKUP" /> 
70                <irq type = "TIME" icuid = "5"  isr = "ISR_SWITCH" /> 
71            </proc> 
72            <proc index  = "2" >
73                <irq type = "SOFT" icuid = "2"  isr = "ISR_WAKUP" /> 
74                <irq type = "TIME" icuid = "6"  isr = "ISR_SWITCH" /> 
75            </proc> 
76            <proc index  = "3" >
77                <irq type = "SOFT" icuid = "3"  isr = "ISR_WAKUP" /> 
78                <irq type = "TIME" icuid = "7"  isr = "ISR_SWITCH" /> 
79            </proc> 
80
81            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "16" />
82            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
83        </cluster>
84
85        <cluster x = "1" y = "0" >
86            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x1000000000" length = "0x0000800000" />
87            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x10F0000000" length = "0x0000002000" />
88            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x10E0000000" length = "0x0000001000" />
89
90            <proc index  = "0" >
91                <irq type = "SOFT" icuid = "0"  isr = "ISR_WAKUP" /> 
92                <irq type = "TIME" icuid = "4"  isr = "ISR_SWITCH" /> 
93                <irq type = "HARD" icuid = "8"  isr = "ISR_DEFAULT" /> 
94            </proc> 
95            <proc index  = "1" >
96                <irq type = "SOFT" icuid = "1"  isr = "ISR_WAKUP" /> 
97                <irq type = "TIME" icuid = "5"  isr = "ISR_SWITCH" /> 
98            </proc> 
99            <proc index  = "2" >
100                <irq type = "SOFT" icuid = "2"  isr = "ISR_WAKUP" /> 
101                <irq type = "TIME" icuid = "6"  isr = "ISR_SWITCH" /> 
102            </proc> 
103            <proc index  = "3" >
104                <irq type = "SOFT" icuid = "3"  isr = "ISR_WAKUP" /> 
105                <irq type = "TIME" icuid = "7"  isr = "ISR_SWITCH" /> 
106            </proc> 
107
108            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "16" />
109            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
110        </cluster>
111
112        <cluster x = "1" y = "1" >
113            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x1100000000" length = "0x0000800000" />
114            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x11F0000000" length = "0x0000002000" />
115            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x11E0000000" length = "0x0000001000" />
116
117            <proc index  = "0" >
118                <irq type = "SOFT" icuid = "0"  isr = "ISR_WAKUP" /> 
119                <irq type = "TIME" icuid = "4"  isr = "ISR_SWITCH" /> 
120                <irq type = "HARD" icuid = "8"  isr = "ISR_DEFAULT" /> 
121            </proc> 
122            <proc index  = "1" >
123                <irq type = "SOFT" icuid = "1"  isr = "ISR_WAKUP" /> 
124                <irq type = "TIME" icuid = "5"  isr = "ISR_SWITCH" /> 
125            </proc> 
126            <proc index  = "2" >
127                <irq type = "SOFT" icuid = "2"  isr = "ISR_WAKUP" /> 
128                <irq type = "TIME" icuid = "6"  isr = "ISR_SWITCH" /> 
129            </proc> 
130            <proc index  = "3" >
131                <irq type = "SOFT" icuid = "3"  isr = "ISR_WAKUP" /> 
132                <irq type = "TIME" icuid = "7"  isr = "ISR_SWITCH" /> 
133            </proc> 
134
135            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "16" />
136            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
137        </cluster>
138    </clusterset>
139
140    <globalset> 
141
142*** Segments used by the boot code / A[31:28] = 0x0 / Identity mapping
143- seg_boot_mapping is loaded by the boot-loader. It contains the mapping info. The content is reused by the kernel.
144- seg_boot_code and seg_boot data are loaded by the preloader, used by the boot-loader The content is not reused by the kernel.
145- seg_boot_stack is contains the stacks used by all processors during reset and boot. The content is not reused by the Kernel.
146- seg_boot_buffer is used by the boot-loader. It can contain a complete .elf file. The content is not reused by the kernel.
147
148        <vseg name = "seg_boot_code"      vbase = "0x00010000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
149            <vobj name = "boot_code"      type = "BUFFER" length = "0x00020000" />
150        </vseg>
151        <vseg name = "seg_boot_data"      vbase = "0x00030000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
152            <vobj name = "boot_data"      type = "BUFFER" length = "0x00010000" />
153        </vseg>
154        <vseg name = "seg_boot_buffer"    vbase = "0x00040000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
155            <vobj name = "boot_buffer"    type = "BUFFER" length = "0x00020000" />
156        </vseg>
157        <vseg name = "seg_boot_stack"     vbase = "0x00060000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
158            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00090000" />
159        </vseg>
160        <vseg name = "seg_boot_mapping"   vbase = "0x000F0000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
161            <vobj name = "boot_mapping"   type = "BLOB"   length = "0x00010000" binpath = "map.bin" />
162        </vseg>
163
164*** Segments used by the kernel / A[31:28] = 0x8
165 
166        <vseg name = "seg_kernel_code"    vbase = "0x80000000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" > 
167            <vobj name = "kernel_code"    type = "ELF" length = "0x00020000" binpath = "build/kernel/kernel.elf" />
168        </vseg>
169        <vseg name = "seg_kernel_data"    vbase = "0x80020000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" > 
170            <vobj name = "kernel_data"    type = "ELF" length = "0x00060000" binpath = "build/kernel/kernel.elf" />
171                </vseg>
172        <vseg name = "seg_kernel_uncdata" vbase = "0x80080000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_RAM" > 
173            <vobj name = "kernel_uncdata" type = "ELF" length = "0x00040000" binpath = "build/kernel/kernel.elf" />
174        </vseg>
175        <vseg name = "seg_kernel_init"    vbase = "0x800C0000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" > 
176            <vobj name = "kernel_init"    type = "ELF" length = "0x00010000" binpath = "build/kernel/kernel.elf" />
177        </vseg>
178
179*** Segments for non replicated peripherals / A[31:28] = 0xF / Identity mapping
180
181        <vseg name = "seg_ioc"            vbase = "0xF2000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_IOC" ident = "1" >
182            <vobj name = "ioc"            type = "PERI" length  = "0x00001000" /> 
183        </vseg>
184        <vseg name = "seg_tty"            vbase = "0xF4000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_TTY" ident = "1" >
185                        <vobj name = "tty"            type = "PERI" length  = "0x00001000" />
186        </vseg>
187        <vseg name = "seg_preloader"      vbase = "0x00000000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
188            <vobj name = "preloader"      type = "BUFFER" length  = "0x00010000" /> 
189        </vseg>
190
191*** Segments for replicated ICUS / A[31:24] = 0xF0 / Increment = 0x10000 / Identity mapping in cluster 0           
192
193        <vseg name = "seg_icu_0"          vbase = "0xF0000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_XCU" ident = "1" > 
194            <vobj name = "icu_0"          type = "PERI" length  = "0x00001000" /> 
195        </vseg>
196        <vseg name = "seg_icu_1"          vbase = "0xF0010000" mode = "__W_" x = "0" y = "1" psegname = "PSEG_XCU" > 
197            <vobj name = "icu_1"          type = "PERI" length  = "0x00001000" /> 
198        </vseg>
199        <vseg name = "seg_icu_2"          vbase = "0xF0100000" mode = "__W_" x = "1" y = "0" psegname = "PSEG_XCU" > 
200            <vobj name = "icu_2"          type = "PERI" length  = "0x00001000" /> 
201        </vseg>
202        <vseg name = "seg_icu_3"          vbase = "0xF0110000" mode = "__W_" x = "1" y = "1" psegname = "PSEG_XCU" > 
203            <vobj name = "icu_3"          type = "PERI" length  = "0x00001000" /> 
204        </vseg>
205
206*** segments for replicated MMC / A[31:24] = 0xE0 / Increment = 0x10000 / Identity mapping in cluster 0
207*** The peripheral type must be entirely defined by the 8 virtual address MSB bits (mask_type = 0xFF000000)
208*** The cluster id must be encoded in the next 8 virtual address bits (cluster_mask = 0x00FF0000)
209
210        <vseg name = "seg_memc_0"         vbase = "0xE0000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_MMC" ident = "1" >
211            <vobj name = "memc_0"         type = "PERI" length  = "0x00001000" />
212        </vseg>
213        <vseg name = "seg_memc_1"         vbase = "0xE0010000" mode = "__W_" x = "0" y = "1" psegname = "PSEG_MMC" >
214            <vobj name = "memc_1"         type = "PERI" length  = "0x00001000" />
215        </vseg>
216        <vseg name = "seg_memc_2"         vbase = "0xE0100000" mode = "__W_" x = "1" y = "0" psegname = "PSEG_MMC" >
217            <vobj name = "memc_2"         type = "PERI" length  = "0x00001000" />
218        </vseg>
219        <vseg name = "seg_memc_3"         vbase = "0xE0110000" mode = "__W_" x = "1" y = "1" psegname = "PSEG_MMC" >
220            <vobj name = "memc_3"         type = "PERI" length  = "0x00001000" />
221        </vseg>
222
223*** segments for replicated schedulers / A[31:28] = 0xC / Increment = 0x10000
224*** The type must be entirely defined by the 8 virtual address MSB bits (mask_type = 0xFF000000)
225*** The cluster id must be encoded in the next 8 virtual address bits (cluster_mask = 0x00FF0000)
226
227        <vseg name = "seg_sched_0"        vbase = "0xC0000000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" >
228            <vobj name = "sched_0"        type = "SCHED" length  = "0x00008000" />
229        </vseg>
230        <vseg name = "seg_sched_1"        vbase = "0xC0010000" mode = "C_W_" x = "0" y = "1" psegname = "PSEG_RAM" >
231            <vobj name = "sched_1"        type = "SCHED" length  = "0x00008000" />
232        </vseg>
233        <vseg name = "seg_sched_2"        vbase = "0xC0100000" mode = "C_W_" x = "1" y = "0" psegname = "PSEG_RAM" >
234            <vobj name = "sched_2"        type = "SCHED" length  = "0x00008000" />
235        </vseg>
236        <vseg name = "seg_sched_3"        vbase = "0xC0110000" mode = "C_W_" x = "1" y = "1" psegname = "PSEG_RAM" >
237            <vobj name = "sched_3"        type = "SCHED" length  = "0x00008000" />
238        </vseg>
239***
240    </globalset> 
241
242    <vspaceset>
243
244*** For each vspace, the startname field is the name of the vobj containing the start_vector (entry point array)
245*** For each task, the startid field define the task entry point as an index in the start_vector
246*** For each task, the clusterid and proclocid arguments define the task static placement
247*** For each task, the stackname field is the name of the vobj containing the task stack
248*** For each task, the heapname field is the name of the vobj containing the task heap
249
250        <vspace name = "sort" startname = "sort_data" > 
251            <vseg name = "seg_sort_code"   vbase = "0x00400000" mode = "CXWU" x = "1" y = "1" psegname = "PSEG_RAM" > 
252                <vobj name = "sort_code"   type  = "ELF" length = "0x00010000" binpath = "build/sort/sort.elf" /> 
253            </vseg>
254            <vseg name = "seg_sort_data"   vbase = "0x00500000" mode = "C_WU" x = "1" y = "1" psegname = "PSEG_RAM" >
255                <vobj name = "sort_data"   type  = "ELF" length = "0x00010000" binpath = "build/sort/sort.elf" />
256            </vseg>
257            <vseg name = "seg_sort_ptab"   vbase = "0x00600000" mode = "C_W_" x = "1" y = "1" psegname = "PSEG_RAM" > 
258                <vobj name = "sort_ptab"   type  = "PTAB" length  = "0x00020000" align = "13" />
259            </vseg>
260            <vseg name = "seg_sort_stack00" vbase = "0x00800000" mode = "C_WU" x = "0" y = "0" psegname = "PSEG_RAM" >
261                <vobj name = "sort_stack0"  type         = "BUFFER" length = "0x00010000" /> 
262                <vobj name = "sort_stack1"  type         = "BUFFER" length = "0x00010000" /> 
263                <vobj name = "sort_stack2"  type         = "BUFFER" length = "0x00010000" /> 
264                <vobj name = "sort_stack3"  type         = "BUFFER" length = "0x00010000" /> 
265                <vobj name = "sort_heap0"   type         = "BUFFER" length = "0x00010000" /> 
266            </vseg>
267            <vseg name = "seg_sort_stack01" vbase = "0x00A00000" mode = "C_WU" x = "0" y = "1" psegname = "PSEG_RAM" >
268                <vobj name = "sort_stack4"  type         = "BUFFER" length = "0x00010000" /> 
269                <vobj name = "sort_stack5"  type         = "BUFFER" length = "0x00010000" /> 
270                <vobj name = "sort_stack6"  type         = "BUFFER" length = "0x00010000" /> 
271                <vobj name = "sort_stack7"  type         = "BUFFER" length = "0x00010000" /> 
272                <vobj name = "sort_heap1"   type         = "BUFFER" length = "0x00010000" /> 
273            </vseg>
274            <vseg name = "seg_sort_stack10" vbase = "0x00C00000" mode = "C_WU" x = "1" y = "0" psegname = "PSEG_RAM" >
275                <vobj name = "sort_stack8"  type         = "BUFFER" length = "0x00010000" /> 
276                <vobj name = "sort_stack9"  type         = "BUFFER" length = "0x00010000" /> 
277                <vobj name = "sort_stack10" type         = "BUFFER" length = "0x00010000" /> 
278                <vobj name = "sort_stack11" type         = "BUFFER" length = "0x00010000" /> 
279                <vobj name = "sort_heap2"   type         = "BUFFER" length = "0x00010000" /> 
280            </vseg>
281            <vseg name = "seg_sort_stack11" vbase = "0x00E00000" mode = "C_WU" x = "1" y = "1" psegname = "PSEG_RAM" >
282                <vobj name = "sort_stack12" type         = "BUFFER" length = "0x00010000" /> 
283                <vobj name = "sort_stack13" type         = "BUFFER" length = "0x00010000" /> 
284                <vobj name = "sort_stack14" type         = "BUFFER" length = "0x00010000" /> 
285                <vobj name = "sort_stack15" type         = "BUFFER" length = "0x00010000" /> 
286                <vobj name = "sort_heap3"   type         = "BUFFER" length = "0x00010000" /> 
287            </vseg>
288                        <vseg name = "seg_params"       vbase = "0x00F00000" mode = "C_WU" x = "0" y = "0" psegname = "PSEG_RAM" >
289                                <vobj name = "nb_thread"    type     = "CONST"  length = "0x4" init = "16" />
290                        </vseg>
291            <task name = "sort_0"  x = "0" y = "0" proclocid = "0" stackname = "sort_stack0"  heapname = "sort_heap0" startid = "0" usetty = "1" />
292            <task name = "sort_1"  x = "0" y = "0" proclocid = "1" stackname = "sort_stack1"  heapname = "sort_heap0" startid = "0" usetty = "1" />
293            <task name = "sort_2"  x = "0" y = "0" proclocid = "2" stackname = "sort_stack2"  heapname = "sort_heap0" startid = "0" usetty = "1" />
294            <task name = "sort_3"  x = "0" y = "0" proclocid = "3" stackname = "sort_stack3"  heapname = "sort_heap0" startid = "0" usetty = "1" />
295            <task name = "sort_4"  x = "0" y = "1" proclocid = "0" stackname = "sort_stack4"  heapname = "sort_heap1" startid = "0" usetty = "1" />
296            <task name = "sort_5"  x = "0" y = "1" proclocid = "1" stackname = "sort_stack5"  heapname = "sort_heap1" startid = "0" usetty = "1" />
297            <task name = "sort_6"  x = "0" y = "1" proclocid = "2" stackname = "sort_stack6"  heapname = "sort_heap1" startid = "0" usetty = "1" />
298            <task name = "sort_7"  x = "0" y = "1" proclocid = "3" stackname = "sort_stack7"  heapname = "sort_heap1" startid = "0" usetty = "1" />
299            <task name = "sort_8"  x = "1" y = "0" proclocid = "0" stackname = "sort_stack8"  heapname = "sort_heap2" startid = "0" usetty = "1" />
300            <task name = "sort_9"  x = "1" y = "0" proclocid = "1" stackname = "sort_stack9"  heapname = "sort_heap2" startid = "0" usetty = "1" />
301            <task name = "sort_10" x = "1" y = "0" proclocid = "2" stackname = "sort_stack10" heapname = "sort_heap2" startid = "0" usetty = "1" />
302            <task name = "sort_11" x = "1" y = "0" proclocid = "3" stackname = "sort_stack11" heapname = "sort_heap2" startid = "0" usetty = "1" />
303            <task name = "sort_12" x = "1" y = "1" proclocid = "0" stackname = "sort_stack12" heapname = "sort_heap3" startid = "0" usetty = "1" />
304            <task name = "sort_13" x = "1" y = "1" proclocid = "1" stackname = "sort_stack13" heapname = "sort_heap3" startid = "0" usetty = "1" />
305            <task name = "sort_14" x = "1" y = "1" proclocid = "2" stackname = "sort_stack14" heapname = "sort_heap3" startid = "0" usetty = "1" />
306            <task name = "sort_15" x = "1" y = "1" proclocid = "3" stackname = "sort_stack15" heapname = "sort_heap3" startid = "0" usetty = "1" />
307
308        </vspace>
309    </vspaceset>
310</mapping_info>
Note: See TracBrowser for help on using the repository browser.