我似乎無法找到關於此問題的任何信息,所以我想我會問這裏。 (無應答這裏:https://lists.zephyrproject.org/pipermail/zephyr-devel/2017-June/007743.html)FreeRTOS vs Zephyr/Mynewt任務阻塞狀態
當驅動程序(如SPI或UART)通過 FreeRTOS操作系統使用供應商HAL調用,然後有 是等待完成後兩個選項:
1)中斷 2)忙着等待
我的問題是這樣的:
如果驅動程序是使用忙等待調用; FreeRTOS是否有任何關於忙碌等待的知識(在HAL驅動程序中發生)?該任務是否仍然獲得分配的時隙(用於忙碌等待)。這是 它是如何工作的? (假設FreeRTOS任務有一個搶先調度器)
現在在Zephyr(也可能是Mynewt)中,我可以看到當驅動程序被調用時,Zephyr跟蹤調用任務,然後暫停(阻塞狀態)直到完成。然後,驅動程序中斷例程將調用線程放入運行隊列中,準備繼續時。這樣就不會有任何循環。這是正確的理解?
感謝 安德斯
謝謝理查德。現在更清楚了。我只是想確保我正確地理解它 - 就像你說的那樣,如果RTOS不知道驅動程序正忙等待,那麼它將爲該任務安排一個時隙,以便它可以忙於等待。這是無效的。 – Anders