NXP provides multicore sw components for heterogenous multicore MCU and MPU parts within the MCUXpressoSDK. It deals with Multicore Software Development Kit (MCSDK) that provides comprehensive software support for NXP dual/multicore devices. It consists of the following software components:
This library provides a number of services for multicore systems. The main MCMGR features are:
The MCMGR library is available for several MCU parts and can be obtained from an MCUXpressoSDK packages. Visit https://mcuxpresso.nxp.com to configure, build and download these packages. To get the board list with multicore support (MCMGR included) use filtering based on Middleware and search for 'multicore' string. Once the selected package with the multicore middleware is downloaded, see the <MCUXpressoSDK_install_dir>/middleware/multicore/mcmgr folder. For detailed information about the MCMGR library, see the documentation available in the <MCUXpressoSDK_install_dir>/middleware/multicore/mcmgr/doc folder.
Another possibility how to get the MCMGR library is the mcux-sdk-middleware-multicore GitHub repo.
RPMsg-Lite is a lightweight implementation of the RPMsg protocol. The RPMsg protocol defines a standardized binary interface used to communicate between multiple cores in a heterogeneous multicore system. Compared to the legacy OpenAMP implementation, RPMsg-Lite offers a code size reduction, API simplification, and improved modularity.
The main RPMsg protocol features are:
The RPMsg-Lite library is available for several MCU and MPU parts and can be obtained from an MCUXpressoSDK packages. Visit https://mcuxpresso.nxp.com to configure, build and download these packages. To get the board list with multicore support (RPMsg-Lite included) use filtering based on Middleware and search for 'multicore' string. Once the selected package with the multicore middleware is downloaded, see the <MCUXpressoSDK_install_dir>/middleware/multicore/rpmsg-lite folder. For detailed information about the RPMsg-Lite, see the RPMsg-Lite User’s Guide located in the <MCUXpressoSDK_install_dir>/middleware/multicore/rpmsg_lite/doc folder.
Another possibility how to get the RPMsg-Lite library is the rpmsg-lite GitHub repo.
The Embedded Remote Procedure Call (eRPC) is the RPC system created by NXP. The RPC is a mechanism used to invoke a software routine on a remote system via a simple local function call. When a remote function is called by the client, the function's parameters and an identifier for the called routine are marshaled (or serialized) into a stream of bytes. This byte stream is transported to the server through a communications channel (IPC, TPC/IP, UART, and so on). The server unmarshaled the parameters, determines which function was invoked, and calls it. If the function returns a value, it is marshaled and sent back to the client.
RPC implementations typically use a combination of a tool (erpcgen) and IDL (interface definition language) file to generate source code to handle the details of marshaling a function's parameters and building the data stream.
Main eRPC features are:
The eRPC library is available for several MCU and MPU parts and can be obtained from an MCUXpressoSDK packages. Visit https://mcuxpresso.nxp.com to configure, build and download these packages. To get the board list with multicore support (eRPC included) use filtering based on Middleware and search for 'multicore' string. Once the selected package with the multicore middleware is downloaded, see in the <MCUXpressoSDK_install_dir>/middleware/multicore/erpc folder. For detailed information about the eRPC, see the documentation available in the <MCUXpressoSDK_install_dir>/middleware/multicore/erpc/doc folder.
Another possibility how to get the eRPC library is the eRPC GitHub repo.
Where to find multicore examples
Based on application needs, different multicore sw components can be utilized in a project. This depends on the complexity, required speed, memory resources or system design. The MCSDK brings users the possibility for quick and easy development of multicore and multiprocessor applications.