Ignore:
Timestamp:
Sep 29, 2014, 3:53:12 PM (10 years ago)
Author:
alain
Message:

Partial update to support BPPs. To be completed by Cesar.

Location:
trunk/platforms/tsar_generic_leti
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/tsar_generic_leti/Makefile

    r800 r819  
    1 simul.x: top.cpp top.desc
     1simul.x: top.cpp top.desc hard_config.h
    22        soclib-cc -P -p top.desc -I. -o simul.x
    33
  • trunk/platforms/tsar_generic_leti/arch.py

    r803 r819  
    3434
    3535########################
    36 def arch( x_size    = 2,
    37           y_size    = 2,
    38           nb_procs  = 2 ):
     36def arch( x_size     = 2,
     37          y_size     = 2,
     38          nb_procs   = 2,
     39          fbf_width  = 128 ):
    3940
    4041    ### define architecture constants
     
    4243    nb_ttys           = 1
    4344    nb_nics           = 2
    44     fbf_width         = 128
    4545    x_io              = 0
    4646    y_io              = 0
    4747    x_width           = 4
    4848    y_width           = 4
    49     p_width           = int(ceil(log(nb_procs, 2)))
     49    p_width           = 4
    5050    paddr_width       = 40
    5151    irq_per_proc      = 4
    5252    use_ramdisk       = True
    53     peri_increment    = 0x10000
     53    peri_increment    = 0x10000    # distributed peripherals vbase address increment
     54    sched_increment   = 0x10000    # distributed schedulers vbase address increment
     55    ptab_increment    = 0x200000   # distributed page tables vbase address increment
    5456    reset_address     = 0x00000000
    5557    distributed_ptabs = False
     
    106108    rdk_size  = 0x02000000                 # 32 Mbytes
    107109
    108     ### define  preloader vseg base address and size
     110    ### define preloader & bootloader vsegs base addresses and sizes
     111    ### we want to pack these 5 vsegs in the same big page
    109112
    110113    preloader_vbase      = 0x00000000      # ident
    111114    preloader_size       = 0x00010000      # 64 Kbytes
    112115
    113     ### define  bootloader vsegs base addresses and sizes
    114 
    115116    boot_mapping_vbase   = 0x00010000      # ident
    116117    boot_mapping_size    = 0x00080000      # 512 Kbytes
     
    126127
    127128    ### define kernel vsegs base addresses and sizes
    128 
     129    ### we want to pack code, init and data vsegs in one big page
     130    ### we want to map the ptab vseg in one big page per cluster
     131    ### we want to map the sched vseg in small pages
     132   
    129133    kernel_code_vbase    = 0x80000000
    130     kernel_code_size     = 0x00020000      # 128 Kbytes
    131 
    132     kernel_data_vbase    = 0x80020000
    133     kernel_data_size     = 0x00020000      # 128 Kbytes
    134 
    135     kernel_uncdata_vbase = 0x80040000
    136     kernel_uncdata_size  = 0x00010000      # 64 Kbytes
    137 
    138     kernel_init_vbase    = 0x80050000
    139     kernel_init_size     = 0x00010000      # 64 Kbytes
    140 
    141     kernel_sched_vbase   = 0x80060000            # distributed in all clusters
    142     kernel_sched_size    = 0x2000 * nb_procs     # 8 kbytes per processor
     134    kernel_code_size     = 0x00080000      # 512 Kbytes per cluster
     135
     136    kernel_init_vbase    = 0x80080000
     137    kernel_init_size     = 0x00080000      # 512 Kbytes per cluster
     138
     139    kernel_data_vbase    = 0x80100000
     140    kernel_data_size     = 0x00100000      # 1 Mbytes  in cluster [0,0]
     141
     142    kernel_ptab_vbase    = 0xB0000000
     143    kernel_ptab_size     = 0x00200000      # 2 Mbytes per cluster
     144
     145    kernel_uncdata_vbase = 0x90000000
     146    kernel_uncdata_size  = 0x00001000      # 4 Kbytes
     147
     148    kernel_sched_vbase   = 0xA0000000                # distributed in all clusters
     149    kernel_sched_size    = 0x00002000 * nb_procs     # 8 kbytes per processor
    143150
    144151    ### create mapping
     
    147154                       x_size         = x_size,
    148155                       y_size         = y_size,
    149                        procs_max      = nb_procs,
     156                       nprocs         = nb_procs,
    150157                       x_width        = x_width,
    151158                       y_width        = y_width,
     
    225232    ### global vseg for preloader
    226233
    227     mapping.addGlobal( 'seg_preloader', preloader_vbase, preloader_size, '__W_',
    228                        vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
    229                        identity = True )
    230 
    231234    ### global vseg for ram disk
    232235
     
    279282                               'C_W_', vtype = 'SCHED', x = x , y = y , pseg = 'RAM' )
    280283
    281     ### GIET-VM specifics
    282     ### global vsegs for boot_loader / identity mapping
     284    ### global vsegs for preloader and boot_loader
     285    ### identity mapping / non local / big page
     286
     287    mapping.addGlobal( 'seg_preloader', preloader_vbase, preloader_size,
     288                       'CXW_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
     289                       identity = True, local = False, big = True )
    283290
    284291    mapping.addGlobal( 'seg_boot_mapping', boot_mapping_vbase, boot_mapping_size,
    285                        'C_W_', vtype = 'BLOB'  , x = 0, y = 0, pseg = 'RAM',
    286                        identity = True )
     292                       'CXW_', vtype = 'BLOB'  , x = 0, y = 0, pseg = 'RAM',
     293                       identity = True, local = False, big = True )
    287294
    288295    mapping.addGlobal( 'seg_boot_code', boot_code_vbase, boot_code_size,
    289296                       'CXW_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
    290                        identity = True )
     297                       identity = True, local = False, big = True )
    291298
    292299    mapping.addGlobal( 'seg_boot_data', boot_data_vbase, boot_data_size,
    293                        'C_W_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
    294                        identity = True )
     300                       'CXW_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
     301                       identity = True, local = False, big = True )
    295302
    296303    mapping.addGlobal( 'seg_boot_stack', boot_stack_vbase, boot_stack_size,
    297                        'C_W_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
    298                        identity = True )
    299 
    300     ### the code global vsegs for kernel can be replicated in all clusters
    301     ### if the page tables are distributed in all clusters.
    302 
    303     if distributed_ptabs:
    304         for x in xrange( x_size ):
    305             for y in xrange( y_size ):
    306                 cluster_xy = (x << y_width) + y;
    307 
    308                 mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
    309                                    'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
    310                                    binpath = 'build/kernel/kernel.elf', local = True )
    311 
    312                 mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
    313                                    'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
    314                                    binpath = 'build/kernel/kernel.elf', local = True )
    315     else:
    316         mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
    317                            'CXW_', vtype = 'ELF', x = 0 , y = 0 , pseg = 'RAM',
    318                             binpath = 'build/kernel/kernel.elf', local = False )
    319 
    320         mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
    321                            'CXW_', vtype = 'ELF', x = 0 , y = 0 , pseg = 'RAM',
    322                            binpath = 'build/kernel/kernel.elf', local = False )
    323 
    324     ### shared global vsegs for kernel
     304                       'CXW_', vtype = 'BUFFER', x = 0, y = 0, pseg = 'RAM',
     305                       identity = True, local = False, big = True )
     306
     307    ### global vsegs kernel_code, kernel_init
     308    for x in xrange( x_size ):
     309        for y in xrange( y_size ):
     310            cluster_xy = (x << y_width) + y;
     311
     312            mapping.addGlobal( 'seg_kernel_code', kernel_code_vbase, kernel_code_size,
     313                               'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
     314                               binpath = 'build/kernel/kernel.elf',
     315                               local = True, big = True )
     316
     317            mapping.addGlobal( 'seg_kernel_init', kernel_init_vbase, kernel_init_size,
     318                               'CXW_', vtype = 'ELF', x = x , y = y , pseg = 'RAM',
     319                               binpath = 'build/kernel/kernel.elf',
     320                               local = True, big = True )
     321
     322       
    325323
    326324    mapping.addGlobal( 'seg_kernel_data', kernel_data_vbase, kernel_data_size,
Note: See TracChangeset for help on using the changeset viewer.