86 releases

0.35.0 Jun 23, 2024
0.34.1 Feb 22, 2024
0.34.0 Jan 26, 2024
0.33.7 Nov 7, 2023
0.1.2 Aug 7, 2019

#1370 in Embedded development

Download history 3922/week @ 2024-07-20 3713/week @ 2024-07-27 4220/week @ 2024-08-03 3283/week @ 2024-08-10 3414/week @ 2024-08-17 2643/week @ 2024-08-24 2923/week @ 2024-08-31 3148/week @ 2024-09-07 2664/week @ 2024-09-14 2977/week @ 2024-09-21 2992/week @ 2024-09-28 3497/week @ 2024-10-05 3437/week @ 2024-10-12 3693/week @ 2024-10-19 3533/week @ 2024-10-26 3701/week @ 2024-11-02

14,998 downloads per month
Used in 38 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–10MB
~110K SLoC