Great news! For those unfamiliar: the ESP32 family are very popular embedded SoCs. They’re not ARM based, but they have attractive specs, like built-in WiFi and BT was well as ~400KB RAM and at least 1MB flash. The tool chain and docs are quite friendly. And you can get a dev board for as little as US$8.
Also has an interesting ULP coprocessor. Downsides though: absolute power hog (esp. thanks to Wi-Fi), blobs in the SDK (Wi-Fi, BLE, xtensa HAL…).
Now, I’m not aware of any MCU with an open Wi-Fi stack, but for BLE the Nordic nRF5x chips run Apache NimBLE and (only really for beacons for now) Rubble in Rust. (There’s also ESB and 802.15.4.) nRF5x supports an amazingly “bullshit-free” Rust experience — you can use the HAL and its underlying autogenerated PAC crate (hardware bindings) which are all completely bare-metal with no vendor C code in sight.
Now that esp32 c3 is available it’s much easier to use Rust with esp32 platform as c3 has RISC V CPU. Previously you had to compile LLVM fork which has support for xtensa (the CPU used in other esp32 modules).
Great news! For those unfamiliar: the ESP32 family are very popular embedded SoCs. They’re not ARM based, but they have attractive specs, like built-in WiFi and BT was well as ~400KB RAM and at least 1MB flash. The tool chain and docs are quite friendly. And you can get a dev board for as little as US$8.
(Im not shilling, just a happy customer.)
Also has an interesting ULP coprocessor. Downsides though: absolute power hog (esp. thanks to Wi-Fi), blobs in the SDK (Wi-Fi, BLE, xtensa HAL…).
Now, I’m not aware of any MCU with an open Wi-Fi stack, but for BLE the Nordic nRF5x chips run Apache NimBLE and (only really for beacons for now) Rubble in Rust. (There’s also ESB and 802.15.4.) nRF5x supports an amazingly “bullshit-free” Rust experience — you can use the HAL and its underlying autogenerated PAC crate (hardware bindings) which are all completely bare-metal with no vendor C code in sight.
Unfortunately the new RISC-V based version lacks the coprocessors, and is slightly lower-spec. But at least it’s not using a proprietary ISA.
Now that esp32 c3 is available it’s much easier to use Rust with esp32 platform as c3 has RISC V CPU. Previously you had to compile LLVM fork which has support for xtensa (the CPU used in other esp32 modules).
By the way there’s an official Rust example from Espressif — https://github.com/espressif/rust-esp32-example