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/MSP430F5659:任务同步需要指南

Guru**** 2586755 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/610921/rtos-msp430f5659-need-guide-for-task-sync

器件型号:MSP430F5659

工具/软件:TI-RTOS

您好!

我有3个任务、

命令任务(USB Rx/Tx)、数据管理器任务和处理程序任务(UART RX/TX)、

我想同步通信任务 和处理程序任务、这样、一旦接收到与 USB 命令 相关的 UART 处理、我就需要锁定另一个 USB 命令、或者只发送忙响应、直到完成 UART 命令处理。 哪种锁定机制/阻断机制适合这种情况。

请参阅下面的伪代码。

命令任务()

if (等待进程完成)

向处理程序任务发送命令

其他

通过 USB 向用户应用程序发送忙响应

处理程序任务

接收命令

锁定操作系统标志/调用同步机制

进行 UART 通信

完成后释放

谁能指导我,

我在 处理程序任务中尝试了 GateMutex ENTER 和 gateMutex Leave,在通信任务中尝试了 Gatemutes Query,但我无法获得预期的结果,

请指导我如何实现这一点、通过良好的锁定机制、我不想使用全局变量机制、我想在此处使用操作系统概念。

如何使用信标锁定?

提前感谢

Nitesh

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

    以下是一些 E2E 主题、我认为您可能会有所帮助:
    e2e.ti.com/.../148254
    e2e.ti.com/.../473876
    e2e.ti.com/.../442148

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

    您好!

    任何一个都可以共享用于锁定/解锁而不禁用 H/W 或任务的互斥体示例

    提前感谢

    Nitesh

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

    我建议使用信标。 您可以访问信标计数并根据其值做出反应。 您可以在 TI-RTOS 提供的示例中找到一个名为"mutex.c"的示例。

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

    如果我想在第一个任务中获取信标、做一些活动并释放信标、我如何能够重复实现这个、即用于获取和释放的 API?

    在第二个任务中,我可以使用 getSemcoount() API 读取信标计数,对吗?

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

    在任务2中、我锁定了几个行代码、这些代码重复执行、直到获得结果。 (即与其他外部器件的 UART 通信)
    我不想阻止任务1的 USB 通信、而是希望发送忙回复、UART 正在工作。

    请指导我、即使使用了信标、它也会阻止任务1、直到任务2发布。
    互斥量仍然不清零、

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

    您好、Nitesh、  

    [引用 user="Nitesh Padiyar77"]如果我想在第一个任务中获取信标并执行一些活动并释放信标,我如何重复实现这一点,即获取和释放 API?

    您将使用示例中所示的信标挂起和发布 API。  

    [引用 user="Nitesh Padiyar77"]我不想阻止任务1 (即 USB 通信),而是想发送应答忙,UART 正在工作。

    如果您要使用信标来完成此操作、我建议在任务2中的信标启动 UART 通信并在信标完成后发布信标时在其上挂起。 然后、在任务1内、您可以像这样检查信号量计数:

    if (semaphore_getCount (semHandle)=0){
    //任务2正在执行 UART 通信
    //发送 USB 忙信号
    }
    其他
    {
    // USB 自由运行
    } 

    此致、  

    Caleb Overbay

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

    您好!

    谢谢 Caleb、

    我将实施并测试它。 将让您了解状态。

    Nitesh

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

    您是否仍然需要有关此问题的帮助?

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

    您好 Caleb、

    谢谢我的实施、工作正常。

    此致、

    Nitesh