Raw Rust bindings for the ESP IDF SDK
- Build is
cargo
driven and automatically downloads & configures everything by default; no need to download the ESP IDF SDK manually, or set up a C toolchain - Supports both native ESP IDF build (default), as well as a PlatformIO build
- Option to use in a mixed Rust/C project. Check the documentation in the esp-idf-template crate
You might want to also check out the type safe Rust wrappers built on top of these raw bindings:
Note
esp-idf-sys
's build script will download the esp-idf, its gcc toolchain, and build it. To show progress and build information about this process run cargo with the-vv
(very verbose) flag, so that build script output is also displayed. This is especially useful since the initial build will take a while.
Follow the Prerequisites section in the esp-idf-template
crate.
Read the documentation here.
The examples could be built and flashed conveniently with cargo-espflash
. To run e.g. std_basics
on an e.g. ESP32-C3:
(Swap the Rust target and example name with the target corresponding for your ESP32 MCU and with the example you would like to build)
with cargo-espflash
:
$ MCU=esp32c3 cargo espflash flash --target riscv32imc-esp-espidf --example std_basics --monitor
MCU | "--target" |
---|---|
esp32c2 | riscv32imc-esp-espidf |
esp32c3 | riscv32imc-esp-espidf |
esp32c6 | riscv32imac-esp-espidf |
esp32h2 | riscv32imac-esp-espidf |
esp32p4 | riscv32imafc-esp-espidf |
esp32 | xtensa-esp32-espidf |
esp32s2 | xtensa-esp32s2-espidf |
esp32s3 | xtensa-esp32s3-espidf |
Use the esp-idf-template project. Everything would be arranged and built for you automatically - no need to manually clone the ESP IDF repository.
For more information, check out:
- The Rust on ESP Book
- The ESP Embedded Training
- The esp-idf-template project
- The esp-idf-svc project
- The esp-idf-hal project
- The embedded-svc project
- The embedded-hal project
- The Rust for Xtensa toolchain
- The Rust-with-STD demo project