- Embedded systems are very price sensitive. if you're making it general purpose, you're wasting money.
- Embedded systems generally have some form of real-time requirements. General Purpose OSes are not suitable here.
- Time-Efficiency; don't waste cycles.
- Space-efficiency; don't waste memory.
- power-efficiency; be asleep as much as possible.
Simple schedulers such as FreeRTOS/RTX/ChibiOS/etc/etc/etc are much more suitable, but better just to implement a nice simple super-loop. Primitive but efficient.
I often wonder if there is a nice super portable OS for your more "average" microcontroller, something in the ballpark of 16bit, 32k program space, and 2k of RAM. Also an alternative to C for something in that ballpark would be fantastic.
With support for all really tiny CPUs out there. The language runtime does the OS role.
Just one possible example, there are other vendors.