esp8266-hal
β οΈ NOTE this HAL is now in maintenence mode. No further development is planned at this time, however PRs may still be accepted.
An experimental hardware abstraction layer for the ESP8266 written in Rust.
Join in on the discussion: https://matrix.to/#/#esp-rs:matrix.org!
An example project using the crate can be found here.
Setting up the compiler
In order to build Rust for the Xtensa architecture, you must use the esp-rs/rust compiler fork.
This can be installed via the installation scripts and pre-built artifacts found in the esp-rs/rust-build repository. Alternatively, you can build and install the compiler from source.
For more information relating to the Rust compiler fork please refer to the Installing Rust section of The Rust on ESP Book.
Using the Installation Scripts
Linux/macOS
$ curl -LO https://raw.githubusercontent.com/esp-rs/rust-build/main/install-rust-toolchain.sh
$ chmod +x install-rust-toolchain.sh
$ ./install-rust-toolchain.sh
Windows
PS> Invoke-WebRequest https://raw.githubusercontent.com/esp-rs/rust-build/main/Install-RustToolchain.ps1 -OutFile Install-RustToolchain.ps1
PS> .\Install-RustToolchain.ps1
Rust with Podman
Alternatively you might build the project in the container where image already contains pre-installed Rust and ESP-IDF.
$ podman run --device /dev/ttyUSB0 -it docker.io/espressif/idf-rust
This container is lacking the utilities for the ESP8266, but you can install them using these instructions inside the container:
$ apt update && apt install gcc-xtensa-lx106 binutils-xtensa-lx106
Flashing the examples
Once you have the Rust compiler fork installed you can flash the examples using cargo-espflash:
$ cargo install cargo-espflash
$ cargo espflash --release --example blinky /dev/ttyUSB0
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.