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: 5 days ago
JSON representation
-
no-std crates
-
WIP
- locate-rs - optimized solver for Indoor Localization (Multilateration / TDOA) - [](https://crates.io/crates/locate-rs)
- micromath - [](https://crates.io/crates/micromath)
- 🤖 crispy-bootloader - bank bootloader for RP2040 with USB firmware upload, A/B bank switching, and CRC verification.
- usbpd - PD library and traits, supports Sink mode, with Source functionality planned.
- embedded-3dgfx - graphics` with optional physics effects. [](https://crates.io/crates/embedded-3dgfx)
- embedded-gui - gui.svg)](https://crates.io/crates/embedded-gui)
- uf-ahrs - [](https://crates.io/crates/uf-ahrs)
-
-
Old books, blogs, and training materials
-
WIP
- Pragmatic Bare Metal Rust
- Using Rust in an Embedded Project: A Simple Example - compiling.
- Robigalia
- intermezzOS
- Fearless concurrency - M microcontroller with memory-safe concurrency.
- Internet of Streams
- Exploring Rust on Teensy
- Pragmatic Bare Metal Rust
- Fearless concurrency - M microcontroller with memory-safe concurrency.
- Internet of Streams
-
-
Panic handling
-
WIP
- `dont_panic`
- `no-panic` - panic)
- `panic-abort` - abort)
- `panic-halt` - halt)
- `panic-never` - never)
- `panic-probe` - probe)
- `panic-ramdump` - ramdump)
- `panic-rtt`
- `panic-rtt-target` - rtt-target)
- `rp2040-panic-usb-boot` - panic-usb-boot)
-
-
Peripheral Access Crates
-
Ambiq Micro
-
Espressif
- `esp32` - [](https://crates.io/crates/esp32)
- `esp32c2` - [](https://crates.io/crates/esp32c2)
- `esp32c3` - [](https://crates.io/crates/esp32c3)
- `esp32c6` - [](https://crates.io/crates/esp32c6)
- `esp32s2` - [](https://crates.io/crates/esp32s2)
- `esp32s3` - [](https://crates.io/crates/esp32s3)
- `esp8266` - [](https://crates.io/crates/esp8266)
- `esp32h2` - [](https://crates.io/crates/esp32h2)
- `esp8266` - [](https://crates.io/crates/esp8266) *note: esp8266 is archived, no further development planned*
- `esp32c5` - [](https://crates.io/crates/esp32c5)
- `esp32c61` - [](https://crates.io/crates/esp32c61)
- `esp32p4` - [](https://crates.io/crates/esp32p4)
-
GigaDevice
- `gd32e2` - M23 microcontrollers (generated using svd2rust) - [](https://crates.io/crates/gd32e2)
- `gd32f1` - M3 microcontrollers (generated using svd2rust) - [](https://crates.io/crates/gd32f1)
- `gd32f2` - M3 microcontrollers (generated using svd2rust) - [](https://crates.io/crates/gd32f2)
- `gd32vf103-pac` - V microcontrollers (generated using svd2rust) - [](https://crates.io/crates/gd32vf103-pac)
-
Microchip
- `sam3x8e` - [](https://crates.io/crates/sam3x8e)
- `pic32-pac` - [](https://crates.io/crates/pic32mx2xx)
- `atsame54`
- `atsamx7x-rust`
- `avr-device`
-
MSP430
- `msp430g2553`
- `msp430fr2355`
- `msp430fr6972` - [](https://crates.io/crates/msp430fr6972)
- msp430 quickstart
- `msp430g2553`
-
Nordic
- `nrf51` - [](https://crates.io/crates/nrf51)
- `nrf52810-pac` - Peripheral access API for the nRF52810 microcontroller (generated using svd2rust) - [](https://crates.io/crates/nrf52810-pac)
- `nrf52811-pac` - Peripheral access API for the nRF52811 microcontroller (generated using svd2rust) - [](https://crates.io/crates/nrf52811-pac)
- `nrf52832-pac` - Peripheral access API for the nRF52832 microcontroller (generated using svd2rust) - [](https://crates.io/crates/nrf52832-pac)
- `nrf52833-pac` - Peripheral access API for the nRF52833 microcontroller (generated using svd2rust) - [](https://crates.io/crates/nrf52833-pac)
- `nrf52840-pac` - Peripheral access API for the nRF52840 microcontroller (generated using svd2rust) - [](https://crates.io/crates/nrf52840-pac)
- `nrf5340-app-pac` - Peripheral access API for the nRF5340 application core (generated using svd2rust) - [](https://crates.io/crates/nrf5340-app-pac)
- `nrf5340-net-pac` - Peripheral access API for the nRF5340 network core (generated using svd2rust) - [](https://crates.io/crates/nrf5340-net-pac)
- `nrf9160-pac` - Peripheral access API for the nRF9160 system-in-package (generated using svd2rust) - [](https://crates.io/crates/nrf9160-pac)
-
NXP
- `k64` - [](https://crates.io/crates/k64)
- `lpc11uxx` - [](https://crates.io/crates/lpc11uxx)
- `lpc55s6x-pac` - [](https://crates.io/crates/lpc55s6x-pac)
- `lpc82x-pac` - [](https://crates.io/crates/lpc82x-pac)
- `lpc845-pac` - [](https://crates.io/crates/lpc845-pac)
- `mkw41z` - [](https://crates.io/crates/mkw41z)
- `SKEAZN642` - [](https://crates.io/crates/SKEAZN642)
- `mcx-pac` - [](https://crates.io/crates/mcx-pac)
-
Raspberry Pi Silicon
- `rp2040-pac` - Peripheral access API for the RP2040 dual-core system-on-chip (generated using svd2rust) - [](https://crates.io/crates/rp2040-pac)
-
Real-time tools
-
Renesas
- `ra2a1` - [](https://crates.io/crates/ra2a1)
- `ra2e1` - [](https://crates.io/crates/ra2e1)
- `ra2e2` - [](https://crates.io/crates/ra2e2)
- `ra2l1` - [](https://crates.io/crates/ra2l1)
- `ra4e1` - [](https://crates.io/crates/ra4e1)
- `ra4m1` - [](https://crates.io/crates/ra4m1)
- `ra4m2` - [](https://crates.io/crates/ra4m2)
- `ra4m3` - [](https://crates.io/crates/ra4m3)
- `ra4w1` - [](https://crates.io/crates/ra4w1)
- `ra6e1` - [](https://crates.io/crates/ra6e1)
- `ra6m1` - [](https://crates.io/crates/ra6m1)
- `ra6m2` - [](https://crates.io/crates/ra6m2)
- `ra6m3` - [](https://crates.io/crates/ra6m3)
- `ra6m4` - [](https://crates.io/crates/ra6m4)
- `ra6t1` - [](https://crates.io/crates/ra6t1)
- `ra6t2` - [](https://crates.io/crates/ra6t2)
- `da14531` - Low Power BT 5.1 System-on-Chip - [](https://crates.io/crates/da14531)
-
SiFive
- `e310x` - svd2rust generated interface to SiFive [Freedom E310](https://www.sifive.com/cores/e31) MCUs - [](https://crates.io/crates/e310x)
-
Silicon Labs
- `efm32pg12-pac` - Peripheral access API for Silicon Labs EFM32PG12 microcontrollers - [](https://crates.io/crates/efm32pg12-pac)
- `efm32-rs`
- `efm32g-pac` - [](https://crates.io/crates/efm32g-pac)
- `efm32gg-pac` - [](https://crates.io/crates/efm32gg-pac)
- `efm32gg11b-pac` - [](https://crates.io/crates/efm32gg11b-pac)
- `efm32gg12b-pac` - [](https://crates.io/crates/efm32gg12b-pac)
- `efm32hg-pac` - [](https://crates.io/crates/efm32hg-pac)
- `efm32jg1b-pac` - [](https://crates.io/crates/efm32jg1b-pac)
- `efm32jg12b-pac` - [](https://crates.io/crates/efm32jg12b-pac)
- `efm32lg-pac` - [](https://crates.io/crates/efm32lg-pac)
- `efm32pg-pac` - [](https://crates.io/crates/efm32pg-pac)
- `efm32pg22-pac` - [](https://crates.io/crates/efm32pg22-pac)
- `efm32pg23-pac` - [](https://crates.io/crates/efm32pg23-pac)
- `efm32tg-pac` - [](https://crates.io/crates/efm32tg-pac)
- `efm32tg11b-pac` - [](https://crates.io/crates/efm32tg11b-pac)
- `efm32wg-pac` - [](https://crates.io/crates/efm32wg-pac)
- `efm32zg-pac` - [](https://crates.io/crates/efm32zg-pac)
-
StarFive
- `jh7110-vf2-12a-pac` - 
- `jh7110-vf2-13b-pac` - 
- `j71xx-pac` - svd2rust generated interface to StarFive [JH71xx](https://www.starfivetech.com/en/site/soc) MCUs - [](https://crates.io/crates/jh71xx-pac)
-
STMicroelectronics
- `stm32f0` - [](https://crates.io/crates/stm32f0)
- `stm32f1` - [](https://crates.io/crates/stm32f1)
- `stm32f2` - [](https://crates.io/crates/stm32f2)
- `stm32f3` - [](https://crates.io/crates/stm32f3)
- `stm32f4` - [](https://crates.io/crates/stm32f4)
- `stm32f7` - [](https://crates.io/crates/stm32f7)
- `stm32g0` - [](https://crates.io/crates/stm32g0)
- `stm32g4` - [](https://crates.io/crates/stm32g4)
- `stm32h7` - [](https://crates.io/crates/stm32h7)
- `stm32l0` - [](https://crates.io/crates/stm32l0)
- `stm32l1` - [](https://crates.io/crates/stm32l1)
- `stm32l4` - [](https://crates.io/crates/stm32l4)
- `stm32-rs`
- `stm32h7` - [](https://crates.io/crates/stm32h5)
-
Texas Instruments
-
Vorago
-
Wiznet
- `w7500x-pac` - [](https://crates.io/crates/w7500x-pac)
-
XMC
- `xmc4100` - [](https://crates.io/crates/xmc4100)
- `xmc4200` - [](https://crates.io/crates/xmc4200)
- `xmc4300` - [](https://crates.io/crates/xmc4300)
- `xmc4400` - [](https://crates.io/crates/xmc4400)
- `xmc4500` - [](https://crates.io/crates/xmc4500)
- `xmc4700` - [](https://crates.io/crates/xmc4700)
- `xmc4800` - [](https://crates.io/crates/xmc4800)
-
-
Real-time
-
Real-time Operating System (RTOS)
- Drone OS - time applications in Rust.
- RIOT-OS
- FreeRTOS.rs
- FreeRTOS-rust
- Hubris - time operating system built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers.
- Zephyr
- Ariel OS
- Ariel OS
-
Real-time tools
- RTIC v1.0 - Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems:
- msp430 rtfm
-
-
Runtime Crates
-
Real-time tools
- `cortex-m-rt` - M
- `cortex-a-rt` - A
- `cortex-r-rt` - R
- `riscv-rt` - V
- `esp-riscv-rt` - V devices from Espressif (ESP32)
- `xtensa-lx-rt`
- `mips-rt`
- `msp430-rt`
-
-
Tools
-
Paid and commercially available materials
- embedded-hal-mock - hal-mock)
- bindgen - [](https://crates.io/crates/bindgen)
- cargo-flash - [](https://crates.io/crates/cargo-flash)
- cargo-embed - flash with additional useful features like configuration file support, an RTT terminal, or a GDB server. - [](https://crates.io/crates/cargo-embed)
- cargo-call-stack
- cargo-dfu
- xargo - default std libraries — build Rust runtime for your embedded system.
- cargo-xbuild
- edc2svd - [](https://crates.io/crates/edc2svd)
- cortex-m semihosting - M processors
- bobbin-cli
- ferros - based userland which also adds compile-time assurances to seL4 development.
- cargo-hf2 - [](https://crates.io/crates/cargo-hf2)
- cargo-bloat
- espflash - [](https://crates.io/crates/espflash)
- espup - [](https://crates.io/crates/espup)
- uf2 - [](https://crates.io/crates/uf2)
- Probe Run
- defmt - constrained devices, like microcontrollers.
- flip-link - M programs
- app-template - generate` powered project template for quickly setting up new projects using the Knurling Tools.
- defmt-test - in `#[test]` attribute, but will run on an embedded target
- embedded-hal-compat
- Embassy start - rs/embassy). This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only.
- svd-generator - [](https://crates.io/crates/svd-generator)
- probe-rs
- rumbac - BA protocol to talk with the Arduino-provided bootloader, porting just enough of the `bossac` tool to Rust
- derive-mmio - friendly APIs for embedded peripherals.
- commitment-issues
- embedded-test
- svd2rust
-
Categories
Driver crates
160
Peripheral Access Crates
115
no-std crates
86
Board support crates
63
HAL implementation crates
43
Tools
31
Books, blogs, and training materials
28
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
194
Other
96
STMicroelectronics
34
Paid and commercially available materials
33
Nordic
20
Free and public materials
19
Renesas
19
Adafruit
18
Silicon Labs
18
Espressif
14
NXP
12
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
rust-embedded
10
cortex-m
10
no-std
9
svd2rust
8
xmc
8
infineon
8
arm
7
rust-lang
7
esp32
6
ferrous-systems
5
firmware
5
bare-metal
4
bootloader
4
embedded-rust
4
async
3
stm32
3
embedded-hal
3
freertos
2
avr
2
iot
2
rust-tools
2
rp2040
2
keyboard
2
espressif
2
embedded-systems
2
hal
2
at-command
1
embedded-hal-driver
1
uart
1
drone
1
drogue-device
1
esp-idf
1
microcontrollers
1
operating-system
1
mmio
1
cpu
1
ota
1
gcode
1
3d-printing
1
soem
1
industrial-automation
1
igh-ethercat-master
1
ethercat-master
1
ethercat
1
runtime-less
1
platform-less
1
asynchronous
1
actor-model
1