你好,
我正在使用 i.MX 943 EVK 开发板,我想在 Linux 系统上的 Cortex-A55 SMP 和 Zephyr 系统上的 Cortex-M33s 之间共享网络。
所以我对 i.MX Linux 用户指南中的 ENETC 共享用例示例产生了兴趣( https://www.nxp.com/docs/en/user-guide/UG10163.pdf - 第 11.6.2 节)。本示例设置了 RPMsg 连接,以便在 Linux 端启用代理 PF 驱动程序。RPMsg 连接的资源表地址为 0x208a0000,虚拟队列位于 0x20800000。这些地址([0x20800000 到 0x208A0FFF])位于 NETC OCRAM 中。该区域用作 Cortex-M33 Core1(M33S) 和 AP(非安全 Linux) 之间的 RPMSG 共享内存。
在这个例子中,我使用 mx94evknetc.cfg 系统管理器配置文件,以便 Cortex-M33s 可以访问网络。由于这个配置文件,我需要在启动时启动 A55 和 M33s,所以我使用目标 imx-mkimage flash_all。
我的问题是,当我使用 flash_a55 目标(使用 mx94rte.cfg 系统管理器配置文件)时,Linux/U-Boot 和 Zephyr 可以访问这些地址,但当我切换到 flash_all(无论系统管理器配置文件如何)时,Linux/U-Boot 和 Zephyr 都无法访问这些地址,无论 Zephyr 程序如何(Zephyr 在这些地址上遇到总线故障)。但是,如果我使用任何 FreeRTOS 程序(例如简单的 hello_world)而不是 Zephyr,Cortex-M33s 和 Linux/U-Boot 就可以访问这些地址。
我可以说,如果我使用带有 mx94rte.cfg 系统管理器文件的 flash_all 目标,Linux/U-Boot 和 Zephyr 都无法访问这些地址,但如果我停止 Cortex-M33s 并在上面加载 FreeRTOS hello_world 并重新启动,那么 Linux/U-Boot 就可以访问 NETC OCRAM。
需要注意的是,Zephyr 无法访问 flash_M33s 目标。
所以我想知道,为了让 Linux/U-Boot 和 Zephyr 能够通过 flash_all 目标访问 NETC OCRAM,FreeRTOS 在初始化过程中做了哪些 Zephyr 没有做的事情?
Zephyr 版本:4.3
Linux 版本(实时边缘版本):6.18.2
你好@Remantj
希望你一切都好。
请查阅 nxp-zephyr 文档:
请告诉我系统管理器中描述的那些更改是否对您有效。
顺祝商祺!
萨拉斯。
你好@Manuel_Salas ,
谢谢你的回答。
我查看了您指出的文档,并尝试按照文档中的方法修补系统管理器,但没有任何改变。
这似乎也在意料之中,因为我的问题在于 FreeRTOS 固件和 Zephyr 固件之间的差异。两种情况下,系统管理器配置文件保持不变。
我不知道 FreeRTOS 在 NETC OCRAM 方面有哪些 Zephyr 没有的功能,但您知道如何用 Zephyr 实现同样的功能吗?
此致