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

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

1/ introducing support to display images on the frame buffer
with the vci_chbuf_dma (in stdio.c and drivers.c)
2/ introducing support for mem_cache configuration segment
as the memory cache is considered as another addressable peripheral type
(in drivers.c)
3/ Introducing the new "increment" parameter in the mapping header.
This parameter define the virtual address increment for the vsegs
associated to the replicated peripherals (ICU, XICU, MDMA, TIMER, MMC).
This parameter is mandatory, and all map.xml files the "mappings"
directory have been updated.

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