Some years into Rust firmware with no classic RTOS experience: I get the feeling that embedded async Rust is a little like an RTOS library toolkit. Why do you need an OS abstraction when you can handcraft an embedded async runtime? Component reuse?
The boundaries are fuzzy, but I look at an RTOS as something you reach for when dealing with non-cooperative processes existing on the same device. I recognize that in C embedded code bases, RTOS is often used by default, regardless of this. Soemtimes it's to get a collection of higher level features, like an allocator, file system etc.
That sounds like a real-world problem you could avoid by design. Is that because of 3rd-party vendoring?
> Soemtimes it's to get a collection of higher level features, like an allocator, file system etc.
I can relate to those needs, but I’m still unsure why not expose those in your runtime?
Is embassy-rs with enough interaction between tasks an RTOS? Do you need an external API to be an OS? Do you need specific scheduling rules, or is it enough to know that certain tasks will never be blocked arbitrary long time?