Board/Setup
CPU: i.MX93
Boot media: SD (mmc 1)
Goal: run CM33 RPMsg-Lite string echo demo and communicate from Linux (A55)
Problem Summary I’m trying to start the Cortex‑M33 RPMsg demo either:
from U‑Boot using bootaux, or
from Linux using remoteproc (firmware loaded from firmware)
I’m seeing:
U‑Boot data aborts when trying to access certain CM33 alias addresses (e.g. 0x1ffe0000 / 0x0ffc0000)
Linux remoteproc tries to load rpmsg_lite_str_echo_rtos_remote.bin and fails with error -2 (file not found), then falls back to sysfs fallback.
I’m unsure what the correct memory copy address and boot address should be for CM33 on i.MX93 (system vs alias address), and how to align U‑Boot bootaux flow with Linux remoteproc flow.
What I tested
SD partition layout and boot files
U‑Boot shows SD is mmc 1:
u-boot=> mmc list
FSL_SDHC: 0 (eMMC)
FSL_SDHC: 1 (SD)
Partition table:
u-boot=> part list mmc 1
Partition Map for MMC device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 16384 681574 076c4a2a-01 0c Boot
2 704512 5769534 076c4a2a-02 83
Boot partition contents include DTBs and an mcore-demos/ directory:
u-boot=> fatls mmc 1:1
...
mcore-demos/
...
I can load the demo:
u-boot=> fatload mmc 1:1 ${loadaddr} mcore-demos/rpmsg_lite_str_echo_rtos_remote.bin
39004 bytes read in 3 ms
u-boot=> echo ${loadaddr}
0x80400000
u-boot=> echo ${filesize}
985c
The first two words look like a valid CM33 vector table:
u-boot=> md.l ${loadaddr} 2
80400000: 2001e000 0ffe0595
Reading 0x1ffe0000 causes abort:
Linux side: remoteproc firmware load fails
In Linux, when remoteproc0 powers up, it tries to load firmware:
[ 84.714629] remoteproc remoteproc0: powering up imx-rproc
[ 84.721926] remoteproc remoteproc0: Direct firmware load for rpmsg_lite_str_echo_rtos_remote.bin failed with error -2
[ 84.732549] remoteproc remoteproc0: Falling back to sysfs fallback for: rpmsg_lite_str_echo_rtos_remote.bin
here is the reserved memory:
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
linux,cma {
compatible = "shared-dma-pool";
reg = <0 0x88000000 0 0x04000000>; /* 64 MB @ 0x8800_0000 */
reusable;
linux,cma-default;
};
/* Ethos-U: move away from the kernel boot (32 MB) */
ethosu_mem: ethosu_region@8c000000 {
compatible = "shared-dma-pool";
reg = <0 0x8c000000 0 0x02000000>;
no-map;
};
vdev0vring0: vdev0vring0@84000000 { reg = <0 0x84000000 0 0x00008000>; no-map; };
vdev0vring1: vdev0vring1@84008000 { reg = <0 0x84008000 0 0x00008000>; no-map; };
vdev1vring0: vdev1vring0@84010000 { reg = <0 0x84010000 0 0x00008000>; no-map; };
vdev1vring1: vdev1vring1@84018000 { reg = <0 0x84018000 0 0x00008000>; no-map; };
rsc_table: rsc-table@2021e000 { reg = <0 0x2021e000 0 0x00001000>; no-map; }; /* OCRAM */
vdevbuffer: vdevbuffer@84020000 {
compatible = "shared-dma-pool";
reg = <0 0x84020000 0 0x00100000>; /* 1 MB */
no-map;
};
ele_reserved: ele-reserved@90000000 {
compatible = "shared-dma-pool";
reg = <0 0x90000000 0 0x00100000>; /* 1 MB @ 0x9000_0000 */
no-map;
};
};
ethosu {
compatible = "arm,ethosu";
fsl,cm33-proc = <&cm33>;
memory-region = <ðosu_mem>;
power-domains = <&mlmix>;
};
What is the correct procedure to start CM33 RPMsg demo on i.MX93 from U‑Boot?
If CM33 is started by U‑Boot (bootaux), what is the recommended Linux configuration?