Changes between Initial Version and Version 1 of DsxvmMapping


Ignore:
Timestamp:
Oct 19, 2012, 12:33:13 PM (12 years ago)
Author:
karaoui
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DsxvmMapping

    v1 v1  
     1= Mapping Description =
     2
     3In this section we will see how one can describe the mapping of the different soft object in DSX-VM.
     4
     5== Mapper object ==
     6
     7This python object must be initialized first. It has the following arguments :
     8{{{
     9Mapper(hard, tcg1, tcg2 ...)
     10}}}
     11 * the first argument is a python description of the hardware (see [https://www-asim.lip6.fr/trac/dsx/wiki/DsxvmHardware]).
     12 * the rest of arguments is either one or more ''tcg'' objects of applications.
     13
     14== The mapping ==
     15
     16Once we declared the Mapper object we can use the ''''map'''' methode to map the different soft object.
     17The arguments of the ''''map'''' function depend on the type of object to be mapped:
     18
     19* For soft resources (mwmr channel, barriers, locks):
     20{{{
     21 mapper.map(soft_object, pseg = physical_segment_to_map_into)
     22}}}
     23
     24* For task objects :
     25 * If we map the task on a processor :
     26   {{{
     27   mapper.map(soft_object, cluster = cluster_number, proc = proc_number, stack = physical_segment_to_map_into)
     28   }}}
     29 * If we map the task on a coprocessor :
     30   {{{
     31   m.map(task, coprocessor = coproc)
     32   }}}
     33
     34* For the Tcg objects :
     35  {{{
     36  m.map(tcg, code = physical_segment_to_map_into,  data = physical_segment_to_map_into,  ptab = physical_segment_to_map_into)
     37  }}}
     38
     39* For the Kernel (GIET-VM) objects:
     40  {{{
     41  m.map('system', boot = physical_segment_to_map_into,  kernel = physical_segment_to_map_into)
     42  }}}
     43
     44The meaning of the arguments is :
     45 - soft_object : this is the only mandatory argument, it can either be the name of the object or the object itself
     46 - physical_segment_to_map_into : the the physical segment(RAM/ROM objects) on which the  mapping is done
     47
     48== Example ==
     49We will see the mapping of the a Hello world application.
     50
     51* The Hardware description :
     52{{{
     53#!/usr/bin/env python
     54
     55from dsx.hard.hard import *
     56
     57
     58def AlmoArch(nb_proc = 4, nb_tty = 2, timer_pbase = 0x91000000, icu_pbase = 0x9F000000):
     59
     60    cluster_x = 1
     61    cluster_y = 1
     62    nb_clusters = cluster_x * cluster_y
     63    hd = Hardware(cluster_x, cluster_y, nb_proc)
     64
     65    ####### peripherals ########
     66    hd.add(Tty('tty', pbase = 0x90000000, channel_size = 16, nb_channel = nb_tty))
     67
     68    for cl in range(nb_clusters):
     69        hd.add(Timer('timer%d'%cl, pbase = timer_pbase + (cl * hd.cluster_span), channel_size = 16, nb_channel = nb_proc))
     70        hd.add(Icu  ('icu%d'%cl  , pbase = icu_pbase + (cl * hd.cluster_span)  , channel_size = 32, nb_channel = nb_proc))
     71
     72
     73    ######## irqs ########
     74    for i in xrange(nb_proc):
     75        hd.add(Irq(proc_id = i , cluster_id = 0, icu_irq_id = i, peri = Timer , channel_id = i ))
     76
     77
     78    ##### mwmr_coproc ######
     79    hd.add(MwmrCoprocTaskWrapper("tg_coproc"    , pbase = 0x94000000, channel_size = 32, sc_name = 'TgCoproc'))
     80    hd.add(MwmrCoprocTaskWrapper("ramdac_coproc", pbase = 0x95000000, channel_size = 32, sc_name = 'RamdacCoproc'))
     81
     82    ######## Mems ########
     83    hd.add(ROM("PSEG_ROM", pbase = 0xbfc00000, size = 0x00010000))
     84    hd.add(RAM("PSEG_RAU", pbase = 0x00000000, size = 0x01000000))
     85    hd.add(RAM("PSEG_RAK", pbase = 0x80000000, size = 0x00100000))
     86
     87    return hd
     88
     89}}}
     90
     91* The TCG description :
     92{{{
     93#!/usr/bin/env python
     94
     95import dsx
     96
     97
     98tcg = dsx.Tcg("hello", dsx.Task('main', 'hello'), )
     99}}}
     100
     101* The mapping description :
     102{{{
     103#!/usr/bin/env python
     104
     105import dsx
     106
     107from almo import AlmoArch
     108from app import tcg
     109from dsx.mapper.mapper import Mapper
     110
     111
     112hd =  AlmoArch(nb_tty = 2)
     113
     114mpr = Mapper(hd, tcg)
     115
     116
     117mpr.map('main', cluster = 0, proc = 0, stack = 'PSEG_RAU')
     118mpr.map('hello', code = 'PSEG_RAU', data = 'PSEG_RAU', ptab = 'PSEG_RAU')
     119mpr.map('system' , boot = 'PSEG_ROM', kernel = 'PSEG_RAK')
     120
     121mpr.generate(dsx.Giet(outdir = 'plateform', debug = True))
     122}}}
     123
     124More examples can be found in the ''examples'' directory in DSX-VM.