77 | | The ''mapping.addPeriph( )'' construct adds one peripheral, and the associated physical segment. It has the following arguments: |
78 | | || name || peripheral name || |
| 77 | The '''mapping.addProc( )''' construct define one MIPS32 processor core in a cluster (number of processor cores can different in different clusters). It has the following arguments: |
| 78 | || x || cluster x coordinate || |
| 79 | || y || physical || |
| 80 | || p || physical memory bank size (bytes) || |
| 81 | |
| 82 | The physical global processor index will be : ( ( x << y_width ) + y ) << p_width ) + p |
| 83 | |
| 84 | === Physical memory bank === |
| 85 | |
| 86 | The '''mapping.addRam( )''' construct define one physical memory bank, and the associated physical segment in a cluster. It has the following arguments: |
| 87 | || name || segment name || |
| 88 | || base || physical memory bank base address || |
| 89 | || size || physical memory bank size (bytes) || |
| 90 | |
| 91 | The target cluster coordinates (x,y) is defined by the base address MSB bits. |
| 92 | |
| 93 | === Physical peripheral === |
| 94 | |
| 95 | The '''mapping.addPeriph( )''' construct adds one peripheral, and the associated physical segment in a cluster. It has the following arguments: |
| 96 | || name || segment name || |
90 | | The ''mapping.addRam( )'' construct adds one physical memory bank, and the associated physical segment. It has the following arguments: |
| 109 | The '''mapping.addIrq()''' construct adds one IRQ line input to an XCU peripheral, or to a PIC peripheral. It has the following arguments: |
| 110 | || periph || peripheral receiving the IRQ line || |
| 111 | || index || input port index || |
| 112 | || isrtype || Interrupt Service Routine type || |
| 113 | || channel || channel index for multi-channel ISR || |
| 114 | |
| 115 | The supported ISR types are defined in the [source:soft/giet_vm/giet_python/mapping.py mapping.py] file. |
| 116 | |
| 117 | === Kernel vseg === |
| 118 | |
| 119 | The '''mapping.addGlobal()''' construct define a kernel virtual segment (a ''kernel vseg'' is defined in all ''vspaces'', and is called ''global''). It has the following arguments: |
| 120 | || name || virtual segment name || |
| 121 | || vbase || virtual base address || |
| 122 | || size || segment size (bytes || |
| 123 | || mode || access rights (CXWU) || |
| 124 | || vtype || software object type || |
| 125 | || x || destination cluster X coordinate || |
| 126 | || y || destination cluster Y coordinate || |
| 127 | || pseg || destination pseg name || |
| 128 | || identity || identity mapping required (default = False) || |
| 129 | || binpath || pathname for binary file if required (default = ' ') || |
| 130 | || align || alignment constraint if required (default = 0) || |
| 131 | || local || only mapped in local page table if true (default = False) || |
| 132 | || big || to be mapped in one or several big pages (2 Mbytes) || |
| 133 | |
| 134 | The supported values for the ''mode'' argument, and for the ''vtype'' arguments are defined in the [source:soft/giet_vm/giet_python/mapping.py mapping.py] file. |
| 135 | The ''x'', ''y'', and ''pseg'' define actually the mapping. |
| 136 | As a global vseg can be mapped (replicated) in more than one cluster, the local argumentpage tables can be r, the ''local'' argument |
| 137 | Any ''vseg'' can be mapped or in a set of consecutive small pages (4 Kbytes), either on a set of consecutives big pages (2 Mbytes). |