代码之家  ›  专栏  ›  技术社区  ›  Anders

FreeRTOS与Zephyr/Mynewt任务阻塞状态

  •  1
  • Anders  · 技术社区  · 7 年前

    我似乎找不到关于这个问题的任何信息,所以我想在这里问一下。 (此处无回复: https://lists.zephyrproject.org/pipermail/zephyr-devel/2017-June/007743.html

    当通过调用驱动程序(例如SPI或UART)时 完成后等待有两种选择:

    2) 忙着等待

    我的问题是:

    如果使用忙等待调用驱动程序;那么FreeRTOS是否知道忙等待(发生在HAL驱动程序中)?任务是否仍分配了时间段(用于繁忙等待)。是这个吗 它是如何工作的?(假设FreeRTOS任务具有抢占式调度程序)

    安德斯

    1 回复  |  直到 7 年前
        1
  •  0
  •   Richard    7 年前

    我不明白你的问题。在里面 FreeRTOS ,如果驱动程序实现为执行繁忙等待(即驱动程序不知道多线程,因此不是事件驱动的,而是使用占用所有CPU时间的繁忙等待),则RTOS调度程序不知道正在发生的情况,因此会像调度任何其他任务一样调度任务。因此,如果任务是最高优先级的就绪状态任务,它将使用所有CPU时间,如果有其他同等优先级的任务,它会与这些任务共享CPU时间。