Introduction - Embedded Rust on Espressif (original) (raw)

Embedded Rust on Espressif

Introduction

Content of This Material

This is Ferrous Systems' Embedded Rust on Espressif training material. It is divided into two workshops: introductory and advanced. The introductory trail will introduce you to the basics of embedded development and how to make the embedded board interact with the outside world - reacting to commands and sending sensor data.

The advanced course takes it from there to dive deeper into topics like interrupt handling, low-level peripheral access and writing your own drivers.

You can join the esp-rs community on Matrix for all technical questions and issues! The community is open to everyone.

⚠️ This book uses the std ecosystem (esp-idf-hal, esp-idf-sys, esp-idf-svc), which is maintained by the community, these crates are not officially supported by Espressif.

Espressif officially supports the no_std approach with esp-hal. For equivalent training using the officially supported approach, see the no_std training.

Translations

This book has been translated by generous volunteers. If you would like your translation listed here, please open a PR to add it.

The Board

A Rust ESP Board is mandatory1 for working with this book - emulators like QEMU aren't supported.

The board design and images, pin layout and schematics can also be found in this repository.

If you are subscribed to one of the trainings, a board will be provided to you directly by Espressif.

Our focus lies primarily on the ESP32-C3 platform, a RISC-V-based microcontroller with strong IoT capabilities, facilitated by integrated Wi-Fi and Bluetooth 5 (LE) functionality as well as large RAM + flash size for sophisticated applications. A substantial amount of this course is also applicable for Xtensa, the other architecture Espressif uses, in particular the ESP32-S3. For low-level access, the general principles apply as well, but actual hardware access will differ in various ways - refer to the technical reference manuals (C3, S3) or other available technical documents as needed.

Rust Knowledge