AMP  Version 1.0.0
Asymmetric Multiprocessing
Introduction

The Asymmetric Multiprocessing (AMP) pack provides a framework that allows operating systems to interact within a broad range heterogeneous ARM Cortex-based devices. AMP applications can thus leverage parallelism offered by a multicore device configuration.

Today, more and more SoCs combine ARM Cortex-A and Cortex-M cores. As a result, synchronizing the applications running on the various cores - together with their operating systems - becomes more difficult. Thus, software developers struggle to unleash the full potential of the hardware. Symmetric multiprocessing (SMP) architectures allow to balance the load of the application across homogeneous processors. This is not possible within a heterogeneous device.

Various solutions to this problem are available from for example the Multicore Association with OpenAMP that enables communication of an embedded application using the RPMsg protocol available in the Linux Kernel. NXP provides RPMsg-Lite, a RPMsg implementation that is specifically targeted at microcontrollers.

This manual explains the the usage of the RPMSG software component that is part of this software pack. It comes in two variants:

  • OpenAMP, an open-source framework for inter-process communication (IPC), resource management and sharing, and process control.
  • RPMsg-Lite, a lightweight implementation of the Remote Processor Messaging (RPMsg) protocol.

The RPMSG software component can be used in different ways. The following diagram shows the various usage examples:

RPMSG use cases

How it works

As RPMSG is about inter-processor communication, you need to prepare both processors for it. In this environment, usually the ARM Cortex-A based processor runs Linux, while the ARM Cortex-M based processor runs either a real-time operating system (RTOS), such as Keil RTX5 or bare-metal.

For Linux, you need to prepare the kernel and add the modules that are mentioned in the diagram above to be able to communicate with the microcontroller via RPMSG. In the microcontroller application, you need to add the software component ::AMP:RPSMG, either in the OpenAMP or in the RPMsg-Lite variant. For Ethernet communication using the OpenAMP component, you also need to enable the CMSIS-Driver for Ethernet and the Network component itself. Please refer to OpenAMP usage for more information.

The device family packs of the NXP i.MX6, i.MX7, and Vybrid VF61 devices contain example projects that are using these modules/software components to demonstrate the usage of inter-processor communication in real projects.

Note
Use DS-MDK with the example projects as this IDE gives you the capability to debug both cores simultaneously and to detect any problems early in the design cycle. DS-MDK is specifically designed to support heterogeneous devices, such as the NXP i.MX families.

Revision History

Version Description
v1.0.0 Initial release for AMP v1.0.0