Ignore:
Timestamp:
Jan 21, 2014, 7:21:53 PM (11 years ago)
Author:
cfuguet
Message:

Updating the 4c_1p_four xml file to support new giet vm
revision on the tsar_generic_xbar platform

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/mappings/4c_1p_four.xml

    r246 r277  
    11<?xml version="1.0"?>
    22
    3 <mapping_info signature = "0xdeadbeef" name = "C4_P1_FOUR" cluster_x = "2" cluster_y = "2" vspaces = "4" >
     3<mapping_info signature    = "0xdeadbeef"
     4              name         = "4c_1p_four"
     5              x_size       = "2"
     6              y_size       = "2"
     7              x_width      = "4"
     8              y_width      = "4"
     9              vspaces      = "4"
     10              increment    = "0x10000" >
     11
     12*** The "increment" parameter is the virtual address cluster increment
     13*** The physical address cluster increment is 0x10000000000 / NB_CLUSTERS
     14
     15*** This first section describes an instance of the "tsar_generic_iob" architecture
     16*** with 4 clusters, 1 processor per cluster and 40 bits physical address.
    417
    518    <clusterset>
    619
    7         <cluster index = "0" >
    8 
    9             <pseg name = "PSEG_RAM" type = "RAM"  base = "0x00000000" length = "0x00C00000" />
    10             <pseg name = "PSEG_XICU" type = "PERI" base = "0x00F00000" length = "0x00002000" />
    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" />
    19             <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
    20 
    21         </cluster>
    22         <cluster index = "1" >
    23 
    24             <pseg name = "PSEG_RAM" type = "RAM"  base = "0x40000000" length = "0x00C00000" />
    25             <pseg name = "PSEG_XICU" type = "PERI" base = "0x40F00000" length = "0x00002000" />
    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" />
    34             <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
    35 
    36         </cluster>
    37         <cluster index = "2" >
    38 
    39             <pseg name = "PSEG_RAM" type = "RAM"  base = "0x80000000" length = "0x00C00000" />
    40             <pseg name = "PSEG_XICU" type = "PERI" base = "0x80F00000" length = "0x00002000" />
    41             <pseg name = "PSEG_DMA" type = "PERI" base = "0x80F30000" length = "0x00008000" />
    42 
    43 *** Boot ROM and non replicated peripherals
    44 
    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" />
    49             <pseg name = "PSEG_ROM" type = "ROM"  base = "0xBFC00000" length = "0x00100000" />
     20        <cluster x = "0" y = "0" >
     21            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x0000000000" length = "0x0001000000" />
     22            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x00B0000000" length = "0x0000002000" />
     23            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x00B1000000" length = "0x0000008000" />
     24            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x00B8000000" length = "0x0000001000" />
     25
     26*** Non replicated peripherals (including the ROM containing the preloader code)
     27
     28            <pseg name = "PSEG_FBF"  type = "PERI" base = "0x00B2000000" length = "0x0000004000" />
     29            <pseg name = "PSEG_IOC"  type = "PERI" base = "0x00B3000000" length = "0x0000001000" />
     30            <pseg name = "PSEG_TTY"  type = "PERI" base = "0x00B4000000" length = "0x0000001000" />
     31            <pseg name = "PSEG_NIC"  type = "PERI" base = "0x00B5000000" length = "0x0000080000" />
     32            <pseg name = "PSEG_CMA"  type = "PERI" base = "0x00B6000000" length = "0x0000008000" />
     33            <pseg name = "PSEG_ROM"  type = "PERI" base = "0x00BFC00000" length = "0x0000004000" />
    5034
    5135            <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" />
     36                <irq type = "SOFT" icuid = "0"  isr = "ISR_WAKUP" />
     37                <irq type = "TIME" icuid = "1"  isr = "ISR_SWITCH" />
     38
     39                <irq type = "HARD" icuid = "16" isr = "ISR_TTY"     channel = "0" />
     40                <irq type = "HARD" icuid = "17" isr = "ISR_TTY"     channel = "1" />
     41                <irq type = "HARD" icuid = "18" isr = "ISR_TTY"     channel = "2" />
     42                <irq type = "HARD" icuid = "19" isr = "ISR_TTY"     channel = "3" />
     43                <irq type = "HARD" icuid = "20" isr = "ISR_TTY"     channel = "4" />
     44                <irq type = "HARD" icuid = "21" isr = "ISR_TTY"     channel = "5" />
     45                <irq type = "HARD" icuid = "22" isr = "ISR_TTY"     channel = "6" />
     46                <irq type = "HARD" icuid = "23" isr = "ISR_TTY"     channel = "7" />
     47
    6948                <irq type = "HARD" icuid = "31" isr = "ISR_IOC" />
    7049            </proc>
    7150
    72             <periph type = "DMA" psegname = "PSEG_DMA" channels = "1" />
    73             <periph type = "XICU" psegname = "PSEG_XICU" channels = "18" />
    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" />
     51            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1"  />
     52            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "1"  />
     53            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1"  />
     54            <periph type = "IOC"  psegname = "PSEG_IOC"  channels = "1"  />
     55            <periph type = "TTY"  psegname = "PSEG_TTY"  channels = "8"  />
     56            <periph type = "NIC"  psegname = "PSEG_NIC"  channels = "2"  />
     57            <periph type = "CMA"  psegname = "PSEG_CMA"  channels = "4"  />
     58            <periph type = "FBF"  psegname = "PSEG_FBF"  channels = "1"  />
     59            <periph type = "ROM"  psegname = "PSEG_ROM"  channels = "1"  />
    7860
    7961        </cluster>
    80         <cluster index = "3" >
    81 
    82             <pseg name = "PSEG_RAM" type = "RAM"  base = "0xC0000000" length = "0x00C00000" />
    83             <pseg name = "PSEG_XICU" type = "PERI" base = "0xC0F00000" length = "0x00001000" />
    84             <pseg name = "PSEG_DMA" type = "PERI" base = "0xC0F30000" length = "0x00008000" />
     62
     63        <cluster x = "0" y = "1" >
     64            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x0100000000" length = "0x0001000000" />
     65            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x01B0000000" length = "0x0000002000" />
     66            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x01B1000000" length = "0x0000008000" />
     67            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x01B8000000" length = "0x0000001000" />
    8568
    8669            <proc index = "0" >
    87                 <irq type = "HARD" icuid = "0" isr = "ISR_SWITCH" />
    88                 <irq type = "HARD" icuid = "8" isr = "ISR_DMA" channel = "0" />
     70                <irq type = "SOFT" icuid = "0" isr = "ISR_WAKUP" />
     71                <irq type = "TIME" icuid = "1" isr = "ISR_SWITCH" />
    8972            </proc>
    9073
    91             <periph  type = "DMA" psegname  = "PSEG_DMA" channels = "1" />
    92             <periph type = "XICU" psegname = "PSEG_XICU" channels = "2" />
     74            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1" />
     75            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "1" />
     76            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
     77        </cluster>
     78
     79        <cluster x = "1" y = "0" >
     80            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x1000000000" length = "0x0001000000" />
     81            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x10B0000000" length = "0x0000002000" />
     82            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x10B1000000" length = "0x0000008000" />
     83            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x10B8000000" length = "0x0000001000" />
     84
     85            <proc index = "0" >
     86                <irq type = "SOFT" icuid = "0" isr = "ISR_WAKUP" />
     87                <irq type = "TIME" icuid = "1" isr = "ISR_SWITCH" />
     88            </proc>
     89
     90            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1" />
     91            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "1" />
     92            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
     93        </cluster>
     94
     95        <cluster x = "1" y = "1" >
     96            <pseg name = "PSEG_RAM"  type = "RAM"  base = "0x1100000000" length = "0x0001000000" />
     97            <pseg name = "PSEG_XCU"  type = "PERI" base = "0x11B0000000" length = "0x0000002000" />
     98            <pseg name = "PSEG_DMA"  type = "PERI" base = "0x11B1000000" length = "0x0000008000" />
     99            <pseg name = "PSEG_MMC"  type = "PERI" base = "0x11B8000000" length = "0x0000001000" />
     100
     101            <proc index = "0" >
     102                <irq type = "SOFT" icuid = "0" isr = "ISR_WAKUP" />
     103                <irq type = "TIME" icuid = "1" isr = "ISR_SWITCH" />
     104            </proc>
     105
     106            <periph type = "DMA"  psegname = "PSEG_DMA"  channels = "1" />
     107            <periph type = "XCU"  psegname = "PSEG_XCU"  channels = "1" />
     108            <periph type = "MMC"  psegname = "PSEG_MMC"  channels = "1" />
    93109        </cluster>
    94110    </clusterset>
    95111
    96112    <globalset>
    97         <vseg name = "seg_boot_code"      vbase = "0xBFC00000" mode = "CXW_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
    98             <vobj name = "boot_code"      type = "ELF" length = "0x00008000" binpath    = "build/boot/boot.elf" />
    99         </vseg>
    100         <vseg name = "seg_boot_stack"     vbase = "0xBFC08000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
    101             <vobj name = "boot_stack"     type = "BUFFER" length = "0x00004000" />
    102         </vseg>
    103         <vseg name = "seg_boot_mapping"   vbase = "0xBFC0c000" mode = "C_W_" clusterid = "2" psegname = "PSEG_ROM" ident = "1" >
    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...
     113
     114*** Segments used by the boot code / A[31:28] = 0x0 / Identity mapping
     115- seg_boot_mapping is loaded by the boot-loader. It contains the mapping info. The content is reused by the kernel.
     116- 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.
     117- seg_boot_stack is contains the stacks used by all processors during reset and boot. The content is not reused by the Kernel.
     118- seg_boot_buffer is used by the boot-loader. It can contain a complete .elf file. The content is not reused by the kernel.
     119
     120        <vseg name = "seg_boot_mapping"   vbase = "0x00000000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
     121            <vobj name = "boot_mapping"   type = "BLOB"   length = "0x00010000" binpath = "map.bin" />
     122        </vseg>
     123        <vseg name = "seg_boot_code"      vbase = "0x00010000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
     124            <vobj name = "boot_code"      type = "BUFFER" length = "0x00020000" />
     125        </vseg>
     126        <vseg name = "seg_boot_data"      vbase = "0x00030000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
     127            <vobj name = "boot_data"      type = "BUFFER" length = "0x00010000" />
     128        </vseg>
     129        <vseg name = "seg_boot_buffer"    vbase = "0x00040000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
     130            <vobj name = "boot_buffer"    type = "BUFFER" length = "0x00020000" />
     131        </vseg>
     132        <vseg name = "seg_boot_stack"     vbase = "0x00060000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" ident = "1" >
     133            <vobj name = "boot_stack"     type = "BUFFER" length = "0x00090000" />
     134        </vseg>
     135
     136*** Segments used by the kernel / A[31:28] = 0x8
    108137 
    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" />
     138        <vseg name = "seg_kernel_code"    vbase = "0x80000000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" >
     139            <vobj name = "kernel_code"    type = "ELF" length = "0x00020000" binpath = "build/kernel/kernel.elf" />
     140        </vseg>
     141        <vseg name = "seg_kernel_data"    vbase = "0x80020000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" >
     142            <vobj name = "kernel_data"    type = "ELF" length = "0x00060000" binpath = "build/kernel/kernel.elf" />
    114143                </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 
    124         <vseg name = "seg_ioc"            vbase = "0xBFF10000" mode = "__W_" clusterid = "2" psegname = "PSEG_IOC" ident = "1" >
     144        <vseg name = "seg_kernel_uncdata" vbase = "0x80080000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_RAM" >
     145            <vobj name = "kernel_uncdata" type = "ELF" length = "0x00040000" binpath = "build/kernel/kernel.elf" />
     146        </vseg>
     147        <vseg name = "seg_kernel_init"    vbase = "0x800C0000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_RAM" >
     148            <vobj name = "kernel_init"    type = "ELF" length = "0x00010000" binpath = "build/kernel/kernel.elf" />
     149        </vseg>
     150
     151*** Segments for non replicated peripherals / A[31:28] = 0xB / Identity mapping
     152
     153        <vseg name = "seg_fbf"            vbase = "0xB2000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_FBF" ident = "1" >
     154            <vobj name = "fbf"            type = "PERI" length  = "0x00004000" />
     155        </vseg>
     156        <vseg name = "seg_ioc"            vbase = "0xB3000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_IOC" ident = "1" >
    125157            <vobj name = "ioc"            type = "PERI" length  = "0x00001000" />
    126158        </vseg>
    127         <vseg name = "seg_tty"            vbase = "0xBFF20000" mode = "__W_" clusterid = "2" psegname = "PSEG_TTY" ident = "1" >
     159        <vseg name = "seg_tty"            vbase = "0xB4000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_TTY" ident = "1" >
    128160                        <vobj name = "tty"            type = "PERI" length  = "0x00001000" />
    129161        </vseg>
    130         <vseg name = "seg_fbf"            vbase = "0xBFD00000" mode = "__W_" clusterid = "2" psegname = "PSEG_FBF" ident = "1" >
    131             <vobj name = "fbf"            type = "PERI" length  = "0x00200000" />
    132         </vseg>
    133         <vseg name = "seg_nic"            vbase = "0xBFF80000" mode = "__W_" clusterid = "2" psegname = "PSEG_NIC" ident = "1" >
    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 
    141         <vseg name = "seg_icu_0"          vbase = "0x00F00000" mode = "__W_" clusterid = "0" psegname = "PSEG_XICU" >
     162        <vseg name = "seg_nic"            vbase = "0xB5000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_NIC" ident = "1" >
     163            <vobj name = "nic"            type = "PERI" length  = "0x00080000" />
     164        </vseg>
     165        <vseg name = "seg_cma"            vbase = "0xB6000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_CMA" ident = "1" >
     166            <vobj name = "cma"            type = "PERI" length  = "0x00008000" />
     167        </vseg>
     168        <vseg name = "seg_rom"            vbase = "0xBFC00000" mode = "CXW_" x = "0" y = "0" psegname = "PSEG_ROM" ident = "1" >
     169            <vobj name = "rom"            type = "PERI" length  = "0x00004000" />
     170        </vseg>
     171
     172*** Segments for replicated ICUS / A[31:24] = 0xB0 / Increment = 0x10000 / Identity mapping in cluster 0           
     173
     174        <vseg name = "seg_icu_0"          vbase = "0xB0000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_XCU" ident = "1" >
    142175            <vobj name = "icu_0"          type = "PERI" length  = "0x00001000" />
    143176        </vseg>
    144         <vseg name = "seg_icu_1"          vbase = "0x40F00000" mode = "__W_" clusterid = "1" psegname = "PSEG_XICU" >
     177        <vseg name = "seg_icu_1"          vbase = "0xB0010000" mode = "__W_" x = "0" y = "1" psegname = "PSEG_XCU" >
    145178            <vobj name = "icu_1"          type = "PERI" length  = "0x00001000" />
    146179        </vseg>
    147         <vseg name = "seg_icu_2"          vbase = "0x80F00000" mode = "__W_" clusterid = "2" psegname = "PSEG_XICU" >
     180        <vseg name = "seg_icu_2"          vbase = "0xB0100000" mode = "__W_" x = "1" y = "0" psegname = "PSEG_XCU" >
    148181            <vobj name = "icu_2"          type = "PERI" length  = "0x00001000" />
    149182        </vseg>
    150         <vseg name = "seg_icu_3"          vbase = "0xC0F00000" mode = "__W_" clusterid = "3" psegname = "PSEG_XICU" >
     183        <vseg name = "seg_icu_3"          vbase = "0xB0110000" mode = "__W_" x = "1" y = "1" psegname = "PSEG_XCU" >
    151184            <vobj name = "icu_3"          type = "PERI" length  = "0x00001000" />
    152185        </vseg>
    153186
    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" >
     187*** segments for replicated DMAs / A[31:24] = 0xB1 / Increment = 0x10000 / Tdentity mapping in cluster 0
     188*** The peripheral type must be entirely defined by the 8 virtual address MSB bits (mask_type = 0xFF000000)
     189*** The cluster id must be encoded in the next 8 virtual address bits (cluster_mask = 0x00FF0000)
     190
     191        <vseg name = "seg_dma_0"          vbase = "0xB1000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_DMA" ident = "1" >
    157192            <vobj name = "dma_0"          type = "PERI" length  = "0x00008000" />
    158193        </vseg>
    159         <vseg name = "seg_dma_1"          vbase = "0x40F30000" mode = "__W_" clusterid = "1" psegname = "PSEG_DMA" >
     194        <vseg name = "seg_dma_1"          vbase = "0xB1010000" mode = "__W_" x = "0" y = "1" psegname = "PSEG_DMA" >
    160195            <vobj name = "dma_1"          type = "PERI" length  = "0x00008000" />
    161196        </vseg>
    162         <vseg name = "seg_dma_2"          vbase = "0x80F30000" mode = "__W_" clusterid = "2" psegname = "PSEG_DMA" >
     197        <vseg name = "seg_dma_2"          vbase = "0xB1100000" mode = "__W_" x = "1" y = "0" psegname = "PSEG_DMA" >
    163198            <vobj name = "dma_2"          type = "PERI" length  = "0x00008000" />
    164199        </vseg>
    165         <vseg name = "seg_dma_3"          vbase = "0xC0F30000" mode = "__W_" clusterid = "3" psegname = "PSEG_DMA" >
     200        <vseg name = "seg_dma_3"          vbase = "0xB1110000" mode = "__W_" x = "1" y = "1" psegname = "PSEG_DMA" >
    166201            <vobj name = "dma_3"          type = "PERI" length  = "0x00008000" />
     202        </vseg>
     203
     204*** segments for replicated MMC / A[31:24] = 0xB8 / Increment = 0x10000 / Identity mapping in cluster 0
     205*** The peripheral type must be entirely defined by the 8 virtual address MSB bits (mask_type = 0xFF000000)
     206*** The cluster id must be encoded in the next 8 virtual address bits (cluster_mask = 0x00FF0000)
     207
     208        <vseg name = "seg_memc_0"         vbase = "0xB8000000" mode = "__W_" x = "0" y = "0" psegname = "PSEG_MMC" ident = "1" >
     209            <vobj name = "memc_0"         type = "PERI" length  = "0x00001000" />
     210        </vseg>
     211        <vseg name = "seg_memc_1"         vbase = "0xB8010000" mode = "__W_" x = "0" y = "1" psegname = "PSEG_MMC" >
     212            <vobj name = "memc_1"         type = "PERI" length  = "0x00001000" />
     213        </vseg>
     214        <vseg name = "seg_memc_2"         vbase = "0xB8100000" mode = "__W_" x = "1" y = "0" psegname = "PSEG_MMC" >
     215            <vobj name = "memc_2"         type = "PERI" length  = "0x00001000" />
     216        </vseg>
     217        <vseg name = "seg_memc_3"         vbase = "0xB8110000" mode = "__W_" x = "1" y = "1" psegname = "PSEG_MMC" >
     218            <vobj name = "memc_3"         type = "PERI" length  = "0x00001000" />
     219        </vseg>
     220
     221*** segments for replicated schedulers / A[31:28] = 0xF / Increment = 0x10000
     222*** The type must be entirely defined by the 8 virtual address MSB bits (mask_type = 0xFF000000)
     223*** The cluster id must be encoded in the next 8 virtual address bits (cluster_mask = 0x00FF0000)
     224
     225        <vseg name = "seg_sched_0"        vbase = "0xF0000000" mode = "C_W_" x = "0" y = "0" psegname = "PSEG_RAM" >
     226            <vobj name = "sched_0"        type = "SCHED" length  = "0x00008000" />
     227        </vseg>
     228        <vseg name = "seg_sched_1"        vbase = "0xF0010000" mode = "C_W_" x = "0" y = "1" psegname = "PSEG_RAM" >
     229            <vobj name = "sched_1"        type = "SCHED" length  = "0x00008000" />
     230        </vseg>
     231        <vseg name = "seg_sched_2"        vbase = "0xF0100000" mode = "C_W_" x = "1" y = "0" psegname = "PSEG_RAM" >
     232            <vobj name = "sched_2"        type = "SCHED" length  = "0x00008000" />
     233        </vseg>
     234        <vseg name = "seg_sched_3"        vbase = "0xF0110000" mode = "C_W_" x = "1" y = "1" psegname = "PSEG_RAM" >
     235            <vobj name = "sched_3"        type = "SCHED" length  = "0x00008000" />
    167236        </vseg>
    168237***
     
    170239
    171240    <vspaceset>
     241
     242*** For each vspace, the startname field is the name of the vobj containing the start_vector (entry point array)
     243*** For each task, the startid field define the task entry point as an index in the start_vector
     244*** For each task, the x,y and proclocid arguments define the task static placement
     245*** For each task, the stackname field is the name of the vobj containing the task stack
     246*** For each task, the heapname field is the name of the vobj containing the task heap
     247
    172248        <vspace name = "router" startname = "data" >
    173             <vseg name = "seg_data"        vbase = "0x00800000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" >
     249            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" x = "0" y = "0" psegname = "PSEG_RAM" >
     250                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" />
     251            </vseg>
     252            <vseg name = "seg_data"        vbase = "0x00500000" mode = "__WU" x = "0" y = "0" psegname = "PSEG_RAM" >
    174253                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/router/router.elf" />
    175254            </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" >
     255            <vseg name = "seg_ptab"        vbase = "0x00600000" mode = "C___" x = "0" y = "0" psegname = "PSEG_RAM" >
    180256                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
    181257            </vseg>
    182             <vseg name = "seg_stack_prod"  vbase = "0x00010000" mode = "C_WU" clusterid = "0" psegname = "PSEG_RAM" >
     258            <vseg name = "seg_stack_prod"  vbase = "0x00700000" mode = "C_WU" x = "0" y = "0" psegname = "PSEG_RAM" >
    183259                <vobj name = "stack_prod"  type = "BUFFER" length = "0x00010000" />
    184260                <vobj name = "heap_prod"   type = "BUFFER" length = "0x00010000" />
    185261            </vseg>
    186             <vseg name = "seg_stack_cons"  vbase = "0x00030000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
     262            <vseg name = "seg_stack_cons"  vbase = "0x00800000" mode = "C_WU" x = "0" y = "1" psegname = "PSEG_RAM" >
    187263                <vobj name = "stack_cons"  type = "BUFFER" length = "0x00010000" />
    188264                <vobj name = "heap_cons"   type = "BUFFER" length = "0x00010000" />
    189265            </vseg>
    190             <vseg name = "seg_stack_routA" vbase = "0x00050000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
     266            <vseg name = "seg_stack_routA" vbase = "0x00900000" mode = "C_WU" x = "1" y = "0" psegname = "PSEG_RAM" >
    191267                <vobj name = "stack_routA" type = "BUFFER" length = "0x00010000" />
    192268                <vobj name = "heap_routA"  type = "BUFFER" length = "0x00010000" />
    193269            </vseg>
    194             <vseg name = "seg_stack_routB" vbase = "0x00070000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
     270            <vseg name = "seg_stack_routB" vbase = "0x00A00000" mode = "C_WU" x = "1" y = "1" psegname = "PSEG_RAM" >
    195271                <vobj name = "stack_routB" type = "BUFFER" length = "0x00010000" />
    196272                <vobj name = "heap_routB"  type = "BUFFER" length = "0x00010000" />
    197273            </vseg>
    198             <vseg name = "seg_mwmrs"       vbase = "0x00090000" mode = "__WU" clusterid = "0" psegname = "PSEG_RAM" >
     274            <vseg name = "seg_mwmrs"       vbase = "0x00B00000" mode = "__WU" x = "0" y = "0" psegname = "PSEG_RAM" >
    199275                <vobj name = "mwmr_in"     type = "MWMR" length = "0x00000020" init = "1" />
    200276                <vobj name = "mwmr_out"    type = "MWMR" length = "0x00000020" init = "1" />
    201277                    </vseg>
    202278
    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" />
     279            <task name = "producer" x = "0" y = "0" proclocid = "0" stackname = "stack_prod"  heapname = "heap_prod"  startid = "0" usetty = "1" />
     280            <task name = "consumer" x = "0" y = "1" proclocid = "0" stackname = "stack_cons"  heapname = "heap_cons"  startid = "1" usetty = "1" />
     281            <task name = "router_A" x = "1" y = "0" proclocid = "0" stackname = "stack_routA" heapname = "heap_routA" startid = "2" usetty = "1" />
     282            <task name = "router_B" x = "1" y = "0" proclocid = "0" stackname = "stack_routB" heapname = "heap_routB" startid = "2" usetty = "1" />
    207283        </vspace>
    208284
    209285        <vspace name = "hello" startname = "data" >
    210             <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
     286            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" x = "0" y = "1" psegname = "PSEG_RAM" >
     287                <vobj name = "code"            type     = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
     288            </vseg>
     289            <vseg name = "seg_data"        vbase = "0x00500000" mode = "C_WU" x = "0" y = "1" psegname = "PSEG_RAM" >
    211290                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/hello/hello.elf" />
    212291            </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" >
     292            <vseg name = "seg_ptab"        vbase = "0x00600000" mode = "C___" x = "0" y = "1" psegname = "PSEG_RAM" >
    217293                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" />
    218294            </vseg>
    219             <vseg name = "seg_stack"       vbase = "0x00010000" mode = "C_WU" clusterid = "1" psegname = "PSEG_RAM" >
     295            <vseg name = "seg_stack"       vbase = "0x00700000" mode = "C_WU" x = "0" y = "1" psegname = "PSEG_RAM" >
    220296                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
    221297                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
    222298            </vseg>
    223299
    224             <task name = "main_hello" clusterid = "1" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
     300            <task name = "main_hello" x = "0" y = "1" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
    225301        </vspace>
    226302
    227303        <vspace name = "pgcd" startname = "data" >
    228             <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "2" psegname = "PSEG_RAM" >
     304            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" x = "1" y = "0" psegname = "PSEG_RAM" >
     305                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
     306            </vseg>
     307            <vseg name = "seg_data"        vbase = "0x00500000" mode = "C_WU" x = "1" y = "0" psegname = "PSEG_RAM" >
    229308                <vobj name      = "data"       type     = "ELF" length = "0x00010000" binpath = "build/pgcd/pgcd.elf" />
    230309            </vseg>
    231             <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "2" psegname = "PSEG_RAM" >
     310            <vseg name = "seg_ptab"        vbase = "0x00600000" mode = "C___" x = "1" y = "0" psegname = "PSEG_RAM" >
    232311                <vobj name = "ptab"        type = "PTAB" length = "0x00012000" align = "13" />
    233312            </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" >
     313            <vseg name = "seg_stack"       vbase = "0x00700000" mode = "C_WU" x = "1" y = "0" psegname = "PSEG_RAM" >
    238314                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
    239315                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
    240316            </vseg>
    241317
    242             <task name = "main_pgcd" clusterid = "2" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
     318            <task name = "main_pgcd" x = "1" y = "0" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" />
    243319        </vspace>
    244320
    245321        <vspace name = "display" startname = "data" >
    246             <vseg name = "seg_data"        vbase = "0x00800000" mode = "C_WU" clusterid = "3" psegname = "PSEG_RAM" >
     322            <vseg name = "seg_code"        vbase = "0x00400000" mode = "CX_U" x = "1" y = "1" psegname = "PSEG_RAM" >
     323                <vobj name = "code"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
     324            </vseg>
     325            <vseg name = "seg_data"        vbase = "0x00500000" mode = "C_WU" x = "1" y = "1" psegname = "PSEG_RAM" >
    247326                <vobj name = "data"        type = "ELF" length = "0x00010000" binpath = "build/display/display.elf" />
    248327                           </vseg>
    249             <vseg name = "seg_ptab"        vbase = "0x00300000" mode = "C___" clusterid = "3" psegname = "PSEG_RAM" >
     328            <vseg name = "seg_ptab"        vbase = "0x00600000" mode = "C___" x = "1" y = "1" psegname = "PSEG_RAM" >
    250329                <vobj name = "ptab"        type = "PTAB" length  = "0x00012000" align   = "13" />
    251330            </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" >
     331            <vseg name = "seg_stack"       vbase = "0x00700000" mode = "C_WU" x = "1" y = "1" psegname = "PSEG_RAM" >
    256332                <vobj name = "stack"       type = "BUFFER" length = "0x00010000" />
    257333                <vobj name = "heap"        type = "BUFFER" length = "0x00010000" />
    258334            </vseg>
    259335
    260             <task name = "main_display" clusterid = "3" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" usefbdma = "1" />
     336            <task name = "main_display" x = "1" y = "1" proclocid = "0" stackname = "stack" heapname = "heap" startid = "0" usetty = "1" usecma = "1" />
    261337        </vspace>
     338
    262339    </vspaceset>
    263340</mapping_info>
Note: See TracChangeset for help on using the changeset viewer.