我似乎找不到关于这个问题的任何信息,所以我想在这里问一下。 (此处无回复: https://lists.zephyrproject.org/pipermail/zephyr-devel/2017-June/007743.html
当通过调用驱动程序(例如SPI或UART)时 完成后等待有两种选择:
2) 忙着等待
我的问题是:
如果使用忙等待调用驱动程序;那么FreeRTOS是否知道忙等待(发生在HAL驱动程序中)?任务是否仍分配了时间段(用于繁忙等待)。是这个吗 它是如何工作的?(假设FreeRTOS任务具有抢占式调度程序)
安德斯
我不明白你的问题。在里面 FreeRTOS ,如果驱动程序实现为执行繁忙等待(即驱动程序不知道多线程,因此不是事件驱动的,而是使用占用所有CPU时间的繁忙等待),则RTOS调度程序不知道正在发生的情况,因此会像调度任何其他任务一样调度任务。因此,如果任务是最高优先级的就绪状态任务,它将使用所有CPU时间,如果有其他同等优先级的任务,它会与这些任务共享CPU时间。