2390237_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2390237_zh-CN

2390237_zh-CN

i.MX 943 EVK:在 Linux 和 Zephyr 之间运行 ENETC 共享用例

你好,

我正在使用 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

Linux
Tags (1)
No ratings
Version history
Last update:
yesterday
Updated by: