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.

[参考译文] 后置/待装信号灯

Guru**** 2585275 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1077109/semaphores-post-pend

我使用的是 F28235处理器,但我认为这个问题与什么处理器无关。  

如果我设置了三个硬件设备,它们使用相同的 SPI 端口(使用不同的 CS)并使用信号来阻止和解除阻止各个任务。 因此,我在 每个任务中创建了一个 SEM_SPI,调用 semaphore_pet(SEM_SPI);并随机调用任务。 据我所知, 如果计数等于1,那么如果发布信号的两个或多个任务只有一个将运行,而其他任务将在堆栈上执行,以便在完成其他任务后执行-对,还是我错过了什么? 无论对还是错,都有一份好的文档可供参考,以充分了解最佳实践。

 罗布

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

    您是否阅读 过 SYS/BIOS 用户指南中的语种一章? 请注意,在本章的简介中,还有视频链接。

    听起来你有正确的想法。 如果计数为1,则这些函数中只有一个能够解除阻止,将计数降至0。 再次发布信号灯时,任务将按照排队的顺序执行(尽管有优先信号灯模式可根据需要进行调整)。

    惠特尼

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

    我已经测试过它,如果优先级相同,那么在 POST 发生时只有一个获得呼叫。 如果我将优先级设置为不同,那么似乎是两者同时调用。 听起来不错吗? 我没有看到视频,我看了指南,也不是很清楚。您对优先模式的理解是什么。 我真的只需要呼叫这三个节点,然后循环回第一个-通过队列串行模式。 如果我连续三次发布信号,是否会让信号全部出现在队列中? 我会继续观看视频

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

    按优先级模式,我指的是模式参数选项 semaphore_Mode_counting_priority semaphore_Mode_binary_priority。 《用户指南》中对它们进行了说明。 还有 此 API 参考文档 ,但我不确定它提供的详细信息有多大。

    您使用的是什么模式? 二进制? 二进制优先级?

    假设是二进制,我的理解是,如果您在所有3个任务中调用“待处理”,它们将按照与“待处理”(认为 FIFO)相同的顺序被解除阻止。 因此,假设所有3人都在排队,在打了3个电话后,他们都应该有机会跑了。

    惠特尼

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

    嗨,惠特尼,是的,我使用的是二进制五分制。所以如果我理解正确的话。在每项维修任务中放置一个待装件并张贴,可能是任务睡眠(x)(在发布后)。 这将导致任务和队列的执行情况相同-这听起来是否正确?  

    顺便说一句:非常感谢-文档不是很清楚,视频也暗示了这一点。

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

    另一件事是,任务的优先级超出了最初被称为任务的顺序,这对半决赛来说是否重要?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="49816" url=~ë/support/tools/code-composer-studio -group/CCCS /f/code-composer-studio -forume/1077109/semaphores-post-pet/3987973#3987973]],如果我理解正确,请在每个服务任务中加上 x 并张贴,可能在任务结束后(待定)。 这将导致任务和队列中的任务被放置,就像它们被放置一样-这听起来是否正确?

    是的,听起来不错。

    [引用 userid="49816" url=~ë/support/tools/code-composer-studio -group/CCCS /f/code-composer-studio -forume/1077109/semaphores-post-pend/3987983#3987983’]任务优先级是否超出了它们对信号源的最初调用顺序?[/引用]

    正如您指出的那样,优先级可能会影响“任务”在启动时或在某些与信号无关的上下文切换后的执行顺序,因此会影响到呼叫待机功能的到达顺序,但信号功能本身不会考虑优先级。

    惠特尼

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

    谢谢!!!