|
| 1 | +| OS Name | TCP/UDP Support | Event-driven Network API | Min RAM (Networking) | Notes | |
| 2 | +|-------------------|-----------------|-------------------------|----------------------|-----------------------------------------------| |
| 3 | +| **FreeRTOS** | Yes (FreeRTOS+TCP, lwIP) | No native `select`/`poll`; lwIP offers `select()` | ~8–32 KB | TCP stack needs ~8KB, lwIP ~16KB+ | |
| 4 | +| **Zephyr** | Yes (builtin stack) | Partial: Zephyr sockets have `poll()`; not full POSIX | ~32–64 KB | TLS increases RAM need | |
| 5 | +| **RIOT OS** | Yes (GNRC, lwIP) | GNRC: event/callback based; lwIP: `select()` | ~32 KB | lwIP: `select()`, GNRC: msg/callback | |
| 6 | +| **Mbed OS** | Yes (builtin stack) | No POSIX `select`/`poll`; event/callback APIs | ~32–64 KB | TLS increases RAM need | |
| 7 | +| **ChibiOS** | Yes (lwIP) | lwIP provides `select()` | ~16–32 KB | With lwIP, up to 32KB typical | |
| 8 | +| **NuttX** | Yes (builtin stack) | Yes: `select()`, `poll()`, POSIX sockets | ~32–64 KB | Most POSIX-compliant, RAM depends on config | |
| 9 | +| **ThreadX (Azure RTOS)** | Yes (NetX Duo) | No POSIX; NetX Duo has callback/event APIs | ~24–64 KB | Source-available, RAM scales w/features | |
| 10 | + |
| 11 | +--- |
| 12 | + |
| 13 | +### **Event-driven APIs Explained** |
| 14 | +- **POSIX-like (`select`, `poll`)**: NuttX, lwIP (used by FreeRTOS, RIOT, ChibiOS). |
| 15 | +- **Custom event/callback APIs**: Zephyr, RIOT (GNRC), Mbed OS, ThreadX. |
| 16 | +- **Advanced APIs (epoll, kevent, IOCP)**: **None** of these embedded OSes natively support advanced scalable I/O APIs like `epoll` (Linux), `kevent` (BSD), or `IOCP` (Windows), as these are not typical for MCUs. |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +### **RAM Notes** |
| 21 | +- The minimum RAM depends on stack configuration (TCP only, TCP+UDP, number of sockets, buffer sizes). |
| 22 | +- For TLS/SSL (e.g., mbedTLS), RAM requirements can double or triple. |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +**Summary:** |
| 27 | +- All listed OSes support TCP/UDP. |
| 28 | +- POSIX-style network event APIs (`select`, `poll`) are available primarily in **NuttX** and when using **lwIP** with other OSes. |
| 29 | +- Minimum RAM usage with networking ranges from **~8 KB (FreeRTOS minimal TCP)** to **~64 KB (full-featured stacks with TLS)**. |
| 30 | +- |
0 commit comments