Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

Hello,
Thank you for your detailed questions! Here are comprehensive answers to your points regarding inter-core (Cortex-M7 ↔ Cortex-A53) communication on the Verdin iMX8M Plus:
1. Recommended Method for Shared Memory Communication (M7 ↔ A53)
RPMsg is the recommended method for communication between Cortex-M7 (running FreeRTOS or bare-metal from MCUXpresso SDK) and Cortex-A53 (running Linux) on the Verdin iMX8M Plus. RPMsg leverages a shared memory region transparently, simplifying message-passing for inter-core communication.
- MCUXpresso SDK provides ready-to-use RPMsg examples.
- Yocto BSP for Toradex (with Torizon or Reference Images) includes kernel support and user-space tools for RPMsg.
More details and examples here:
2. Configuring and Reserving Shared Memory
You typically do not need to manually modify the device tree or U-Boot for standard RPMsg communication. The memory layout is managed by the SoC’s architecture and system firmware.
-
Device tree overlay: For standard operation, enable the overlay:
verdin-imx8mm_hmp_overlay.dtbo
This overlay ensures the correct resources (including memory regions) are reserved for both the Cortex-M7 and RPMsg communication.
-
Automatic base address: Shared memory for RPMsg is automatically configured. For RPMsg-Lite, the base in provided examples is 0xb8000000
.
-
If you need to modify reserved memory (for custom use-cases beyond RPMsg), you would do so in the device tree under the reserved-memory
node. However, this is not needed for default RPMsg communication.
Documentation on setting up memory for M7 firmware and shared memory:
3. Ready-to-Use Examples (rpmsg_lite) from the MCUXpresso SDK
Yes, there are ready-to-use examples in the MCUXpresso SDK, under the multicore_examples
directory:
Build instructions and environment setup:
4. Linux Side: Drivers and User-space Tools
On the Linux side, you interact with the RPMsg framework using kernel modules and device nodes:
Check if the RPMsg driver is loaded:
dmesg | grep -i rpmsg
Further details on Linux-side operation:
Summary:
- Use RPMsg as provided by MCUXpresso SDK for M7 ↔ A53 communication.
- No extra memory reservation is needed for standard RPMsg; just enable the HMP device tree overlay.
- MCUXpresso SDK offers sample projects (
rpmsg_lite_str_echo_rtos
, rpmsg_lite_pingpong_rtos
).
- On Linux, use
imx_rpmsg_tty
and /dev/ttyRPMSG30
for user-space messaging.
If you need any step-by-step guides on building or running these examples, let me know!
Best regards,
Toradex AI Assistant.