source: branch/giet_vm_ioc_drivers/mappings/1c_4p_four.xml @ 283

Last change on this file since 283 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: 14.6 KB
Line 
1<?xml version="1.0"?>
2
3<mapping_info   signature = "0xdeadbeef" 
4                name      = "1c_4p_four" 
5                cluster_x = "1" 
6                cluster_y = "1" 
7                vspaces   = "4" 
8                increment = "0x10000" >
9
10*** This section describes an instance of the "caba_vgsb_xicu_mmu" generic architecture
11*** containing 4 processors in one single cluster.
12
13    <clusterset>
14        <cluster index  = "0" >
15
16*** RAM, ROM and Peripherals used in the hardware architecture
17
18            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x00000000" length = "0x00C00000" />
19            <pseg name = "PSEG_ROM" type = "ROM"  base = "0xBFC00000" length = "0x00010000" /> 
20            <pseg name = "PSEG_FBF" type = "PERI" base = "0x00D00000" length = "0x00200000" /> 
21            <pseg name = "PSEG_ICU" type = "PERI" base = "0x00F00000" length = "0x00001000" /> 
22            <pseg name = "PSEG_IOC" type = "PERI" base = "0x00F10000" length = "0x00001000" /> 
23            <pseg name = "PSEG_TTY" type = "PERI" base = "0x00F20000" length = "0x00001000" /> 
24            <pseg name = "PSEG_DMA" type = "PERI" base = "0x00F30000" length = "0x00008000" /> 
25            <pseg name = "PSEG_NIC" type = "PERI" base = "0x00F80000" length = "0x00021000" /> 
26             
27*** Peripherals unused in the hardware architecture
28
29            <pseg name = "PSEG_GCD" type = "PERI" base = "0x00F50000" length = "0x00001000" /> 
30            <pseg name = "PSEG_COP" type = "PERI" base = "0x00F60000" length = "0x00001000" /> 
31            <pseg name = "PSEG_IOB" type = "PERI" base = "0x00FF0000" length = "0x00001000" /> 
32
33            <proc index = "0" >
34                <irq type = "PTI"  icuid = "0"  isr = "ISR_SWITCH" /> 
35                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" /> 
36                <irq type = "HARD" icuid = "9"  isr = "ISR_DMA" channel = "1" /> 
37                <irq type = "HARD" icuid = "10" isr = "ISR_DMA" channel = "2" /> 
38                <irq type = "HARD" icuid = "11" isr = "ISR_DMA" channel = "3" /> 
39                <irq type = "HARD" icuid = "12" isr = "ISR_DMA" channel = "4" /> 
40                <irq type = "HARD" icuid = "13" isr = "ISR_DMA" channel = "5" /> 
41                <irq type = "HARD" icuid = "14" isr = "ISR_DMA" channel = "6" /> 
42                <irq type = "HARD" icuid = "15" isr = "ISR_DMA" channel = "7" /> 
43                <irq type = "HARD" icuid = "16" isr = "ISR_TTY" channel = "0" /> 
44                <irq type = "HARD" icuid = "17" isr = "ISR_TTY" channel = "1" /> 
45                <irq type = "HARD" icuid = "18" isr = "ISR_TTY" channel = "2" /> 
46                <irq type = "HARD" icuid = "19" isr = "ISR_TTY" channel = "3" /> 
47                <irq type = "HARD" icuid = "20" isr = "ISR_TTY" channel = "4" /> 
48                <irq type = "HARD" icuid = "21" isr = "ISR_TTY" channel = "5" /> 
49                <irq type = "HARD" icuid = "22" isr = "ISR_TTY" channel = "6" /> 
50                <irq type = "HARD" icuid = "23" isr = "ISR_TTY" channel = "7" /> 
51                <irq type = "HARD" icuid = "24" isr = "ISR_TTY" channel = "8" /> 
52                <irq type = "HARD" icuid = "25" isr = "ISR_TTY" channel = "9" /> 
53                <irq type = "HARD" icuid = "26" isr = "ISR_TTY" channel = "10" /> 
54                <irq type = "HARD" icuid = "27" isr = "ISR_TTY" channel = "11" /> 
55                <irq type = "HARD" icuid = "28" isr = "ISR_TTY" channel = "12" /> 
56                <irq type = "HARD" icuid = "29" isr = "ISR_TTY" channel = "13" /> 
57                <irq type = "HARD" icuid = "30" isr = "ISR_TTY" channel = "14" /> 
58                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" /> 
59            </proc>
60
61            <proc index = "1" >
62                <irq type = "PTI"  icuid = "1" isr = "ISR_SWITCH" />
63            </proc>
64
65            <proc index = "2" >
66                <irq type = "PTI"  icuid = "2" isr = "ISR_SWITCH" />
67            </proc>
68
69            <proc    index  = "3" >
70                <irq type = "PTI"  icuid = "3" isr = "ISR_SWITCH" />
71            </proc>
72
73            <periph type = "IOC" psegname = "PSEG_IOC" channels  = "1" /> 
74            <periph type = "NIC" psegname = "PSEG_NIC" channels  = "8" /> 
75            <periph type = "TTY" psegname = "PSEG_TTY" channels  = "8" /> 
76            <periph type = "DMA" psegname = "PSEG_DMA" channels  = "1" /> 
77            <periph type = "XCU" psegname = "PSEG_ICU" channels  = "5" /> 
78            <periph type = "FBF" psegname = "PSEG_FBF" /> 
79
80        </cluster>
81    </clusterset>
82
83    <globalset> 
84
85*** Global vsegs used in the boot phase
86
87        <vseg name = "seg_boot_code"    vbase = "0xBFC00000" mode = "CXW_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" >
88            <vobj name = "boot_code"    type = "ELF" length  = "0x00010000" binpath = "build/boot/boot.elf" />
89        </vseg>
90        <vseg name = "seg_boot_stack"   vbase = "0xBFC08000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" > 
91            <vobj name = "boot_stack"   type = "BUFFER" length  = "0x00004000" />
92        </vseg>
93        <vseg name = "seg_boot_mapping" vbase = "0xBFC0c000" mode = "C_W_" clusterid = "0" psegname = "PSEG_ROM" ident = "1" > 
94            <vobj name = "boot_mapping" type = "BLOB" length  = "0x00004000" binpath    = "map.bin" />
95        </vseg>
96
97*** Global vsegs used by the kernel
98
99        <vseg name = "seg_kernel_code"  vbase = "0x80000000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
100            <vobj name = "kernel_code"  type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
101        </vseg>
102        <vseg name = "seg_kernel_data"  vbase = "0x80010000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" > 
103            <vobj name = "kernel_data"  type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
104        </vseg>
105        <vseg name = "seg_kernel_unc"   vbase = "0x80080000" mode = "__W_" clusterid = "0" psegname = "PSEG_RAM" > 
106            <vobj name = "kernel_unc"   type = "ELF" length  = "0x00010000" binpath     = "build/sys/sys.elf" /> 
107        </vseg>
108        <vseg name = "seg_kernel_init"  vbase = "0x80090000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
109            <vobj name = "kernel_init"  type = "ELF" length  = "0x00100000" binpath     = "build/sys/sys.elf" />
110        </vseg>
111
112*** Frame buffer (up to 2 Mbytes)
113
114        <vseg name = "seg_fbf"          vbase = "0x00D00000" mode = "__W_" clusterid = "0" psegname = "PSEG_FBF" ident = "1" > 
115            <vobj name = "fbf"          type = "PERI" length  = "0x00200000" /> 
116        </vseg>
117
118*** Peripherals (4 Kbytes per peripheral / 4 Kbytes per channel for the DMA / 16 Kbytes per channel + 4Kbytes for NIC
119
120        <vseg name = "seg_icu"          vbase = "0x00F00000" mode = "__W_" clusterid = "0" psegname = "PSEG_ICU" ident = "1" > 
121            <vobj name = "icu"          type = "PERI" length  = "0x00001000" /> 
122        </vseg>
123        <vseg name = "seg_ioc"          vbase = "0x00F10000" mode = "__W_" clusterid = "0" psegname = "PSEG_IOC" ident = "1" > 
124            <vobj name = "ioc"          type = "PERI" length  = "0x00001000" /> 
125        </vseg>
126        <vseg name = "seg_tty"          vbase = "0x00F20000" mode = "__W_" clusterid = "0" psegname = "PSEG_TTY" ident = "1" > 
127            <vobj name = "tty"          type = "PERI" length  = "0x00001000" />
128        </vseg>
129        <vseg name = "seg_dma"          vbase = "0x00F30000" mode = "__W_" clusterid = "0" psegname = "PSEG_DMA" ident = "1" > 
130            <vobj name = "dma"          type = "PERI" length  = "0x00008000" /> 
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.