Пока едет модуль расковыриваю embassy на предмет i2c/spi. В embassy async/await, так что нет, там у меня не будет while'ов. Ну и полез я туда исключительно потому что захотелось потыкать палкой rust в embedded.
Там нет FreeRTOS, но смысл такой, да.
Спавнится executor, который усыпляет железку если н е чего поллить.
No busy-loop polling: CPU sleeps when there’s no work to do, using interrupts or WFE/SEV.
...
Creating multiple executor instances is supported, to run tasks with multiple priority levels. This allows higher-priority tasks to preempt lower-priority tasks.
С картинками можно посмотреть вот тут: https://embassy.dev/book/dev/runtime.html#_features
Вот тут можно посмотреть примеры кода для nrf52840.
Комментарии: 4
Igor
Пока едет модуль расковыриваю embassy на предмет i2c/spi. В embassy async/await, так что нет, там у меня не будет while'ов. Ну и полез я туда исключительно потому что захотелось потыкать палкой rust в embedded.
Serg
А как реализован async/await? Запускается ждущая задача FreeRTOS или чего-то подобного?
Igor
Там нет FreeRTOS, но смысл такой, да. Спавнится executor, который усыпляет железку если н е чего поллить. No busy-loop polling: CPU sleeps when there’s no work to do, using interrupts or WFE/SEV. ... Creating multiple executor instances is supported, to run tasks with multiple priority levels. This allows higher-priority tasks to preempt lower-priority tasks. С картинками можно посмотреть вот тут: https://embassy.dev/book/dev/runtime.html#_features Вот тут можно посмотреть примеры кода для nrf52840.
Serg
Так это выходит можно так задач наплодить до стековерфлоу, или это все настраивается и можно в очередь поставить?