awesome-embedded-rust
Curated list of resources for Embedded and Low-level development in the Rust programming language
https://github.com/rust-embedded/awesome-embedded-rust
Last synced: 12 days ago
JSON representation
-
Architecture support crates
-
ARM
- `cortex-a` - level access to Cortex-A processors (early state) - [](https://crates.io/crates/cortex-a)
- `cortex-m` - level access to Cortex-M processors - [](https://crates.io/crates/cortex-m)
-
MIPS
- `mips-mcu` - level access to MIPS MCU cores - [](https://crates.io/crates/mips-mcu)
- `mips` - level access to MIPS32 processors - [](https://crates.io/crates/mips)
-
RISC-V
- `riscv` - level access to RISC-V processors - [](https://crates.io/crates/riscv)
-
-
Board support crates
-
1BitSquared
- `onebitsy` - Board support crate for the [1bitsy] STM32F4-based board - [](https://crates.io/crates/onebitsy)
-
Adafruit
- `metro_m0` - Board support for the [Metro M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [](https://crates.io/crates/metro_m0)
- `metro_m4` - Board support for the [Metro M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [](https://crates.io/crates/metro_m4)
- `pyportal` - Board support for the [PyPortal board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/pyportal)
- `pygamer` - Board support for the [PyGamer board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [](https://crates.io/crates/pygamer)
- `trellis_m4` - Board support for the [NeoTrellis M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/trellis_m4)
- `feather-f405` - Board support for the [Feather STM32F405 Express]. [](https://crates.io/crates/feather-f405)
- `feather_m0` - Board support for the [Feather M0 board], and some variants in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [](https://crates.io/crates/feather_m0)
- `feather_m4` - Board support for the [Feather M4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board. [](https://crates.io/crates/feather_m4)
- `circuit_playground_express` - Board support for the [Circuit Playground Express board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/circuit_playground_express)
- `edgebadge` - Board support for the [EdgeBadge board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/edgebadge)
- `gemma_m0` - Board support for the [Gemma M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/gemma_m0)
- `itsybitsy_m0` - Board support for the [ItsyBitsy M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/itsybitsy_m0)
- `itsybitsy_m4` - Board support for the [ItsyBitsy M4 Express board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/itsybitsy_m4)
- `trinket_m0` - Board support for the [Trinket M0 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/trinket_m0)
- `neo_trinkey` - Board support for the [neo trinkey board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/neo_trinkey)
- `neokey_trinkey` - Board support for the [neokey trinkey board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/neokey_trinkey)
- `grand_central_m4` - Board support for the [grand central m4 board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/grand_central_m4)
- `qt_py_m0` - Board support for the [QT Py board] in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/qt_py_m0)
-
Arduino
- `arduino_mkr1000` - Board support for the [MKR 1000 WiFi board](https://docs.arduino.cc/hardware/mkr-1000-wifi) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/arduino_mkr1000)
- `arduino_mkrvidor4000` - Board support for the [MKR Vidor board](https://store.arduino.cc/usa/mkr-vidor-4000) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/arduino_mkrvidor4000)
- `arduino_mkrzero` - Board support for the [mkrzero board](https://store.arduino.cc/arduino-mkrzero) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/arduino_mkrzero)
- `arduino_nano33iot` - Board support for the [Arduino Nano 33 IoT](https://store.arduino.cc/products/arduino-nano-33-iot) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/arduino_nano33iot)
- `avr-hal` - Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo
-
Nordic
- `dwm1001` - [Decawave DWM1001-DEV] - [](https://crates.io/crates/dwm1001)
- `microbit` - [micro:bit] - [](https://crates.io/crates/microbit)
- `nrf52840-dk-bsp` - [nrf52840-dk] - [](https://crates.io/crates/nrf52840-dk-bsp)
- `Thingy:91-nrf9160` - [thingy:91] - [](https://crates.io/crates/thingy-91-nrf9160-bsp)
-
NXP
- `frdm-kw41z` - [FRDM-KW41Z] - [](https://crates.io/crates/frdm-kw41z)
-
Other
- `serpente` - Board support for the [serpente board](https://www.solder.party/docs/serpente/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/serpente)
- `p1am_100` - Board support for the [p1am_100 board](https://facts-engineering.github.io) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/p1am_100)
-
Raspberry Pi
-
SeeedStudio
-  in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/xiao_m0)
- `wio_lite_mg126` - Board support for the [Seeed Studio wio_lite_mg126](https://wiki.seeedstudio.com/Wio-Lite-MG126) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/wio_lite_mg126)
- `wio_lite_w600` - Board support for the [Seeed Studio wio_lite_w600](https://wiki.seeedstudio.com/Wio-Lite-W600/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/wio_lite_w600)
- `wio_terminal` - Board support for the [Seeed Studio wio_terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 1 support] board [](https://crates.io/crates/wio_terminal)
- `seedstudio-gd32v` - Board support crate for the [GD32 RISC-V Dev Board](https://www.seeedstudio.com/SeeedStudio-GD32-RISC-V-Dev-Board-p-4302.html)
-
SiFive
- `hifive1` - Board support crate for [HiFive1](https://www.sifive.com/boards/hifive1) and [LoFive](https://hackaday.io/project/26909-lofive) boards - [](https://crates.io/crates/hifive)
-
Sipeed
- 
-
Sodaq
- `sodaq_one` - Board support for the [Sodaq one board](https://support.sodaq.com/Boards/One/) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/sodaq_one)
- `sodaq_sara_aff` - Board support for the [Sodaq sara aff board](https://shop.sodaq.com/sodaq-sara-sff-r410m.html) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/sodaq_sara_aff)
-
Sparkfun
- `samd21_mini` - Board support for the [SAMD21 Mini Breakout](https://www.sparkfun.com/products/13664) in the [atsamd-rs] repo. It is an [atsamd-rs tier 2 support] board. [](https://crates.io/crates/samd21_mini)
- `sparkfun-pro-micro-rp2040` - Board Support Crate for the RP2040 based Sparkfun Pro Micro.
- `sparkfun-pro-micro-rp2040` - Board Support Crate for the RP2040 based Sparkfun Pro Micro.
-
Special Purpose
- `betafpv-f3` - For the BetaFPV F3 drone flight controller
- `tildagon` - Board support for the EMF Camp [Tildagon badge](https://tildagon.badge.emfcamp.org/)
-
STMicroelectronics
- `f3` - [](https://crates.io/crates/f3)
- `solo-bsp` - [](https://crates.io/crates/solo-bsp)
- `stm32f407g-disc` - [](https://crates.io/crates/stm32f407g-disc)
- `stm32f429i-disc` - [](https://crates.io/crates/stm32f429i-disc)
- `stm32f3-discovery` - embedded.github.io/discovery/index.html) - [](https://crates.io/crates/stm32f3-discovery)
- `nucleo-h743zi` - oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2
- `nucleo-h723zg`
- `nucleo-f401re` - [Nucleo-F401RE] [](https://crates.io/crates/nucleo-f401re)
-
Teensy
-
Texas Instruments
- `stellaris-launchpad` - For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad [](https://crates.io/crates/stellaris-launchpad)
- `monotron` - A 1980s home-computer style application for the Texas Instruments Stellaris Launchpad. PS/2 keyboard input, text output on a bit-bashed 800x600 VGA signal. Uses [menu], [vga-framebuffer] and [pc-keyboard].
- `tm4c129-launchpad` - For the Texas Instruments TM4C129-XL Launchpad board
-
Vorago
- Blogpost
- `vorago-reb1` - 
- `vorago-reb1` - [](https://crates.io/crates/vorago-reb1)
-
-
Books, blogs, and training materials
-
Community Chat Rooms
- The Embedded Rust Book - An introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers.
- Discovery - embedded — this book is an introductory course on microcontroller-based embedded systems that uses Rust as the teaching language. Original author: @japaric
- Writing embedded drivers in Rust isn't that hard - hal driver. [Part 2](https://hboeving.dev/blog/rust-i2c-driver-p2/)
- Ferrous Systems' Knurling Sessions - on embedded projects that explore specific concepts using generally available hardware, building full systems and components using microcontrollers, sensors, and actuators.
- STM32F4xx with Embedded Rust at the HAL - hal crate.
- Embedded Rust programming playlist
- ESP32-C3 Rust Tutorials - C3_Rust_Tutorials) implementing various peripherals of the ESP32-C3 with the end goal of creating a complete data logger application.
-
Free and public materials
- Cortex-M Quickstart
- Writing an OS in Rust
- Building a sailing starter board with Rust (RTIC) - by-step story/guide to build STM32-based PCB and program it with Rust for fun and games.
- Embedded Rust (std) on Espressif - Training for Rust using std approach development on ESP32-C3 by Ferrous Systems.
- Embedded Rust (no_std) on Espressif - Training for Rust using no_std approach development on ESP32-C3.
- MicroRust
- Physical Computing With Rust
- Ferrous Systems' Embedded Training Courses: 2020-current edition - on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52840 hardware. This training was given at Oxidize Conferences and by [Ferrous Systems] to corporate customers.
- Writing embedded drivers in Rust isn't that hard - hal driver. [Part 2](https://hboeving.dev/blog/rust-i2c-driver-p2/)
- impl Rust on ESP32 Book - A hands-on guide that uses the ESP32 DevKit V1 to demonstrate how to work with various modules and sensors. ([github source](https://github.com/ImplFerris/esp32-book))
- Pico Pico Book - A hands-on guide that uses the Pico 2 (RP2350) to demonstrate how to work with various modules and sensors. ([github source](https://github.com/ImplFerris/pico-pico))
- STM32F4xx with Embedded Rust at the HAL - hal crate.
- ESP32-C3 Rust Tutorials - C3_Rust_Tutorials) implementing various peripherals of the ESP32-C3 with the end goal of creating a complete data logger application.
- The Rust on ESP Book - This book aims to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules.
- DSP on STM32F407G-DISC1 - M based Microcontrollers: Theory and Practice](https://www.amazon.com/Digital-Signal-Processing-Cortex-M-Microcontrollers/dp/1911531166) book. The book isn't necessary to enjoy the examples and learn a functional DSP Rust coding style.
-
Paid and commercially available materials
- Simplified Embedded Rust: Standard Library Edition - This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the standard library development approach which is based on the ESP-IDF framework.
- Simplified Embedded Rust: Core Library Edition - This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the core library development approach for bare metal development.
-
-
Component abstraction crates
-
Other
- `embedded-graphics` - graphics)
- `smart-leds`
- `accelerometer` - Generic accelerometer support, including traits and types for taking readings from 2 or 3-axis accelerometers and tracking device orientations - [](https://crates.io/crates/accelerometer)
- `atat` - [](https://crates.io/crates/atat)
- `embedded-nal` - [](https://crates.io/crates/embedded-nal)
- `embedded-storage`
- `switch-hal` - [](https://crates.io/crates/switch-hal)
- `usb-device` - [](https://crates.io/crates/usb-device)
- `atat` - [](https://crates.io/crates/atat)
-
-
Driver crates
-
Other
- AD983x
- adafruit-alphanum4 - alphanum4)
- ADE791x
- ADS1x1x
- ADXL313
- ADXL343
- ADXL355
- AFE4404
- AHT20-driver - driver)
- BlueNRG
- BMA400
- BNO055
- CD74HC4067
- dht-sensor - sensor)
- DRV8825
- DS1307
- ebyte-e32 - e32)
- EEPROM24x
- embedded-ccs811 - ccs811)
- embedded-sdmmc - sdmmc)
- ENC28J60
- HC-12 - at)
- HTS221
- IIS2MDC
- ISM330DHCX
- keypad
- KXCJ9
- L3GD20
- LSM303DLHC
- MAX6675 - hal)
- MAX6955
- MAX116xx-10bit - 10bit)
- MCP25LCXX - eeprom-25lcxx)
- MCP3008 - mcp3008)
- MCP3425
- MCP794xx
- OPT300x
- PAC194X
- port-expander - expander)
- pwm-pca9685 - pca9685)
- rainbow-hat-rs - hat-rs)
- rotary-encoder-hal - encoder-hal)
- sega-controller - controller)
- SGP30
- SH1106
- shared-bus - bus)
- shift-register-driver - register-driver)
- Si4703
- SRAM23x
- SSD1306
- SSD1309
- STSPIN220
- Sx127x - sx127x)
- Sx128x - sx128x)
- TC72 - tc72r-rs)
- TCN75A
- TMP006
- TMP1x2
- TSIC
- TSL256X
- VEML6030/VEML7700
- VEML6075
- usbd-serial - serial)
- usbd-hid - hid)
- usbd-hid-device - hid-device)
- usbd-human-interface-device - human-interface-device)
- usbd-midi - midi)
- usbd-webusb - webusb)
- SHTCx
- ST7789
- DW1000
- Adafruit-7segment - 7segment)
- ST7565
- tb6612fng
- vl53l1x-uld - [](https://crates.io/crates/vl53l1x-uld)
- i2c-multiplexer - multiplexer)
- SHT31-rs
- embedded-dht-rs - dht-rs)
- on drive-rs - rs)) while we work to port everything across.
- AEM10900 - [](https://crates.io/crates/aem10900)
- FH101RF - [](https://crates.io/crates/fh101rf)
- lcd_parallel_bus
- adafruit-seesaw - seesaw)
- IS31FL3728 - [](https://crates.io/crates/is31fl3728-rs)
- AP33772S-rs - rs)
-
WIP
- radio-at86rf212 - at86rf212)
- AD9850
- APDS9960
- BME280
- bme680
- BMI160
- BMP280 - ehal)
- CC1101
- DS323x
- epd-waveshare - waveshare)
- embedded-morse - morse)
- Ft6x36
- grove-matrix-led-my9221-rs - matrix-led-my9221-rs)
- GridEYE
-
Categories
Driver crates
160
Peripheral Access Crates
112
no-std crates
84
Board support crates
63
HAL implementation crates
43
Tools
31
Books, blogs, and training materials
24
Firmware projects
12
Panic handling
10
Old books, blogs, and training materials
10
Real-time
10
Component abstraction crates
9
Runtime Crates
8
Architecture support crates
5
License
1
Sub Categories
WIP
192
Other
96
STMicroelectronics
34
Paid and commercially available materials
33
Nordic
20
Renesas
19
Adafruit
18
Silicon Labs
18
Free and public materials
15
NXP
12
Espressif
11
Real-time tools
11
XMC
9
Microchip
9
Real-time Operating System (RTOS)
8
Community Chat Rooms
7
Texas Instruments
7
Vorago
7
GigaDevice
6
SeeedStudio
6
MSP430
6
Arduino
5
Ambiq Micro
4
StarFive
4
Sparkfun
3
SiFive
3
Sipeed
2
OS
2
Special Purpose
2
ARM
2
Sodaq
2
MIPS
2
Raspberry Pi Silicon
2
1BitSquared
1
Wiznet
1
Teensy
1
Raspberry Pi
1
RISC-V
1
Keywords
rust
34
embedded
18
cortex-m
10
rust-embedded
9
no-std
9
xmc
8
svd2rust
8
infineon
8
arm
7
rust-lang
7
ferrous-systems
5
firmware
5
esp32
5
embedded-rust
4
bare-metal
4
bootloader
4
stm32
3
async
3
embedded-hal
3
iot
2
freertos
2
rp2040
2
rust-tools
2
avr
2
keyboard
2
espressif
2
embedded-systems
2
hal
2
drone
1
at-command
1
embedded-hal-driver
1
esp-idf
1
uart
1
microcontrollers
1
drogue-device
1
lora
1
wifi
1
actor-model
1
asynchronous
1
platform-less
1
runtime-less
1
ethercat
1
ethercat-master
1
igh-ethercat-master
1
industrial-automation
1
soem
1
3d-printing
1
gcode
1
ota
1
cpu
1