#esp32 #esp-idf #idf #sys #build-script #service

sys no-std esp-idf-sys

Bindings for ESP-IDF (Espressif's IoT Development Framework)

85 releases

0.34.1 Feb 22, 2024
0.33.7 Nov 7, 2023
0.33.1 Jun 11, 2023
0.32.1 Dec 13, 2022
0.1.2 Aug 7, 2019

#260 in Embedded development

Download history 2023/week @ 2024-01-03 2150/week @ 2024-01-10 1964/week @ 2024-01-17 2997/week @ 2024-01-24 2619/week @ 2024-01-31 2394/week @ 2024-02-07 3108/week @ 2024-02-14 3924/week @ 2024-02-21 3051/week @ 2024-02-28 3209/week @ 2024-03-06 3464/week @ 2024-03-13 3266/week @ 2024-03-20 3298/week @ 2024-03-27 3081/week @ 2024-04-03 3411/week @ 2024-04-10 2878/week @ 2024-04-17

13,070 downloads per month
Used in 31 crates (22 directly)

MIT/Apache

125KB
2.5K SLoC

Raw Rust bindings for the ESP IDF SDK

CI crates.io Documentation Matrix Wokwi

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 crate

You might want to also check out the type safe Rust wrappes 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.

Build Prerequisites

Follow the Prerequisites section in the esp-idf-template crate.

Customizing how the ESP IDF SDK is built

Read the documentation here.

Examples

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

Setting up a "Hello, world!" binary crate with ESP IDF

Use the 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:

Dependencies

~2–11MB
~108K SLoC