NXP solution for heterogenous multicore MCU and MPU parts

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

NXP solution for heterogenous multicore MCU and MPU parts

NXP solution for heterogenous multicore MCU and MPU parts

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:

Multicore Manager (MCMGR)

This library provides a number of services for multicore systems. The main MCMGR features are:

  • Maintains information about all cores in system.
  • Secondary/auxiliary cores startup and shutdown.
  • Remote core monitoring and event handling.

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.

Remote Processor Messaging - Lite (RPMsg-Lite)

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:

  • Shared memory interprocessor communication.
  • Virtio-based messaging bus.
  • Application-defined messages sent between endpoints.
  • Portable to different environments/platforms.
  • Available in upstream Linux OS.

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.

Embedded Remote Procedure Call (eRPC)

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:

  • Scalable from BareMetal to Linux OS - configurable memory and threading policies.
  • Focus on embedded systems - intrinsic support for C, modular, and lightweight implementation.
  • Abstracted transport interface - RPMsg is the primary transport for multicore, UART, or SPI-based solutions can be used for multichip.

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

  • Multicore and multiprocessor examples can be found within NXP MCUXpressoSDK packages. They are located in
    <MCUXpressoSDK_install_dir>/boards/<board_name>/multicore_examples  and
    <MCUXpressoSDK_install_dir>/boards/<board_name>/multiprocessor_examples subfolders.

  • Another way of getting NXP MCUXpressoSDK multicore and multiprocessor examples is using the mcux-sdk Github repo. Follow the description how to use the West tool to clone and update the mcuxsdk repo in readme Overview section. Once done the armgcc examples can be found in
    mcuxsdk/examples/<board_name>/multicore_examples and
    mcuxsdk/examples/<board_name>/multiprocessor_examples subfolders.

 

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.

No ratings
Version history
Last update:
‎07-19-2023 10:47 PM
Updated by: