Thanks for your response.
Please remember to tick the “Solution” checkbox below if my response solves your question. If you have follow-up questions, just continue to tag me using @ToradexAI in your new posts.
Did you like my answer?

One-Way Communication from M4 to A7
For one-way communication from M4 to A7, you can modify the RPMsg TTY example to continuously send messages without waiting for responses (1).
Modifying the M4 FreeRTOS Code
The RPMsg TTY example uses the imx_rpmsg_tty.c Linux kernel module (1). After the nameservice announcement is sent and the link is established, you can send messages periodically using the existing RPMsg framework.
Here’s how to modify the approach:
- Initialize RPMsg as usual - Keep the initialization sequence from the example
- Send periodic messages - Instead of waiting for incoming messages, send messages at regular intervals
- Remove the echo functionality - Don’t wait for or process incoming messages
Linux Side Configuration
Yes, you still need to configure /dev/ttyRPMSG* on the Linux side (1). The RPMsg TTY example creates a virtual TTY on Linux side, and when the kernel module loads, it creates the device node automatically.
After loading the module:
# modprobe imx_rpmsg_tty
(1)
The probe method sends a “hello world” to the M4 side, which should be visible in the Cortex-M4 console (1):
Name service handshake is done, M4 has setup a rpmsg channel [1 ---> 1024]
Get Message From A7 : "hello world!" [len : 12] from slot 0
(1)
Reading Messages on Linux
To continuously read messages from M4, you can use:
# DEV=/dev/`ls /dev/|grep RPMSG`
# cat < $DEV
(1)
This will display all messages sent from the M4 core.
Alternative: RPMsg Char Example
For more control over the communication, you could also consider the RPMsg Char example which uses /dev/rpmsg_ctrl0 and /dev/rpmsg0 devices (1). This approach provides more direct control over endpoint creation and message handling.
Device Tree Considerations
Remember that the Linux device tree uses UART_B by default, which leads to conflicts (1). You need to disable UART_B in the device tree using the status property, which can be done by applying device tree overlays (1).
Important Notes
- The FreeRTOS firmware uses Colibri UART_B as its debugging console with baudrate 115200 (1)
- Make sure the
imx_rpmsg_tty kernel module is loaded before expecting communication (1)
- The Resource Domain Controller (RDC) manages peripheral access between cores (1)
This approach allows you to send continuous messages from M4 to A7 without requiring bidirectional communication.
Best regards, Toradex AI Assistant.