#template #esp32 #espressif #generation #applications #targeting #create

bin+lib esp-generate

Template generation tool to create no_std applications targeting Espressif's chips

5 unstable releases

new 0.3.0 Feb 24, 2025
0.2.2 Jan 16, 2025
0.2.1 Nov 26, 2024
0.2.0 Nov 22, 2024
0.1.0 Nov 7, 2024

#46 in Template engine

Download history 149/week @ 2024-11-07 176/week @ 2024-11-14 490/week @ 2024-11-21 191/week @ 2024-11-28 164/week @ 2024-12-05 177/week @ 2024-12-12 187/week @ 2024-12-19 175/week @ 2024-12-26 183/week @ 2025-01-02 204/week @ 2025-01-09 406/week @ 2025-01-16 228/week @ 2025-01-23 199/week @ 2025-01-30 214/week @ 2025-02-06 154/week @ 2025-02-13

829 downloads per month

MIT/Apache

93KB
1.5K SLoC

esp-generate

Template generation tool to create no_std applications targeting Espressif's line of SoCs and modules.

At present, this template supports the ESP32, ESP32-C2/C3/C6, ESP32-H2, and ESP32-S2/S3. Support for additional devices will be added as they become available.

[!NOTE]

This project is still in the early stages of development. If you encounter any problems, or you would like to see any feature added, please open an issue or start a discussion.

Quickstart

To generate a project using this template:

  1. Install esp-generate:
cargo install esp-generate
  1. Generate a project. There are two options:

    1. Using the Terminal User Interface (TUI):

      esp-generate --chip esp32 your-project
      

      Replace the chip and project name accordingly, and select the desired options using the TUI.

    2. Using the Command Line Interface (CLI), adding the options to the esp-generate command:

      esp-generate --chip esp32 -o alloc -o wifi your-project
      

      Replace the chip and project name accordingly, and select the desired options using the -o/--option flag. For a full list of available options, see Available Options section of this README.

Available Options

  • unstable-hal: Enables esp-hal features that may not be ready for general use yet.
  • alloc: Enables allocations via the esp-alloc crate.
  • wifi: Enables Wi-Fi via the esp-wifi crate; requires alloc.
  • ble: Enables BLE via the esp-wifi crate; requires alloc.
  • embassy: Adds embassy framework support.
  • probe-rs: Replaces espflash with probe-rs and enables RTT-based options.
  • flashing-probe-rs: Contains options that require probe-rs:
    • defmt: Adds support for defmt printing. Uses rtt-target as the RTT implementation.
    • panic-rtt-target: Uses panic-rtt-target as the panic handler.
  • flashing-espflash: Contains options that require espflash:
    • log: Uses the log library to print messages.
    • defmt: Adds support for defmt printing. Uses esp-println and configures espflash to decode defmt logs.
    • esp-backtrace: Uses esp-backtrace as the panic handler.
  • optional: Enables the following set of options:
  • editors: Select the editors that will be used with Rust-Analyzer:
    • helix: The Helix Editor
    • vscode: Visual Studio Code

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~22–34MB
~515K SLoC