Hello,
I am using the i.MX 943 EVK board and I would like to share the network between the Cortex-A55 SMP on Linux and the Cortex-M33s on Zephyr.
So I got interested in the example : ENETC shared use case from the i.MX Linux User's Guide (https://www.nxp.com/docs/en/user-guide/UG10163.pdf - Section 11.6.2). This example set an RPMsg connection in order to enable the proxy PF driver on the Linux side. The address of the resource table for the RPMsg connection is 0x208a0000 and the virtqueues are at 0x20800000. These addresses ( [0x20800000 to 0x208A0FFF] ) are located in NETC OCRAM. This region is used as RPMSG shared memory between Cortex-M33 Core1(M33S) and AP(Non Secure Linux).
For this example, I use the mx94evknetc.cfg system manager config file so that the Cortex-M33s have access to the network. Because of this config file, I need to start the A55 and the M33s at boot time, so I use the target imx-mkimage flash_all.
My problem is that when I use a flash_a55 target (with the mx94rte.cfg system manager config file), Linux/U-Boot and Zephyr have access to those addresses but when I switch to flash_all (no matter the system manager config file) neither Linux/U-Boot nor Zephyr have access to those addresses, regardless of the Zephyr program (Zephyr encounters a Bus Fault on these addresses). But if I use any FreeRTOS program such as a simple hello_world instead of Zephyr, the Cortex-M33s and Linux/U-Boot have access to those addresses.
And I can say that if I use a flash_all target with the mx94rte.cfg system manager file, neither Linux/U-Boot nor Zephyr have access to those addresses but if I stop the Cortex-M33s and load a FreeRTOS hello_world on it and start again, then Linux/U-Boot have access to the NETC OCRAM.
For information, Zephyr doesn't have access with a flash_M33s target.
So I would like to know what FreeRTOS does during its initialization that Zephyr doesn't in order to make the NETC OCRAM accessible between Linux/U-Boot and Zephyr with a flash_all target ?
Zephyr Version : 4.3
Linux Version (Real Time Edge version) : 6.18.2