source: soft/giet_vm/mappings/4c_1p_iob.xml @ 254

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