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.

[参考译文] TMS320C6747:在 SYS/BIOS 中是否有刷新或清除邮箱的函数

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/672267/tms320c6747-is-there-any-function-to-flush-or-clear-the-mailbox-in-the-sys-bios

器件型号:TMS320C6747

大家好、

我们使用的是 SYS/BIOS 邮箱、它在运行时在代码中动态创建。

我有一个场景、用户在邮箱帖子上写入、但出于某种原因、它在很长时间内不会发布消息。

一段时间后会发布消息(无论何时 BIOS 可用或发生其他情况、我都无法对其进行调试、因为调试器打开时不会发生零星的问题)、

因此、下次添加新邮件时、它会发送先前发布的邮件。

如果帖子不成功、是否有办法清理/清空邮箱?

是否有任何函数调用?

此致、

Nancy  

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

    邮箱中没有清理/清除 API。 让我们看看邮箱的内部信息...

    邮箱实际上只有两个队列(链接列表)和两个信标。 一个队列和信标管理空闲消息(消息数在创建调用中确定)。 将其称为空闲队列和信标。 其他队列和信标管理已发布(或完整)消息。 将其称为已发布队列和信标。 最初、空闲队列包含所有消息、空闲信标的计数等于创建中指定的消息数。

    当发生 Mailbox_post 并且可用信标的计数非零时(因此有可用消息)、以下情况以线程安全的方式发生
    -自由信标计数递减
    -空闲消息被从空闲队列中拉出
    -所提供的消息被复制到空闲队列中的空闲消息中
    -内部消息被放置在已发布队列中
    -发布的信标被发布(因此、如果在 Mailbox_pend 上有一个被阻止的任务、它将变为就绪)。

    如果空闲信标的计数为零、则 Mailbox_post 被阻止、直到一条消息被放置回空闲队列(完全通过 Mailbox_pend 成功)或一个超时。

    因此、当您说"它在很长一段时间内不会发布消息"时、我将需要更多信息。 调用 Mailbox_post 的线程的优先级是多少。 调用 Mailbox_pend 的线程的优先级是多少。 正在运行哪些其他线程? 是否正在检查从 Mailbox_post 的返回? 如果没有空闲 msgs、则可能会失败、并且发生超时。

    请注意、您可以在 CCS 中使用 Tools->ROV 查看邮箱的状态(例如、有多少个空闲 msg 和发布 msg)。 希望这可以帮助您调试该问题。

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

    感谢您的解释、我将对此进行深入探讨、并尽快回复您。

    此致、

    Nancy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、这有助于我了解配置。 我想我得到了解决。