source: soft/giet_vm/mappings/4c_1p_four.xml @ 255

Last change on this file since 255 was 246, checked in by meunier, 11 years ago

Cosmétique + gestion du reset de l'irq du timer ou de l'xicu lors d'un task_switch

File size: 16.4 KB
RevLine 
[208]1<?xml version="1.0"?>
2
[215]3<mapping_info signature = "0xdeadbeef" name = "C4_P1_FOUR" cluster_x = "2" cluster_y = "2" vspaces = "4" >
[208]4
5    <clusterset>
6
7        <cluster index = "0" >
8
9            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x00000000" length = "0x00C00000" />
[215]10            <pseg name = "PSEG_XICU" type = "PERI" base = "0x00F00000" length = "0x00002000" />
[208]11            <pseg name = "PSEG_DMA" type = "PERI" base = "0x00F30000" length = "0x00008000" />
12
13            <proc index = "0" >
14                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
15                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
16            </proc>
17
18            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" />
[215]19            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
[208]20
21        </cluster>
22        <cluster index = "1" >
23
24            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x40000000" length = "0x00C00000" />
[215]25            <pseg name = "PSEG_XICU" type = "PERI" base = "0x40F00000" length = "0x00002000" />
[208]26            <pseg name = "PSEG_DMA" type = "PERI" base = "0x40F30000" length = "0x00008000" />
27
28            <proc index = "0" >
29                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" />
30                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" />
31            </proc>
32
33            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" />
[215]34            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
[208]35
36        </cluster>
37        <cluster index = "2" >
38
39            <pseg name = "PSEG_RAM" type = "RAM"  base = "0x80000000" length = "0x00C00000" /> 
[215]40            <pseg name = "PSEG_XICU" type = "PERI" base = "0x80F00000" length = "0x00002000" />
[208]41            <pseg name = "PSEG_DMA" type = "PERI" base = "0x80F30000" length = "0x00008000" />
42
43*** Boot ROM and non replicated peripherals
44
[218]45            <pseg name = "PSEG_FBF" type = "PERI" base = "0xBFD00000" length = "0x00200000" /> 
46            <pseg name = "PSEG_TTY" type = "PERI" base = "0xBFF20000" length = "0x00001000" /> 
47            <pseg name = "PSEG_IOC" type = "PERI" base = "0xBFF10000" length = "0x00001000" /> 
48            <pseg name = "PSEG_NIC" type = "PERI" base = "0xBFF80000" length = "0x00021000" />
[208]49            <pseg name = "PSEG_ROM" type = "ROM"  base = "0xBFC00000" length = "0x00100000" />
50
51            <proc index  = "0" >
52                <irq type = "HARD" icuid = "0"  isr = "ISR_SWITCH" /> 
53                <irq type = "HARD" icuid = "8"  isr = "ISR_DMA" channel = "0" /> 
54                <irq type = "HARD" icuid = "16" isr = "ISR_TTY" channel = "0" /> 
55                <irq type = "HARD" icuid = "17" isr = "ISR_TTY" channel = "1" /> 
56                <irq type = "HARD" icuid = "18" isr = "ISR_TTY" channel = "2" /> 
57                <irq type = "HARD" icuid = "19" isr = "ISR_TTY" channel = "3" /> 
58                <irq type = "HARD" icuid = "20" isr = "ISR_TTY" channel = "4" /> 
59                <irq type = "HARD" icuid = "21" isr = "ISR_TTY" channel = "5" /> 
60                <irq type = "HARD" icuid = "22" isr = "ISR_TTY" channel = "6" /> 
61                <irq type = "HARD" icuid = "23" isr = "ISR_TTY" channel = "7" /> 
62                <irq type = "HARD" icuid = "24" isr = "ISR_TTY" channel = "8" /> 
63                <irq type = "HARD" icuid = "25" isr = "ISR_TTY" channel = "9" />
64                <irq type = "HARD" icuid = "26" isr = "ISR_TTY" channel = "10" /> 
65                <irq type = "HARD" icuid = "27" isr = "ISR_TTY" channel = "11" /> 
66                <irq type = "HARD" icuid = "28" isr = "ISR_TTY" channel = "12" /> 
67                <irq type = "HARD" icuid = "29" isr = "ISR_TTY" channel = "13" /> 
68                <irq type = "HARD" icuid = "30" isr = "ISR_TTY" channel = "14" /> 
69                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" /> 
70            </proc> 
71
72            <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" /> 
[215]73            <periph type = "XICU" psegname = "PSEG_XICU" channels = "18" />
[208]74            <periph type = "IOC" psegname = "PSEG_IOC" channels = "1" /> 
75            <periph type = "TTY" psegname = "PSEG_TTY" channels = "8" /> 
76            <periph type = "NIC" psegname = "PSEG_NIC" channels = "8" />
77            <periph type = "FBF" psegname = "PSEG_FBF" />
78
79        </cluster>
80        <cluster index = "3" >
81
82            <pseg name = "PSEG_RAM" type = "RAM"  base = "0xC0000000" length = "0x00C00000" />
[215]83            <pseg name = "PSEG_XICU" type = "PERI" base = "0xC0F00000" length = "0x00001000" />
[208]84            <pseg name = "PSEG_DMA" type = "PERI" base = "0xC0F30000" length = "0x00008000" />
85
86            <proc index = "0" >
87                <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
88                <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
89            </proc>
90
91            <periph  type = "DMA" psegname  = "PSEG_DMA" channels = "1" />
[215]92            <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
[208]93        </cluster>
94    </clusterset>
95
96    <globalset> 
[218]97        <vseg name = "seg_boot_code"      vbase = "0xBFC00000" mode = "CXW_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
[208]98            <vobj name = "boot_code"      type = "ELF" length = "0x00008000" binpath    = "build/boot/boot.elf" />
99        </vseg>
[218]100        <vseg name = "seg_boot_stack"     vbase = "0xBFC08000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
[208]101            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00004000" />
102        </vseg>
[218]103        <vseg name = "seg_boot_mapping"   vbase = "0xBFC0c000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
[208]104            <vobj name = "boot_mapping"   type = "BLOB" length  = "0x00004000" binpath  = "map.bin" />
105        </vseg>
106
107*** On voudrait répliquer le segment de code du systÚme (seg_kernel_code) dans tous les clusters...
108 
109        <vseg name = "seg_kernel_code"    vbase = "0x80000000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
110            <vobj name = "kernel_code"    type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
111        </vseg>
112        <vseg name = "seg_kernel_data"    vbase = "0x80010000" mode = "C_W_" clusterid = "0" psegname = "PSEG_RAM" > 
113            <vobj name = "kernel_data"    type = "ELF" length = "0x00040000" binpath = "build/sys/sys.elf" />
114                </vseg>
115        <vseg name = "seg_kernel_uncdata" vbase = "0x80080000" mode = "__W_" clusterid = "0" psegname = "PSEG_RAM" > 
116            <vobj name = "kernel_uncdata" type = "ELF" length = "0x00010000" binpath = "build/sys/sys.elf" />
117        </vseg>
118        <vseg name = "seg_kernel_init"    vbase = "0x80090000" mode = "CX__" clusterid = "0" psegname = "PSEG_RAM" > 
119            <vobj name  = "kernel_init"   type = "ELF" length = "0x00010000" binpath    = "build/sys/sys.elf" />
120        </vseg>
121
122*** Non replicated peripherals
123
[218]124        <vseg name = "seg_ioc"            vbase = "0xBFF10000" mode = "__W_" clusterid = "2" psegname = "PSEG_IOC" ident = "1" >
[208]125            <vobj name = "ioc"            type = "PERI" length  = "0x00001000" /> 
126        </vseg>
[218]127        <vseg name = "seg_tty"            vbase = "0xBFF20000" mode = "__W_" clusterid = "2" psegname = "PSEG_TTY" ident = "1" >
[208]128                        <vobj name = "tty"            type = "PERI" length  = "0x00001000" />
129        </vseg>
[218]130        <vseg name = "seg_fbf"            vbase = "0xBFD00000" mode = "__W_" clusterid = "2" psegname = "PSEG_FBF" ident = "1" >
[208]131            <vobj name = "fbf"            type = "PERI" length  = "0x00200000" /> 
132        </vseg>
[218]133        <vseg name = "seg_nic"            vbase = "0xBFF80000" mode = "__W_" clusterid = "2" psegname = "PSEG_NIC" ident = "1" >
[208]134            <vobj name = "nic"            type = "PERI" length  = "0x00021000" /> 
135        </vseg>
136
137*** On pourrait supprimer les vsegs associés aux composants XICU en les traitant comme les schedulers :
138*** accÚs en addresse physique et stockage de l'adresse de base de chaque XICU dans chaque processeur.
139*** On peut aussi définir un vseg factorisé en introduisant le CLUSTER_SIZE...
140
[215]141        <vseg name = "seg_icu_0"          vbase = "0x00F00000" mode = "__W_" clusterid = "0" psegname = "PSEG_XICU" > 
[208]142            <vobj name = "icu_0"          type = "PERI" length  = "0x00001000" /> 
143        </vseg>
[215]144        <vseg name = "seg_icu_1"          vbase = "0x40F00000" mode = "__W_" clusterid = "1" psegname = "PSEG_XICU" > 
[208]145            <vobj name = "icu_1"          type = "PERI" length  = "0x00001000" /> 
146        </vseg>
[215]147        <vseg name = "seg_icu_2"          vbase = "0x80F00000" mode = "__W_" clusterid = "2" psegname = "PSEG_XICU" > 
[208]148            <vobj name = "icu_2"          type = "PERI" length  = "0x00001000" /> 
149        </vseg>
[215]150        <vseg name = "seg_icu_3"          vbase = "0xC0F00000" mode = "__W_" clusterid = "3" psegname = "PSEG_XICU" > 
[208]151            <vobj name = "icu_3"          type = "PERI" length  = "0x00001000" /> 
152        </vseg>
153
154*** Il faudrait trouver un moyen de supprimer les vsegs associés aux composants DMA distribués, ou de les factoriser...
155
156        <vseg name = "seg_dma_0"          vbase = "0x00F30000" mode = "__W_" clusterid = "0" psegname = "PSEG_DMA" >
157            <vobj name = "dma_0"          type = "PERI" length  = "0x00008000" />
158        </vseg>
159        <vseg name = "seg_dma_1"          vbase = "0x40F30000" mode = "__W_" clusterid = "1" psegname = "PSEG_DMA" >
160            <vobj name = "dma_1"          type = "PERI" length  = "0x00008000" />
161        </vseg>
162        <vseg name = "seg_dma_2"          vbase = "0x80F30000" mode = "__W_" clusterid = "2" psegname = "PSEG_DMA" >
163            <vobj name = "dma_2"          type = "PERI" length  = "0x00008000" />
164        </vseg>
165        <vseg name = "seg_dma_3"          vbase = "0xC0F30000" mode = "__W_" clusterid = "3" psegname = "PSEG_DMA" >
166            <vobj name = "dma_3"          type = "PERI" length  = "0x00008000" />
167        </vseg>
168***
169    </globalset> 
170
171    <vspaceset>
172        <vspace name = "router" startname = "data" > 
173            <vseg name = "seg_data"        vbase = "0x00800000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" >
174                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" />
175            </vseg>
176            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "0" psegname = "PSEG_RAM" > 
177                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" /> 
178            </vseg>
179            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "0" psegname = "PSEG_RAM" > 
180                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
181            </vseg>
182            <vseg name = "seg_stack_prod"  vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname = "PSEG_RAM" >
183                <vobj name = "stack_prod"  type = "BUFFER" length = "0x00010000" /> 
[232]184                <vobj name = "heap_prod"   type = "BUFFER" length = "0x00010000" /> 
[208]185            </vseg>
[232]186            <vseg name = "seg_stack_cons"  vbase = "0x00030000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" > 
[208]187                <vobj name = "stack_cons"  type = "BUFFER" length = "0x00010000" />
[232]188                <vobj name = "heap_cons"   type = "BUFFER" length = "0x00010000" /> 
[208]189            </vseg>
[232]190            <vseg name = "seg_stack_routA" vbase = "0x00050000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" > 
[208]191                <vobj name = "stack_routA" type = "BUFFER" length = "0x00010000" />
[232]192                <vobj name = "heap_routA"  type = "BUFFER" length = "0x00010000" /> 
[208]193            </vseg>
[232]194            <vseg name = "seg_stack_routB" vbase = "0x00070000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" > 
[208]195                <vobj name = "stack_routB" type = "BUFFER" length = "0x00010000" />
[232]196                <vobj name = "heap_routB"  type = "BUFFER" length = "0x00010000" /> 
[208]197            </vseg>
[232]198            <vseg name = "seg_mwmrs"       vbase = "0x00090000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" > 
[208]199                <vobj name = "mwmr_in"     type = "MWMR" length = "0x00000020" init = "1" />
200                <vobj name = "mwmr_out"    type = "MWMR" length = "0x00000020" init = "1" />
201                    </vseg>
202
[232]203            <task name = "producer" clusterid = "0" proclocid = "0" stackname = "stack_prod"  heapname = "heap_prod"  startid = "0" usetty = "1" />
204            <task name = "consumer" clusterid = "1" proclocid = "0" stackname = "stack_cons"  heapname = "heap_cons"  startid = "1" usetty = "1" />
205            <task name = "router_A" clusterid = "2" proclocid = "0" stackname = "stack_routA" heapname = "heap_routA" startid = "2" usetty = "1" />
206            <task name = "router_B" clusterid = "3" proclocid = "0" stackname = "stack_routB" heapname = "heap_routB" startid = "2" usetty = "1" />
[208]207        </vspace>
208
209        <vspace name = "hello" startname = "data" >
210            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
211                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
212            </vseg>
213            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "1" psegname = "PSEG_RAM" > 
214                <vobj name = "code"            type     = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
215            </vseg>
216            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "1" psegname = "PSEG_RAM" >
217                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" /> 
218            </vseg>
219            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
220                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
[232]221                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
[208]222            </vseg>
223
[232]224            <task name = "main_hello" clusterid = "1" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
[208]225        </vspace>
226
227        <vspace name = "pgcd" startname = "data" >
228            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
229                <vobj name      = "data"       type     = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
230            </vseg>
231            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "2" psegname = "PSEG_RAM" >
232                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" />
233            </vseg>
234            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "2" psegname = "PSEG_RAM" >
235                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
236            </vseg>
237            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
238                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" /> 
[232]239                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" /> 
[208]240            </vseg>
241
[232]242            <task name = "main_pgcd" clusterid = "2" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
[208]243        </vspace>
244
245        <vspace name = "display" startname = "data" >
246            <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
247                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
[246]248                           </vseg>
[208]249            <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "3" psegname = "PSEG_RAM" >
250                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
251            </vseg>
252            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" clusterid = "3" psegname = "PSEG_RAM" >
253                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
254            </vseg>
255            <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
256                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
[232]257                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
[208]258            </vseg>
259
[232]260            <task name = "main_display" clusterid = "3" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" usefbdma = "1" />
[208]261        </vspace>
262    </vspaceset>
263</mapping_info>
Note: See TracBrowser for help on using the repository browser.