Ignore:
Timestamp:
Dec 3, 2015, 4:40:49 PM (9 years ago)
Author:
alain
Message:

Modify the mjpeg application to support an optional
DCT hardware coprocessor.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/applications/mjpeg/mjpeg.py

    r723 r736  
    3232    nprocs    = mapping.nprocs
    3333
    34     assert (nprocs >= 1)
     34    assert (nprocs >= 1) and (nprocs <= 4)
    3535
    3636    # define vsegs base & size
     
    4242
    4343    heap_base  = 0x30000000
    44     heap_size  = 0x00100000     # 1M bytes (per cluster)     
     44    heap_size  = 0x00200000     # 2 Mbytes (per cluster)     
    4545
    4646    stack_base = 0x40000000
     
    4949    # create vspace
    5050    vspace = mapping.addVspace( name = 'mjpeg',
    51                                 startname = 'data',
     51                                startname = 'mjpeg_data',
    5252                                active = True )
    5353   
    5454    # data vseg : shared / cluster[0][0]
    55     mapping.addVseg( vspace, 'data', data_base , data_size,
     55    mapping.addVseg( vspace, 'mjpeg_data', data_base , data_size,
    5656                     'C_WU', vtype = 'ELF', x = 0, y = 0, pseg = 'RAM',
    5757                     binpath = 'bin/mjpeg/appli.elf',
     
    6666                base  = heap_base + (cluster_id * size)
    6767
    68                 mapping.addVseg( vspace, 'heap_%d_%d' %(x,y), base , size,
     68                mapping.addVseg( vspace, 'mjpeg_heap_%d_%d' %(x,y), base , size,
    6969                                 'C_WU', vtype = 'HEAP', x = x, y = y, pseg = 'RAM',
    7070                                 local = False, big = True )
     
    7676            if ( mapping.clusters[cluster_id].procs ):
    7777
    78                 mapping.addVseg( vspace, 'code_%d_%d' %(x,y),
     78                mapping.addVseg( vspace, 'mjpeg_code_%d_%d' %(x,y),
    7979                                 code_base , code_size,
    8080                                 'CXWU', vtype = 'ELF', x = x, y = y, pseg = 'RAM',
     
    8585    # ... plus main_stack and tg_stack in cluster[0][0]
    8686    base = stack_base
    87     mapping.addVseg( vspace, 'main_stack',
     87    mapping.addVseg( vspace, 'mjpeg_main_stack',
    8888                     base, stack_size, 'C_WU', vtype = 'BUFFER',
    8989                     x = 0 , y = 0 , pseg = 'RAM',
     
    9292    base += stack_size
    9393
    94     mapping.addVseg( vspace, 'tg_stack',
     94    mapping.addVseg( vspace, 'mjpeg_tg_stack',
    9595                     base , stack_size, 'C_WU', vtype = 'BUFFER',
    9696                     x = 0 , y = 0 , pseg = 'RAM',
     
    103103            if ( mapping.clusters[cluster_id].procs ):
    104104
    105                 mapping.addVseg( vspace, 'demux_stack_%d_%d' % (x,y),
    106                                  base, stack_size, 'C_WU', vtype = 'BUFFER',
    107                                  x = x , y = y , pseg = 'RAM',
    108                                  local = True )
    109 
    110                 base += stack_size
    111 
    112                 mapping.addVseg( vspace, 'vld_stack_%d_%d' % (x,y),
    113                                  base, stack_size, 'C_WU', vtype = 'BUFFER',
    114                                  x = x , y = y , pseg = 'RAM',
    115                                  local = True )
    116 
    117                 base += stack_size
    118 
    119                 mapping.addVseg( vspace, 'iqzz_stack_%d_%d' % (x,y),
    120                                  base, stack_size, 'C_WU', vtype = 'BUFFER',
    121                                  x = x , y = y , pseg = 'RAM',
    122                                  local = True )
    123 
    124                 base += stack_size
    125 
    126                 mapping.addVseg( vspace, 'idct_stack_%d_%d' % (x,y),
    127                                  base, stack_size, 'C_WU', vtype = 'BUFFER',
    128                                  x = x , y = y , pseg = 'RAM',
    129                                  local = True )
    130 
    131                 base += stack_size
    132 
    133                 mapping.addVseg( vspace, 'libu_stack_%d_%d' % (x,y),
     105                mapping.addVseg( vspace, 'mjpeg_demux_stack_%d_%d' % (x,y),
     106                                 base, stack_size, 'C_WU', vtype = 'BUFFER',
     107                                 x = x , y = y , pseg = 'RAM',
     108                                 local = True )
     109
     110                base += stack_size
     111
     112                mapping.addVseg( vspace, 'mjpeg_vld_stack_%d_%d' % (x,y),
     113                                 base, stack_size, 'C_WU', vtype = 'BUFFER',
     114                                 x = x , y = y , pseg = 'RAM',
     115                                 local = True )
     116
     117                base += stack_size
     118
     119                mapping.addVseg( vspace, 'mjpeg_iqzz_stack_%d_%d' % (x,y),
     120                                 base, stack_size, 'C_WU', vtype = 'BUFFER',
     121                                 x = x , y = y , pseg = 'RAM',
     122                                 local = True )
     123
     124                base += stack_size
     125
     126                mapping.addVseg( vspace, 'mjpeg_idct_stack_%d_%d' % (x,y),
     127                                 base, stack_size, 'C_WU', vtype = 'BUFFER',
     128                                 x = x , y = y , pseg = 'RAM',
     129                                 local = True )
     130
     131                base += stack_size
     132
     133                mapping.addVseg( vspace, 'mjpeg_libu_stack_%d_%d' % (x,y),
    134134                                 base, stack_size, 'C_WU', vtype = 'BUFFER',
    135135                                 x = x , y = y , pseg = 'RAM',
     
    139139
    140140    # threads mapping: demux, vld, iqzz, idct, libu replicated in all clusters
    141     # ... plus main & tg on P[0,0,0]
     141    # main & tg are mapped in cluster[0,0]
    142142    mapping.addThread( vspace, 'main', True, 0, 0, 0,
    143                        'main_stack',
    144                        'heap_0_0',
     143                       'mjpeg_main_stack',
     144                       'mjpeg_heap_0_0',
    145145                       0 )                      # index in start_vector
    146146
     
    162162        p_tg    = 0
    163163        p_demux = 1
    164         p_vld   = 1
     164        p_vld   = 2
    165165        p_iqzz  = 1
    166         p_idct  = 2
     166        p_idct  = 1
    167167        p_libu  = 1
    168168    elif ( nprocs == 4 ):
    169169        p_tg    = 0
    170170        p_demux = 1
    171         p_vld   = 2
     171        p_vld   = 3
    172172        p_iqzz  = 2
    173173        p_idct  = 3
    174174        p_libu  = 2
    175     elif ( nprocs == 5 ):
    176         p_tg    = 0
    177         p_demux = 1
    178         p_vld   = 2
    179         p_iqzz  = 3
    180         p_idct  = 4
    181         p_libu  = 3
    182     else:
    183         p_tg    = 0
    184         p_demux = 1
    185         p_vld   = 2
    186         p_iqzz  = 3
    187         p_idct  = 4
    188         p_libu  = 5
    189175   
    190176    mapping.addThread( vspace, 'tg', False, 0, 0, p_tg,
    191                        'tg_stack',
    192                        'heap_0_0',
     177                       'mjpeg_tg_stack',
     178                       'mjpeg_heap_0_0',
    193179                       1 )                      # index in start_vector
    194180
     
    198184
    199185                mapping.addThread( vspace, 'demux_%d_%d' % (x,y), False , x, y, p_demux,
    200                                    'demux_stack_%d_%d' % (x,y),
    201                                    'heap_%d_%d' % (x,y),
     186                                   'mjpeg_demux_stack_%d_%d' % (x,y),
     187                                   'mjpeg_heap_%d_%d' % (x,y),
    202188                                   2 )   # start_index 
    203189
    204190                mapping.addThread( vspace, 'vld_%d_%d' % (x,y), False , x, y, p_vld,
    205                                    'vld_stack_%d_%d' % (x,y),
    206                                    'heap_%d_%d' % (x,y),
     191                                   'mjpeg_vld_stack_%d_%d' % (x,y),
     192                                   'mjpeg_heap_%d_%d' % (x,y),
    207193                                   3 )   # start_index 
    208194
    209195                mapping.addThread( vspace, 'iqzz_%d_%d' % (x,y), False , x, y, p_iqzz,
    210                                    'iqzz_stack_%d_%d' % (x,y),
    211                                    'heap_%d_%d' % (x,y),
     196                                   'mjpeg_iqzz_stack_%d_%d' % (x,y),
     197                                   'mjpeg_heap_%d_%d' % (x,y),
    212198                                   4 )   # start_index 
    213199
    214200                mapping.addThread( vspace, 'idct_%d_%d' % (x,y), False , x, y, p_idct,
    215                                    'idct_stack_%d_%d' % (x,y),
    216                                    'heap_%d_%d' % (x,y),
     201                                   'mjpeg_idct_stack_%d_%d' % (x,y),
     202                                   'mjpeg_heap_%d_%d' % (x,y),
    217203                                   5 )   # start_index 
    218204
    219205                mapping.addThread( vspace, 'libu_%d_%d' % (x,y), False , x, y, p_libu,
    220                                    'libu_stack_%d_%d' % (x,y),
    221                                    'heap_%d_%d' % (x,y),
     206                                   'mjpeg_libu_stack_%d_%d' % (x,y),
     207                                   'mjpeg_heap_%d_%d' % (x,y),
    222208                                   6 )   # start_index 
    223209
Note: See TracChangeset for help on using the changeset viewer.