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/MSP430F5529:任务优先级不起作用

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588560/rtos-msp430f5529-task-priorities-do-not-work

器件型号:MSP430F5529

工具/软件:TI-RTOS

您好!

我最近曾说过一个奇怪的现象:  

我在 GUI 中定义任务、无论它们具有不同的优先级还是具有相同的优先级、它们都将始终以"分时"的方式运行-

就像每个线程都有一个时间量一样(例如,类似于 Windows 中的“线程”)。 这是非常奇怪的,驳斥了所有教的原则…

有人可以帮帮我吗?

非常感谢!

M. Deutsch 博士

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您为什么认为它们是在共享时间模式下运行的? 一个任务仅在 IF 时放弃处理器
    一个更高优先级的线程已准备好运行(例如、更高优先级的任务、Swi 或 Hwi)。
    2、它在某些东西上阻断(例如 Task_sleep、驱动程序调用阻止(例如 UART_read)、Semaphore_pend、其中信号量不可用、传递非零超时、等等)。
    它调用 Task_yield、并且还有另一个具有相同优先级的任务可以运行。 注意:Task_yield 不会屈服于较低优先级的任务。
    4.任务终止。

    您能否提供系统中的任务数量及其优先级? 简单地显示 Tools->ROV->Tasks->Detailed 的快照可能是最简单的。 简要描述每个任务的执行情况以及您认为它是分时的原因。

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

    两个简单示例:
    1) 2个在 GUI 中静态创建的任务、一个是优先级1 -在 while (1)闪烁 LED1中运行、另一个优先级2 -在 while (1)闪烁 LED2中运行。 在这种情况下、您只希望任务2运行、并且只有 LED2闪烁。 但是、它们都以分时方式运行、并且两个 LED 同时闪烁。

    2)相同的两个任务在相同的优先级上运行(例如、两个任务都在优先级1上运行)。 您只会期望其中一个运行(第一个计划运行)-直到:阻止、产量或更改优先级、对吧? 但是又来了——时间紧迫…!!! 它们都以分时方式运行、两个 LED 同时闪烁。

    调试还显示分时调度! 我知道它在这里打破了一个主要概念、但相信我确实深入了解了这个概念(我知道有关系统的一两件事-拥有软件工程博士学位)。 我真的很想理解为什么我遇到这种情况,而所有概念都建议不这样做。

    我尝试深入研究配置、但没有发现任何异常情况。

    运行 CCS 版本:6.1.2.00015
    TI RTOS 版本:适用于 MSP43x 2.14.03.28的 TI-RTOS

    非常感谢!

    Moshe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以附加这两个任务函数吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Todd、

    我意识到错误是什么:

    每个任务函数在 while (1)中运行。 在每次迭代中、切换 LED (通过 GPIO 函数)、然后调用 Task_sleep (500)(延迟为1/2秒)。

    任务1为 LED1运行此代码、而任务2为 LED2运行此代码。

    当然、Task_sleep 是一个阻塞调用、所以当任务处于"等待"状态时、就绪队列中的最高优先级任务开始运行! 因此我经历了"时间共享"现象!

    非常感谢您的耐心和及时的回应!

    祝你一切顺利!

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

    Todd