#esp8266 #xtensa #embedded-hal #no-std

no-std d1-mini

A Board Support Package (BSP) which provides a type-safe API for the WEMOS/LOLIN D1 mini

2 unstable releases

0.2.0 Sep 23, 2020
0.1.0 Aug 23, 2020

#2085 in Embedded development

MIT/Apache

13KB
75 lines

d1-mini

Crates.io Docs License

A Board Support Package (BSP) which provides a type-safe API for the WEMOS/LOLIN D1 mini.

Documentation

Resources

Getting Started

NOTE: This crate's dependencies are still in the early stages of development, and various features may be incomplete or missing altogether. With this being pre-1.0 software, the public API is subject to change at any time.

Prerequisites

Because the Xtensa target is not officially supported, you must build a custom version of Rust. For more information on this process, please refer the the rust-xtensa project's README, which has detailed instructions for most popular operating systems.

There are currently three viable options for cross-compilation:

  • xargo (in maintenance mode)
  • cargo-xbuild
  • cargo (using the unstable build-std feature)

Select one (or more) from the above list, and ensure they are installed.

Build the Examples

To build the examples, you will need the Xtensa toolchain. You can download pre-built binaries from Espressif, or build them yourself using esp-open-sdk. In either case, make sure that the resulting binaries are in your $PATH.

You can then build all examples at once, or just build one at a time:

$ xargo build --release --examples
$ xargo build --release --example=blinky

Flash the Device

espflash

espflash is a community developed tool (written entirely in Rust) for flashing ESP32- and ESP8266-based devices. It provides a CLI tool for flashing the aforementioned devices as well as an additional crate, cargo-espflash, which provides a cargo subcommand which compiles and flashes your device with one command.

For more information on these tools, please refer to their respective READMEs.

Examples

Make sure you replace <PORT> with the appropriate value prior to running either of the below commands.

Using espflash:

$ espflash <PORT> target/xtensa-esp8266-none/release/examples/blinky

Using cargo-espflash:

$ cargo espflash --release --example=blinky --chip=esp8266 --tool=xargo <PORT>

esptool

You can use the official tool from Espressif, esptool.py, to flash the firmware to your device. Make sure this has been installed and esptool.py is available in your $PATH.

First convert the ELF-formatted binary to a flashable image:

$ esptool.py \
>   --chip esp8266 \
>   elf2image \
>   target/xtensa-esp8266-none/release/examples/blinky

Then you're ready to flash the image to the device; make sure you replace <PORT> with the appropriate value prior to running the command:

$ esptool.py \
>   --port <PORT> \
>   write_flash \
>   -fm dio \
>   -fs 32m \
>   0x00000 \
>   target/xtensa-esp8266-none/release/examples/blinky-0x00000.bin

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

~4MB
~109K SLoC