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.

[参考译文] AM62P:使用 IPC_Notify 和 shared_memory

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1623943/am62p-use-ipc_notify-along-with-shared_memory

部件号: AM62P

您好、  

我想继续对此阻止的线程进行状态跟踪: AM62P:AM62P:ipc_notify 如何确定邮箱 FIFO 队列中的消息数 — 处理器论坛-处理器 — TI E2E 支持论坛。  

我在按照建议访问共享存储器之前添加了 DSB 屏障、但我仍然发现 WKUP 无法接收从 MCU 发送的共享存储器中存储的地址。 根据日志、我认为 MCU 可以访问 main() 中的 shared_mem、但 MCU 无法访问 ipcnotify_isr () 中的 shared_mem。 下面随附了日志。

screenshot-20260309-143641.png

screenshot-20260309-143617.png

我还附上了最新的项目供大家回顾。 MCU+SDK 的版本为 11.01.01.08。

 

此致、  

Bomiao

ipc_notify_wkup01.zipipc_notify_mcu01.zip 

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

    您好、

    您能总结一下这个问题吗? 我没有跟进这个问题。  

    我可以看到上一次答复是 3 个月前。 请详细说明问题并告诉我们您使用的 SDK 版本是什么?

    您现在面临的 IPC 具体问题是什么?

    此致、

    Tushar

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

    尊敬的 Tushar:  

    当前的情况是 WKUP 将某些数组的地址存储在共享存储器中、并通过 IPC_Notify 发送标志、当 MCU 收到标志时、会从共享存储器中获取这些地址、并通过 IPC_Notify 将这些地址发送回 WKUP。 现在、该过程失败、我无法确定 MCU 是否可以成功从共享存储器中获取这些地址。

    在旧的阻塞线程,它是保拉卡里略谁与我保持联系,给了我一些建议。 在他的最后一个答复中,他说如果他的建议仍然不起作用,那么我可以提供相关的项目,以便他可以重现错误。 因此,我想让他也参与这一新线程。
    顺便说一下、我使用的 MCU+SDK 版本就是 11.01.08.
    此致、
    Bomiao
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bomiao:

    感谢您对上述内容的总结。  请留出一些时间来审核该项目。

    此致、

    Tushar

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

    如下所示、如果不说违反了 IPCNotify 的使用、那么连续两次在 MCU R5 内核的 ISR 中使用 IpcNotify_sendMsg 来通知 WKUP R5 内核肯定不是一个好主意。  

    Tushar Thakur 请检查源代码并注释输出 1) 是否可以在一个 ISR 中使用 IpcNotify)sendMsg? 2) 一次呼叫两次发送消息是可以的吗?

    void ipc_notify_msg_handler_mcu_lowAddr (uint16_t remoteCoreId、uint16_t localClientId、uint32_t msgValue、void *args)

    DebugP_log(“[MCU 处理程序]、处理程序内核=%d、客户端=%d、msg=0x%X\r\n“、
    RemoteCoreId、localClientId、msgValue);
    if (msgValue == 0x01)

    _ASM__ volatile(“DSB sy“:::“内存“);

    uint32_t eth_data_addr_recv1 = gSharedAddrs.buF1_addr;
    uint32_t eth_data_addr_recv2 = gSharedAddrs.buf2_addr;

    DebugP_log(“[MCU] gSharedAddrs 0x%X:buf1_addr=0x%08X、buf2_addr=0x%08X\r\n“、
    (uint32_t)&gSharedAddrs、eth_data_addr_recv1、eth_data_addr_recv2);

    IpcNotify_sendMsg (remoteCoreId、gClientId_low_rx、eth_data_addr_recv1、1);
    IpcNotify_sendMsg (remoteCoreId、gClientId_low_rx、eth_data_addr_recv2、1);

    }

    }

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

    您好:
    感谢您的查询。 有关专家目前已离职。
    请预计响应会延迟。 感谢您的耐心和理解。

    此致、
    TI E2E 支持团队
    ——
    *这是一个自动通知。*

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

    是的、您应该能够从 ISR 发送 IPC 消息、如在我们的默认 ipc_notify_echo 示例中、我们也从 ISR 发送 IPC 消息。

    请参阅下图。

    IpcNotify_sendMsg (remoteCoreId、gClientId_low_rx、eth_data_addr_recv1、1);
    IpcNotify_sendMsg (remoteCoreId、gClientId_low_rx、eth_data_addr_recv2、1);

    为什么要从单个 ISR 发送两条消息? 如果邮箱硬件 FIFO 可用、您应该能够发送消息。

    从单个 ISR 发送两条消息会增加 ISR 延迟。

    此致、

    Tushar

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

    您好、

    IPC_Notify 相关问题均已解决。 这个线程的问题是 ipc_notify 传输的消息超出了其容量 (< ipc_notify_MSG_value_MAX)。 WKUP 和 MCU 可以通过共享存储器实现信息交互。 此外、原始线程的解决方案是在每次地址传输之前手动管理 IPC ISR。

    非常感谢您的努力和耐心。

    非常感谢、

    Bomiao