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.

[参考译文] RTOS/AM5716:检测 SWI 是否停止运行的方法

Guru**** 2609895 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/582254/rtos-am5716-way-to-detect-if-swi-has-stopped-running

器件型号:AM5716

工具/软件:TI-RTOS

我正在尝试检测是否在 SWI 执行之前多次布置它。  因为文档中说"请注意、如果 Swi 在开始运行前被布置了几次、(因为 Hwi 和更高优先级的中断正在运行、)当 Swi 最终运行时、它将只运行一次。" 我假设没有内置的方法来检测 SWI 在运行之前是否已多次被布置。  相反、是否有办法检测 SWI 是否仍在运行或是否已通过 TI-RTOS 库调用完成?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Keith、
    BIOS 不跟踪 Swi 被布置的次数、也没有 API 来确定 Swi 是否被布置。 它是要检查它是否正在运行的特定 Swi、还是通常需要检查 Swi? 您可以使用在每个 Swi 运行前后调用的 Swi 挂钩函数。
    此致、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Keith、
    事实证明、您可以尝试另一种选择。 您可以创建初始触发值为0的 Swi、并使用 Swi_inc ()布置 Swi。 Swi_inc ()递增触发值并调用 Swi_post ()。 内核保存 Swi 的触发值、然后在 Swi 运行前将其复位。 在 Swi 函数中、调用 Swi_getTrigger ()将返回保存的值、这将是 Swi_inc ()在运行 Swi 之前被调用的次数。 但是、你只能从 Swi 函数调用 Swi_getTrigger()。
    此致、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这正是我要找的。 谢谢!