As the need for computational performance keeps growing it’s becoming more common for embedded systems to include more than one CPU, to keep pace with increasingly demanding applications, such as those for real-time processing of media streams. Multicore processors meet the need for higher performances, speed and better power consumption, thus increasing the potential for embedded devices that are all growing in complexity.
Two main options are available to handle the cooperation between multiple cores: Symmetric Multi-Processing mode (SMP) and Asymmetric Multi-Processing mode (AMP). The choice relies on
the level of parallelism required by the application and on how easily the tasks can be distributed within the cores.
In SMP mode a single OS manages all the cores simultaneously. The parallelism in the application is extracted by the single OS, which dynamically schedules tasks across all cores while allowing full utilization of them. It is also responsible for handling the sharing of all resources and the inter-communication between the cores.
With AMP mode separate OS images can reside in memory; each core may or may not run an OS and may have a different architecture. AMP can be homogeneous or heterogeneus: in the first case each core runs the same OS, while in the latter each core runs a different OS (or a different version of the same one). Resource sharing between different OSs running simultaneously has to be managed more carefully than in SMP mode and a proper inter-core communication protocol has to be implemented, in order for the cores to communicate transparently between each other.
An interesting usage for AMP is possible, where one core runs a real-time OS (such as FreeRTOS or Freescale’s MXQ) and handles all the computationally-demanding operations, while another core runs a Linux OS and manages the higher-level applications. Another scenario may include a Linux OS alongside a wireless-oriented distribution such as OpenWRT. An AMP environment allows also to make the best of multiple cores with different architectures optimized for specific activities, like having a MCU for real-time tasks and a MPU managing the UI.
The ability for an embedded system to run on AMP mode highly increases the potential of the board and allows to fully exploit its capabilities.
The aim of my thesis is to study the portability of the asymmetric multi-processing on the Amber board and to implement a demo-application on the i.MX6 SoloX processor, which couples a
Cortex-A9 with a Cortex-M4. The starting point will be the existing porting available for the Nit6_SoloX board by Boundary Devices.