Carrier Board : IVY Plus or Verdin Board
Board : IMX8MP
Linux : verdin-imx8mp-15290475 5.15.129-rt67-6.5.0-devel+git.6f8fd49366db #1 SMP PREEMPT_RT Fri Dec 22 11:15:52 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
I would like to run a simple HelloWorld.bin to the M7.
i am lost as following help link seems
"How to Load Compiled Binaries into Cortex-M .
Does anything to do with the DeviceTree to enable the M7 Core MCU. ?
I like to have some GPIO, UART & SPI communication using the M7 MCU and message exchange with the A53 Core.
If can enlighten the path for achieving this task would be helpful.
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, and thank you for your question!
To run a HelloWorld.bin on the Verdin iMX8M Plus M7 core and set up communication (GPIO, UART, SPI, and message exchange) between the Cortex-M7 and A53 cores, here’s a step-by-step path:
1. Download and Prepare the MCUXpresso SDK
2. Device Tree Configuration
Yes, device tree configuration is required!
More on overlays: Device Tree Overlay for M7/A53 Communication
3. Build Hello World for M7
-
In your MCUXpresso SDK, locate:
./boards/evkmimx8mp/demo_apps/hello_world/armgcc
-
Build:
export ARMGCC_DIR=<PATH_TO_GCC_TOOLCHAIN>/<GCC_TOOLCHAIN_FOLDER>
cd ./boards/evkmimx8mp/demo_apps/hello_world/armgcc
./build_debug.sh
-
Copy the binary to your board (e.g., via scp):
scp debug/hello_world.bin root@<board-ip>:/home/root
4. Load & Run Firmware on M7
Full steps: Freertos on iMX8MP M7 - Case Oriented Examples
5. A53 ↔ M7 Message Exchange (RPMsg)
-
Use the RPMsg examples in the SDK to establish communication:
./boards/evkmimx8mp/multicore_examples/rpmsg_lite_str_echo_rtos
-
On Linux, load the TTY kernel module:
sudo modprobe imx_rpmsg_tty
ls /dev/ | grep -i rpmsg
You should see: ttyRPMSG30
Use this for message exchange:
echo Toradex! > /dev/ttyRPMSG30
Reference: How to Establish Shared Memory Communication
6. Peripheral Support (GPIO, UART, SPI)
-
For GPIO: You may need a custom device tree overlay to reassign certain pins as GPIO (for pins with default I2C/SPI roles).
-
The MCUXpresso SDK contains example apps for GPIO, UART, and SPI under:
boards/evkmimx8mp/driver_examples
Use those as templates for your code running on the M7.
Summary Workflow:
- Download and build MCUXpresso SDK examples (Hello World, RPMsg, peripheral demos).
- Deploy your binaries to the board.
- Configure and apply proper overlays for memory and pinmuxing.
- Use U-Boot commands to run your M7 firmware.
- Set up RPMsg for inter-core messages.
- Develop your peripheral application based on SDK examples.
Feel free to ask if you need clarification on a specific part of the process or further details!
Best regards,
Toradex AI Assistant