Inter-processor communication and life cycle management in heterogeneous multicore systems
Today there are various demands on a system regarding safety, security, energy efficiency as well as performance, connectivity or real-time capability, especially within the scope of the Internet of Things. Heterogeneous multicore systems provide structures and mechanisms to comply with these demands on a single SoC.
Heterogeneous multicore systems generally support the subdivision of processor(s) and dedicated peripherals into individual units on which different operating systems or applications can run in isolation. In combination with controlled data exchange between the units and the possibility to load, start, shutdown or send to sleep single processors, they can be utilized for different use cases. This way of asymmetric multiprocessing (AMP) requires reliable features for life cycle management (LCM) of processors and inter-processor communication (IPC), e.g. for controlled data exchange between the units.
The variety of heterogeneous architectures on the market leads to the request for a standard framework with a standard API which provides these features independent of the SoC and its processors. The mainline Linux kernel already provides drivers which support inter-processor communication and life cycle management for remote processors. This implementation of IPC applies the indirect connection method using shared memory for data exchange and interrupts for signaling. Based on these drivers there is an open source framework in development called OpenAMP, which implements the same structures, functionalities and APIs as the approach to create an open source solution supporting bare metal and FreeRTOS.
In the scope of research for own developments, emtrion tested the usability of this framework for implementation on the i.MX6 SoloX with Linux on the Cortex-A9 as master and FreeRTOS on the Cortex-M4 as remote. It turned out to be a good approach with the potential to become a standard solution.