This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2612:AM261X Zephyr IPC 设置

Guru**** 2895600 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1626180/am2612-am261x-zephyr-ipc-setup

器件型号: AM2612

zephyr_ipc.zip 

我在为 AM261X 处理器设置 IPC 通信时遇到问题。  我在内核 R50-0 上运行 Zephyr、在内核 R50-1 上运行 FreeRTOS。  我正在跟踪 最新 Zephyr 版本中的 rpmsg_static_vrings。  在 FreeRTOS 方面、我试图调整 MCU_PLUS_SDK 中的一个现有 rpmsg_echo 示例。  我验证了 Vring Rx/TX 地址(如随附的*。png 所示)、Vring 环数和 Vring 缓冲区大小均匹配。  但是、将每个程序加载到相应的内核后、系统会卡住、等待消息到达。   

我从 FreeRTOS 大小中删除了 IpcNotify 调用、并替换为对 RPMessage_announce 的调用。  我不确定这里的端点值应该是什么、Zephyr API/dt 中没有相应的参数。  我假设服务名称应与 Zephyr IPC_EPT_cfg 结构中的值相同。  此外、还不清楚我应该使用哪个版本的 SDK、因为刚才提到的版本说明是最新的。  根据我可以看出、在创建标签的同一天发布了 MCU_PLUS_SDK。  就是我使用的版本。

我已将两个示例项目都包含在随附的*zip 文件中、请提供任何帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael:

    您的初始设置似乎正常。 为了清晰起见、我试着解释一下实施情况。

    1. SDK 内核仅充当远程内核  
      1. 使用服务名称及其本地端点 ID(例如 10. )。
      2. 等待其本地端点通信的响应。
    2. Zephyr Core 充当主机。
      1. 在其本地端点上注册服务名称(例如 X ) 并等待来自远程内核的通知。
      2. 在收到通知(在 53 个端点上)后、它会读取服务名称、如果匹配、则会在 remote-endpoint-id ( 10. )(这是 SDK 内核上的本地端点 ID)。  
      3. 在本地端点上发送一个确认、  X (它被抽象到应用程序,不与任何 Zephyr API 一起返回)到远程端点 ( 10. )。

    现在、SDK 内核在其本地端点 ( 10. )  X 。 从这里开始、可以使用远程端点 ID ( X )。 而 Zephyr(主机)内核仅使用服务名称进行通信。

    RPMSG 中的 ACK 消息响应需要单独处理、因为这些是“NULL"消息“消息。 下面来自 SDK 的 PFA 修改示例以供参考。

    e2e.ti.com/.../4863.ipc_5F00_rpmsg_5F00_echo.c

    谢谢。此致、

    Madhava.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的解释、我发现了我的问题。  我可以看到消息来回 ping。