ONE Problem confuse us
according to embassy book, we found:
Embassy executor
The Embassy executor is an async/await executor designed for embedded usage along with support functionality for interrupts and timers.
Features
- No
alloc
, no heap needed. Task are statically allocated.
- No "fixed capacity" data structures, executor works with 1 or 1000 tasks without needing config/tuning.
- Integrated timer queue: sleeping is easy, just do
Timer::after_secs(1).await;
.
- No busy-loop polling: CPU sleeps when there’s no work to do, using interrupts or
WFE/SEV
.
- Efficient polling: a wake will only poll the woken task, not all of them.
- Fair: a task can’t monopolize CPU time even if it’s constantly being woken. All other tasks get a chance to run before a given task gets polled for the second time.
- Creating multiple executor instances is supported, to run tasks at different priority levels. This allows higher-priority tasks to preempt lower-priority tasks.
we want to figure out how the highlight features are implemented
The Rust’s macro grammar used in embassy
Learn macro
About time interrupt of timer
About the macro part of interrupt in Timer
I am curious about the startup and interrupt