https://github.com/esp-rs/esp-idf-sys
Bindings for ESP-IDF (Espressif's IoT Development Framework)
https://github.com/esp-rs/esp-idf-sys
esp-idf esp32 rust
Last synced: 2 months ago
JSON representation
Bindings for ESP-IDF (Espressif's IoT Development Framework)
- Host: GitHub
- URL: https://github.com/esp-rs/esp-idf-sys
- Owner: esp-rs
- License: apache-2.0
- Created: 2020-11-21T05:05:16.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-03-25T12:20:38.000Z (3 months ago)
- Last Synced: 2025-04-03T23:49:09.579Z (3 months ago)
- Topics: esp-idf, esp32, rust
- Language: Rust
- Homepage:
- Size: 10.3 MB
- Stars: 311
- Watchers: 8
- Forks: 138
- Open Issues: 36
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Raw Rust bindings for the [ESP IDF SDK](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/)
[](https://github.com/esp-rs/esp-idf-sys/actions/workflows/ci.yml)
[](https://crates.io/crates/esp-idf-sys)
[](https://esp-rs.github.io/esp-idf-sys/esp_idf_sys/index.html)
[](https://matrix.to/#/#esp-rs:matrix.org)
[](https://wokwi.com/projects/332188235906155092)## Highlights
- 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](https://github.com/esp-rs/esp-idf-template) crate**You might want to also check out the type safe Rust wrappers built on top of these raw bindings:**
- [Type safe wrappers for ESP IDF Services](https://github.com/esp-rs/esp-idf-svc)
- [Type safe wrappers for ESP IDF Drivers](https://github.com/esp-rs/esp-idf-hal)> **Note**
> `esp-idf-sys`'s [build
> script](https://doc.rust-lang.org/cargo/reference/build-scripts.html) 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.## Build Prerequisites
Follow the [Prerequisites](https://github.com/esp-rs/esp-idf-template#prerequisites) section in the `esp-idf-template` crate.
## Customizing how the ESP IDF SDK is built
Read the [documentation here](BUILD-OPTIONS.md).
## Examples
The examples could be built and flashed conveniently with [`cargo-espflash`](https://github.com/esp-rs/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`:
```sh
$ 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 |## Setting up a "Hello, world!" binary crate with ESP IDF
Use the [esp-idf-template](https://github.com/esp-rs/esp-idf-template) project. Everything would be arranged and built for you automatically - no need to manually clone the ESP IDF repository.
## More information
For more information, check out:
- The [Rust on ESP Book](https://esp-rs.github.io/book/)
- The [ESP Embedded Training](https://github.com/esp-rs/espressif-trainings)
- The [esp-idf-template](https://github.com/esp-rs/esp-idf-template) project
- The [esp-idf-svc](https://github.com/esp-rs/esp-idf-svc) project
- The [esp-idf-hal](https://github.com/esp-rs/esp-idf-hal) project
- The [embedded-svc](https://github.com/esp-rs/embedded-svc) project
- The [embedded-hal](https://github.com/rust-embedded/embedded-hal) project
- The [Rust for Xtensa toolchain](https://github.com/esp-rs/rust-build)
- The [Rust-with-STD demo](https://github.com/ivmarkov/rust-esp32-std-demo) project## Known limitations
* ESP IDF can’t be compiled on filesystems without support for symbolic links (e.g. FAT)