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

#866 in Embedded development

Download history 2895/week @ 2024-08-23 2572/week @ 2024-08-30 3424/week @ 2024-09-06 2709/week @ 2024-09-13 2906/week @ 2024-09-20 2999/week @ 2024-09-27 3282/week @ 2024-10-04 3419/week @ 2024-10-11 3732/week @ 2024-10-18 3550/week @ 2024-10-25 3766/week @ 2024-11-01 2541/week @ 2024-11-08 2431/week @ 2024-11-15 3035/week @ 2024-11-22 2849/week @ 2024-11-29 2734/week @ 2024-12-06

11,326 downloads per month
Used in 40 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