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.

[参考译文] AM263P4-Q1:关于 RPMessage_send () 通知队列中缺少空间

Guru**** 2866460 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1626863/am263p4-q1-regarding-lack-of-space-in-the-notification-queue-for-rpmessage_send

器件型号: AM263P4-Q1
主题: SysConfig 中讨论的其他器件

当 RPMessage_send() 在一个超时为 0ms 的行中被调用五次时、将输出以下警告并返回 SystemP_TIMEOUT。
“RPMessage_send:288:[IPC RPMSG]消息发送到远程内核 3 @ 2 端点失败、因为通知队列中缺少空间!!!“
请告诉我原因和解决方案。

即使连续调用 16 次、该警告也只在第五次输出、而不是从第六次开始输出。
SysConfig 中的“RP Message Number of Buffers“设置为 16。

此外、当超时设置为 1ms 时、不会输出警告。
有足够的 vring、并且当 vring 队列溢出时会输出以下警告、所以我认为这是另一个原因。
“[IPC RPMSG]消息发送到远程内核%d @%d 端点失败、因为 Vring 中缺少空间!!!!“

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

    您好、

    根据 SDK 驱动程序、Vring 缓冲区是共享内存循环缓冲区、在软件中最大设置为 32。 驱动器允许存储在软件 FIFO 中的最大消息数为 4

    消除超时时间后、SW 没有足够的时间运行 ISR 并耗尽 FIFO。 设置超时后、软件有足够的时间耗尽 FIFO、并有空间存储新消息。

    我是否可以知道为什么超时设置为 0ms?

    此致、
    Shaunak

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

    尊敬的 Shaunak:

    假设应用程序在任何给定时间永远不会调用`RPMessage_send ()`比 VRING 缓冲区数量多的次数,我们希望将`RPMessage_send ()`所导致的延迟最小化。
    在最坏的情况下、SW FIFO 中的可用空间需要多长时间才能返回 SystemP_TIMEOUT 并且有足够的时间来存储新消息?

    此致、

    Imaoka.

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

    你好、Imaoka、

    这将需要一些实验,我们没有现成的数字。 让我进行一些实验、下周初回来。

    此致、
    Shaunak

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

    尊敬的 Imaoka-San:

    我使用 IPC API 进行了一些内部测试。  主要发现:

    软件 FIFO 漏极时间:8 次 9 μs(从前 3 次成功迭代测量)
    -这是 IPC Notify ISR 从 4-Deep 软件 FIFO 中释放一条消息的时间
    2.问题的根本原因:
    - SW FIFO 只有 4 个消息时隙 (PARAMBOL_MAX_msgs_IN_SW_FIFO)
    -当调用 RPMessage_send () 5 次以上且 timeout=0 时,第 5 次调用失败,因为软件 FIFO 已满且 ISR 没有时间将其耗尽
    -当 timeout=1ms 时、ISR 有时间处理消息

    建议:
    使用最小 20 μs 超时(包含一些安全裕度)和测试。

    此致、
    Shaunak

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

    尊敬的 Shaunak

    此问题已解决。 非常感谢您的帮助。
    此致、Imaoka