wiki:mapping_info

Version 1 (modified by alain, 10 years ago) (diff)

--

GIET_VM / Mapping

The C binary mapping data structure, is used by the GIET_VM to map one or several multi-threaded user applications on a generic multi-processors, multi-clusters architecture. This C binary structure is generated by the genmap tool from a source description using PYTHON.

This mapping is statically build by the GIET-VM bootloader in the boot phase:

  1. It contains a description of the target clusterized hardware architecture.The number of cluster is variable (can be one). The number of processors per cluster is variable (can be one). The number of peripherals and coprocessor per cluster is variable. The number of physical memory banks per cluster is variable.
  2. It contains a description of the user applications (an user application is called a vspace) to be launched on the platform. The number of parallel tasks per application is variable (can be one). Multi-Writer/Multi?-Reader communication channels between tasks are supported. Each vspace contains a variable number of virtual segments (called vsegs). The number of vspace can be one.
  3. It contains the mapping directives: The tasks are statically allocated to processors. The various software objects (user and kernel code segments, tasks stacks, tasks heaps, communication channels, etc.) are called vobjs, and are statically placed on the distributed physical memory banks (called psegs), using the paged virtual memory.

The C binary mapping data structure is defined in the mapping_info.h file, and is organised as the concatenation of a fixed size header, and 11 variable size arrays:

  • mapping_cluster_t cluster[]
  • mapping_pseg_t pseg[]
  • mapping_vspace_t vspace[]
  • mapping_vseg_t vseg[]
  • mapping_vobj_t vobj[]
  • mapping_task_t task[]
  • mapping_proc_t proc[]
  • mapping_irq_t irq[]
  • mapping_coproc_t coproc[]
  • mapping_cp_port_t cp_port[]
  • mapping_periph_t periph[]

It is intended to be stored in memory in the seg_boot_mapping segment.