Stuff that RUWM core would need to run on bare-metal:
- An executor - can be either
embassy-executor
oredge-executor
(as ESP bare-metal has a generic allocator now) and we can make it configurable - Blocking or async drivers for SPI, I2C, one-shot calibrated ADC and pin peripherals (pin peripherals need interrupt support)
- Blocking drivers
- ADC
- Need to implement calibration
- GPIO
- I2C
- SPI
- ADC
- Async drivers
- ADC
- GPIO
- I2C
- SPI
- Blocking drivers
- Support for WIFI in STA and AP mode, as well as async IP on top
- STA
- AP
- DHCP
- async
- Let's wait until we have AFIT for the Xtensa toolchain
- (Easy?) NVS storage abstraction for reading/writing small binary BLOBs. Do we have it? Pointers appreciated.
- esp-storage exists but is quite low-level
- We can build a higher-level solution on top of
esp-storage
- While not strictly necessary, maybe we want compatibility with ESP-IDF NVS?
- (Easy?) OTA (with ESP IDF bootloader initially). Do we have it? Pointers appreciated.
- Experimental project: https://github.com/bjoernQ/esp32c3-ota-experiment
- Shows the lower-level operations required
- We could try to build a higher-level interface based on this work
- (Medium/Easy) Support for async HTTP client; perhaps we can work on bug-fixing the one in
edge-net
? - (Medium) Support for async HTTP server with WS support; perhaps we can work on bug-fixing the one in
edge-net
? - (Hard?) Support for async MQTT client V3.1. Ideas?
- (Hard?) Support for TLS. Ideas?
- Demo/PoC implementation: https://github.com/bjoernQ/puny-tls
mbed-tls
should be possible as well for a more "real world" solution
- (Optional) ULP co-processor support, deep sleep mode support