Blog Home

You can now run Arduino and MicroPython side-by-side on multi-core microcontrollers

Arduino TeamMay 30th, 2024

We’re excited to announce a powerful new feature that we have been working on in collaboration with the MicroPython team! 

Starting with the upcoming release (v1.23), MicroPython will offer support for Asymmetric Multiprocessing (AMP) on multi-core microcontrollers, based on the industry standard OpenAMP framework (see the MicroPython openamp module documentation for more information). 

This enables Arduino users to run both an Arduino sketch and a MicroPython program simultaneously on multi-core modules and to communicate between the two. Supported boards include the Arduino GIGA R1 WiFi, Portenta H7, and Nicla Vision.

The communication between Arduino and MicroPython is facilitated by using Remote Procedure Calls (RPC). This allows us to benefit from the simplicity of using MicroPython while unlocking access to all of Arduino’s rich libraries from MicroPython. 

If you ever found yourself wanting to use MicroPython for a project, but were stuck on this one library that is only available for the Arduino language… your problem is now solved! 

MicroPython AMP support provides the following key features:

  • Minimal and user-friendly API
  • Compatibility with Arduino’s RPC library
  • Remote processor lifecycle management, such as loading firmware and booting the secondary core
  • Support for synchronous and asynchronous remote procedure calls
  • Access to Arduino’s libraries from MicroPython

For further details, please see the dual-core tutorial section on using MicroPython with the RPC library on Arduino Docs

You spoke, we listened. The feature has been on the community’s wishlist for a while, so we couldn’t be any more proud to bring you this new advancement! We’re excited to see what kind of  creative applications it will unlock for our community. Leave a comment in the section below or share your endeavors on the Project Hub!