Your device tree overlays look correct for enabling the M4 core and disabling the MCU UART. However, there are some important considerations regarding the remoteproc setup for the M4 core that might be relevant to your IPC communication issue.
Device Tree Analysis
Your M4 device tree overlay follows the correct structure (1). The configuration you have:
&mcu_m4fss {
compatible = "ti,am64-m4fss";
mboxes = <&mailbox0_cluster0 &mbox_m4_0>;
mbox-names = "tx", "rx";
memory-region = <&mcu_m4fss_dma_memory_region>,
<&mcu_m4fss_memory_region>;
firmware-name = "am62-mcu-m4f0_0-fw";
wakeup-source;
status = "okay";
};
This matches the recommended approach for enabling the M4 core (2).
Potential Missing Configuration
Based on community discussions about remoteproc issues with the M4 core, you may need additional memory region definitions in your device tree (3). A working configuration includes:
&{/} {
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
m4_rts_ddr: ipc-memories@9c800000 {
compatible = "shared-dma-pool";
reg = <0x00 0x9c800000 0x00 0x00300000>; /* 3 megabyte */
no-map;
};
mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 {
compatible = "shared-dma-pool";
reg = <0x00 0x9cb00000 0x00 0x100000>;
no-map;
};
mcu_m4fss_memory_region: m4f-memory@9cc00000 {
compatible = "shared-dma-pool";
reg = <0x00 0x9cc00000 0x00 0xe00000>;
no-map;
};
};
remoteproc@5000000 {
compatible = "ti,am64-m4fss";
reg = <0x00 0x5000000 0x00 0x30000>,
<0x00 0x5040000 0x00 0x10000>;
reg-names = "iram", "dram";
resets = <&k3_reset 9 1>;
firmware-name = "";
mboxes = <&mailbox0_cluster0>, <&mbox_m4_0>;
memory-region = <&mcu_m4fss_dma_memory_region>,
<&mcu_m4fss_memory_region>,
<&m4_rts_ddr>;
ti,sci = <&dmsc>;
ti,sci-dev-id = <9>;
ti,sci-proc-ids = <0x18 0xff>;
};
};
Firmware Loading Process
To load and run your firmware, follow these steps (2):
- Copy the firmware binary to the module:
$ scp ${SDK_INSTALL_PATH}/examples/hello_world/am62x-sk/m4fss0-0_freertos/ti-arm-clang/hello_world.release.out root@<hostname>:/home/torizon/am62-mcu-m4f0_0-fw
- Copy the firmware to
/lib/firmware:
# sudo mount -o remount,rw /usr
# sudo mv am62-mcu-m4f0_0-fw /lib/firmware
- Start the firmware:
# sudo reboot
Hardware Issue Assessment
Given that your device tree configuration appears correct and the same firmware works on one module but not the other, this strongly suggests a hardware-level issue with the non-working module (15599560). The IPC value corruption (149 instead of 1) indicates a communication problem between the main processor and M4 core that is likely hardware-related.
The fact that the working module shows proper ti-sci device constraint messages while the non-working one doesn’t further supports this being a hardware defect rather than a software configuration issue.
Best regards,
Toradex AI Assistant.
If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.