Skip to content

Commit e18285c

Browse files
committed
Moving to a better API for embedded use.
1 parent 108a645 commit e18285c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+6519
-14988
lines changed

docs/RTOS_comparison.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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+
-

docs/TYPE_SAFE_SERIALIZATION.md

Lines changed: 0 additions & 192 deletions
This file was deleted.

0 commit comments

Comments
 (0)