Track Awesome Embedded Rust Updates Daily
Curated list of resources for Embedded and Low-level development in the Rust programming language
🏠 Home · 🔍 Search · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 rust-embedded/awesome-embedded-rust · ⭐ 6.4K · 🏷️ Programming Languages
Dec 19, 2024
Panic handling / WIP
rp2040-panic-usb-boot
: Save panic message in XIP RAM and reboot RP2040 to USB mode
Dec 09, 2024
Driver crates / Other
- AEM10900 - I2C - Energy Harvester - github (⭐0) -
- FH101RF - SPI - Wake-Up Radio - github (⭐1) -
Nov 30, 2024
Panic handling / WIP
dont_panic
+dont_panic_slice
: panic!()-like macro that causes linking error instead of panicking. May be used to statically ensure some code won't panic. +
no-panic
: Attribute macro to require that the compiler prove a function can't ever panic.
panic-abort
: Causes an abort on panics (nightly-only)
panic-halt
: Halts the processor on panics
panic-itm
: Prints the panic through the chip's ITM to a debugger attached to the SWO pin (Cortex-M with ITM only)
panic-never
: This crate guarantees that your application is free of panicking branches.
panic-probe
: A panic handler that exitsprobe-run
with an error code.
panic-ramdump
: Writes the panic message into the beginning of RAM and enters an infinite loop; the message can be extracted by attaching a debugger (Cortex-M only)
panic-rtt
: Set the panicking behavior to log to a JLINK debugger and loop.
panic-rtt-target
: Logs panic messages over RTT. Usesrtt-target
.
panic-semihosting
: Prints the panic message via semihosting to an attached debugger (Cortex-M only)
Nov 23, 2024
License / WIP
Oct 14, 2024
Driver crates / Other
- embedded-dht-rs - 1-Wire, I2C - DHT11/DHT20/DHT22 temperature/humidity sensor driver - github (⭐13) -
Sep 15, 2024
Tools / Paid and commercially available materials
- probe-rs (⭐1.8k): a modern, embedded debugging toolkit, written in Rust
Aug 20, 2024
no-std crates / WIP
- sized-dst: Owned container for dynamically-sized types (such as trait objects) backed by stack memory. -
Aug 12, 2024
no-std crates / WIP
- wtx (⭐228): Among other things, provides implementations to interact with HTTP, WebSockets and Databases.
Aug 04, 2024
Driver crates / WIP
- SSD1322_rs - SPI - Async graphics driver for SSD1322 screen -
Jul 15, 2024
no-std crates / WIP
- micropb: Rust Protobuf library targetting embedded systems and no_std environments without an allocator. -
Jul 07, 2024
Books, blogs, and training materials / 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.
Peripheral Access Crates / Vorago
va108xx
-
va416xx
-
HAL implementation crates / Vorago
Board support crates / Vorago
Driver crates / WIP
- LSM303AGR - I2C/SPI - 3D accelerometer + 3D magnetometer. (Used in e.g. micro:bit boards)
- MCP4x - SPI - Digital potentiometers (digipot) like MCP41010, MCP41050, MCP41100, MCP42010, MCP42050 and MCP42100, etc. -
- MMA8x5x - I2C - Tri-axis accelerometers like MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC and MMA8653FC. -
no-std crates / WIP
- lorawan-encoding (⭐273): A LoRaWAN packet codec.
May 21, 2024
Books, blogs, and training materials / Free and public materials
- Embedded Rust (no_std) on Espressif - Training for Rust using no_std approach development on ESP32-C3.
- Embedded Rust (std) on Espressif - Training for Rust using std approach development on ESP32-C3 by Ferrous Systems.
Peripheral Access Crates / Espressif
esp32h2
-
May 04, 2024
Firmware projects / WIP
- prinThor (⭐146): 3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040.
Apr 24, 2024
no-std crates / WIP
- miniconf: Lookup/enumerate/serialize/deserialize nodes in trees of heterogeneous structs/arrays by path/key -
Apr 15, 2024
Community / Community Chat Rooms
- rust-embedded:QQ group - Chinese community for Rust embedded
Apr 11, 2024
Driver crates / WIP
- lp586x - I2C/SPI - LED matrix driver
Mar 20, 2024
no-std crates / WIP
Feb 23, 2024
Driver crates / WIP
- ad57xx (⭐0) - SPI - Quad and dual channel DAC -
Feb 12, 2024
Tools / Paid and commercially available materials
- svd-generator CLI tool to parse flattened device tree files, and create a SVD file. -
Feb 08, 2024
no-std crates / WIP
- embedded-cli: CLI library with autocompletion, subcommands, options, help and history support.
- lorawan-device (⭐273): A LoRaWAN MAC implementation supporting both event-driven and async mode.
Jan 22, 2024
Peripheral Access Crates / StarFive
HAL implementation crates / StarFive
Jan 08, 2024
Firmware projects / WIP
- BillMock (⭐13): Firmware for credit card terminal add-on hardware to install on Korean arcade machines
Dec 27, 2023
Books, blogs, and training materials / Free and public materials
- Writing an OS in Rust A blog series creating a small operating system in Rust
Peripheral Access Crates / Microchip
atsamx7x-rust
Peripheral access API for Microchip (formerly Atmel) SAM S70/E70/V70/V71 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
HAL implementation crates / Microchip
atsamx7x-hal
- HAL for SAM S70/E70/V70/V71-based devices -
Driver crates / Other
- MAX6675 - SPI - A driver for the MAX6675 digital thermocouple converter - Intro blog post -
Driver crates / WIP
- MS5637 - no_std I2C driver for the MS5637 temperature and pressure sensor
- HX711 (⭐6) - GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std.
Nov 17, 2023
Firmware projects / WIP
- LuLuu (⭐7): Firmware for a custom RP2040-based display controller that streams animated images from a microSD card to a small LCD display.
Nov 01, 2023
Books, blogs, and training materials / Free and public materials
- Tweede golf's workshop - A full workshop about Rust and embedded Rust. The embedded parts use the nRF52840-DK and a LIS3DH breakout board. (github source (⭐13))
Oct 30, 2023
Driver crates / WIP
- AD9850 - Embedded driver for the AD9850 DDS synthesizer chip -
Oct 18, 2023
Firmware projects / WIP
- rmk (⭐654): Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust
Oct 17, 2023
Community / Community Chat Rooms
- #ethercrab:matrix.org - For discussion of general EtherCAT and the Rust implementation, EtherCrab
no-std crates / WIP
- ethercrab (⭐262): A Rust implementation of the EtherCAT industrial automation protocol -
Sep 04, 2023
no-std crates / WIP
- Slint: Declarative GUI framework that works on microcontrollers.
Jul 19, 2023
Driver crates / Other
- BMA400 - I2C/SPI - Bosch 12-bit 3-axis accelerometer - github (⭐3)
- FUSB302B (⭐21) - I2C - Programmable USB Type‐C Controller with USB Power Delivery - github (⭐21)
- i2c-multiplexer - I2C - An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips - github (⭐2) -
- SHT31-rs - I2C - Fully supported SHT temperature / humidity sensors - github (⭐6) -
no-std crates / WIP
- usb-pd (⭐21): USB-PD library, supports using the FUSB302B as a Sink driver, with Source functionality planned.
Firmware projects / WIP
- Stabilizer (⭐114): Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration
- Booster (⭐13): Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration
- Thermostat EEM (⭐7): Firmware for a multi-channel temperature controller used in physics experiments
- Card/IO ECG (⭐31): Firmware for a business-card-sized ECG device with Wifi connectivity
Jul 10, 2023
Peripheral Access Crates / Espressif
esp32c6
-
Jun 26, 2023
no-std crates / WIP
- idsp: integer DSP algorithms (trigonometry, filtering, PLL...) tuned for precision and speed -
May 26, 2023
Firmware projects / WIP
- air-gradient-pro-rs (⭐9): Bootloader, firmware, and CLI tools for the AirGradient PRO
Apr 21, 2023
Tools / Paid and commercially available materials
- espflash (⭐498) Serial flasher utility for Espressif SoCs and modules. -
- espup (⭐237) Tool for installing and maintaining Espressif Rust ecosystem. -
Peripheral Access Crates / Espressif
esp32c2
-
Apr 20, 2023
Firmware projects / WIP
- μLA (⭐782): Micro Logic Analyzer for RP2040
Apr 17, 2023
Real-time / Real-time tools
- RTIC v1.0 Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems:
- cortex-m rtic (⭐1.9k) RTIC framework for ARM Cortex-M microcontrollers
- msp430 rtfm (⭐11) RTFM framework for MSP430 MCUs
Apr 03, 2023
Community / Community Chat Rooms
- #rust-embedded-space:matrix.org Most Embedded Rust related Matrix rooms are in the Rust Embedded Space
Mar 31, 2023
Board support crates / STMicroelectronics
nucleo-h723zg
Board support crate for the Nucleo H723ZG
no-std crates / WIP
- crossbus (⭐123): A Platform-Less, Runtime-Less Actor Computing Model.
Mar 06, 2023
Books, blogs, and training materials / Free and public materials
- ESP32-C3 Rust Tutorials Short videos and Github project (⭐66) implementing various peripherals of the ESP32-C3 with the end goal of creating a complete data logger application.
Peripheral Access Crates / Renesas
ra2a1
Peripheral Access Crate for ra2a1 microcontrollers (generated using svd2rust) -
ra2e1
Peripheral Access Crate for ra2e1 microcontrollers (generated using svd2rust) -
ra2e2
Peripheral Access Crate for ra2e2 microcontrollers (generated using svd2rust) -
ra2l1
Peripheral Access Crate for ra2l1 microcontrollers (generated using svd2rust) -
ra4e1
Peripheral Access Crate for ra4e1 microcontrollers (generated using svd2rust) -
ra4m1
Peripheral Access Crate for ra4m1 microcontrollers (generated using svd2rust) -
ra4m2
Peripheral Access Crate for ra4m2 microcontrollers (generated using svd2rust) -
ra4m3
Peripheral Access Crate for ra4m3 microcontrollers (generated using svd2rust) -
ra4w1
Peripheral Access Crate for ra4w1 microcontrollers (generated using svd2rust) -
ra6e1
Peripheral Access Crate for ra6e1 microcontrollers (generated using svd2rust) -
ra6m1
Peripheral Access Crate for ra6m1 microcontrollers (generated using svd2rust) -
ra6m2
Peripheral Access Crate for ra6m2 microcontrollers (generated using svd2rust) -
ra6m3
Peripheral Access Crate for ra6m3 microcontrollers (generated using svd2rust) -
ra6m4
Peripheral Access Crate for ra6m4 microcontrollers (generated using svd2rust) -
ra6t1
Peripheral Access Crate for ra6t1 microcontrollers (generated using svd2rust) -
ra6t2
Peripheral Access Crate for ra6t2 microcontrollers (generated using svd2rust) -
Feb 21, 2023
Driver crates / Other
- sega-controller - GPIO - Sega controller input - github (⭐1) -
Driver crates / WIP
- SPL06-007 (⭐1) - I2C - Pressure and temperature sensor -
Feb 07, 2023
Component abstraction crates / Other
switch-hal
: An "on"/"off" abstraction for input and output switches -
Jan 07, 2023
Driver crates / Other
- tb6612fng - A
no_std
driver for the TB6612FNG motor driver -
- vl53l1x-uld - I2C - A pure-rust driver for the ST VL53L1X -
no-std crates / WIP
- adafruit-bluefruit-protocol: A
no_std
parser for the Adafruit Bluefruit LE Connect controller protocol. -
Dec 22, 2022
Peripheral Access Crates / Renesas
da14531
Peripheral Access Crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip -
HAL implementation crates / Renesas
da14531-hal
HAL crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip -
Board support crates / Texas Instruments
tm4c129-launchpad
- For the Texas Instruments TM4C129-XL Launchpad board
Driver crates / Other
- ADE791x - SPI - ADE7912/ADE7913 3-Channel, Isolated, Sigma-Delta ADC - github (⭐1) -
- AFE4404 (⭐2) - I2C - Pulse oximeter -
- ebyte-e32 - SERIAL - Ebyte E32 LoRa module driver - Intro blog post -
Dec 11, 2022
Tools / Paid and commercially available materials
- cargo-bloat (⭐2.4k) Find out what takes most of the space in your executable.
- cargo-call-stack Static, whole program stack usage analyzer.
- cargo-dfu Cargo extension for flashing embedded rust programs via DFU.
Nov 06, 2022
Peripheral Access Crates / Wiznet
w7500x-pac
Peripheral Access Crate for Wiznet's W7500x microcontrollers (generated using svd2rust) -
Oct 20, 2022
Driver crates / WIP
- atwinc1500-rs - SPI - A host driver for the Atwinc1500 network controller
Oct 03, 2022
Books, blogs, and training materials / Free and public materials
- STM32F4xx with Embedded Rust at the HAL A blog containing a series of tutorials demonstrating the use of several peripherals through simple examples leveraging the stm32f4xx-hal crate.
Sep 27, 2022
Driver crates / WIP
- M95320 - SPI - STMicroelectronics Serial flash EEPROM -
Sep 17, 2022
Driver crates / Other
- usbd-human-interface-device (⭐119) - Batteries included embedded USB HID library for
usb-device
. Includes concrete Keyboard (boot and NKRO), Mouse and Consumer Control implementations as well as support for building your own HID classes - github (⭐119) -
Aug 29, 2022
Driver crates / Other
- ST7789 - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix used in the PineTime watch - github (⭐53) -
- ST7565 - SPI - An embedded-graphics compatible driver for LCD displays based on the ST7565 chip - github (⭐6) -
Jul 27, 2022
Peripheral Access Crates / Silicon Labs
Jul 18, 2022
no-std crates / WIP
- moonboot (⭐27): OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS
Jul 07, 2022
Peripheral Access Crates / GigaDevice
gd32e2
Peripheral access API for GD32E23x Cortex-M23 microcontrollers (generated using svd2rust) -
gd32f2
Peripheral access API for GD32F20x Cortex-M3 microcontrollers (generated using svd2rust) -
Jun 15, 2022
no-std crates / WIP
- drogue-device (⭐188): A distribution of tools and examples for building embedded applications in Rust.
- ector (⭐50): An async actor framework for embedded, based on embassy.
- embedded-update (⭐22): Pluggable firmware update protocol for embedded devices.
- embedded-tls (⭐176): A TLS 1.3 implementation that runs in a no-std environment.
Jun 14, 2022
Books, blogs, and training materials / Free and public materials
- Ferrous Systems' Embedded Training Courses: 2020-current edition (⭐249) A hands-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.
Old books, blogs, and training materials / WIP
- Ferrous Systems' Embedded Training Courses: 2019 edition (⭐116) A hands-on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52 and Decawave's DWM1001-DEV hardware. This training was given at Oxidize Conferences and by Ferrous Systems to corporate customers.
May 12, 2022
Books, blogs, and training materials / Free and public materials
- Building a sailing starter board with Rust (RTIC) A step-by-step story/guide to build STM32-based PCB and program it with Rust for fun and games.
Apr 11, 2022
Driver crates / Other
- PAC194X (⭐3) - I2C - Single/multi channel power monitor - Intro blog post -
Apr 03, 2022
Board support crates / STMicroelectronics
nucleo-h743zi
Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2
Mar 29, 2022
Community / Community Chat Rooms
- #esp-rs:matrix.org - For discussion of using Embedded Rust on Espressif devices
Books, blogs, and training materials / Free and public materials
- The Rust on ESP Book - This book aims to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules.
Peripheral Access Crates / Espressif
esp32
-
esp32c3
-
esp32s2
-
esp32s3
-
esp8266
-
HAL implementation crates / Espressif
esp-idf-hal
- An embedded-hal implementation for Rust on ESP32 microcontrollers and ESP-IDF
esp-hal
- A
no_std
Hardware Abstraction Layers for ESP32 microcontrollers
- A
Mar 28, 2022
Books, blogs, and training materials / Free and public materials
- Embedded Rust programming playlist Various livestreams with Embedded Rust live coding
Feb 20, 2022
Driver crates / WIP
- Ft6x36 - I2C - Rust driver for focal tech touch screen FT6236, FT6336 -
- grove-matrix-led-my9221-rs - I2C - Rust driver for Grove RGB Matrix Led with my-9221 Driver -
Feb 17, 2022
no-std crates / WIP
- dummy-pin: Dummy implementations of the input/output pin traits.
- inverted-pin: Implementations of the input/output pin traits with inverted logic.
Feb 13, 2022
no-std crates / WIP
- minimq: A minimal MQTT5 client designed for no_std platforms -
Feb 06, 2022
Driver crates / Other
- AHT20-driver - I2C - Humidity and temperature sensor - Intro blog post - github (⭐9) -
Jan 26, 2022
Driver crates / Other
- SSD1309 - I2C/SPI - OLED display controller - Intro blog post -
Jan 11, 2022
Real-time / Real-time Operating System (RTOS)
- RIOT-OS directly supports applications written in Rust, both in terms of build system integration and by having safe and idiomatic wrappers.
Jan 10, 2022
Board support crates / Adafruit
metro_m0
- Board support for the Metro M0 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board.
metro_m4
- Board support for the Metro M4 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board.
pyportal
- Board support for the PyPortal board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
pygamer
- Board support for the PyGamer board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board.
trellis_m4
- Board support for the NeoTrellis M4 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
feather_m0
- Board support for the Feather M0 board, and some variants in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board.
feather_m4
- Board support for the Feather M4 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board.
circuit_playground_express
- Board support for the Circuit Playground Express board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
edgebadge
- Board support for the EdgeBadge board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
gemma_m0
- Board support for the Gemma M0 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
itsybitsy_m0
- Board support for the ItsyBitsy M0 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
itsybitsy_m4
- Board support for the ItsyBitsy M4 Express board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
trinket_m0
- Board support for the Trinket M0 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
neo_trinkey
- Board support for the neo trinkey board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
neokey_trinkey
- Board support for the neokey trinkey board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
grand_central_m4
- Board support for the grand central m4 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
qt_py_m0
- Board support for the QT Py board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
Board support crates / Arduino
arduino_mkr1000
- Board support for the MKR 1000 WiFi board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
arduino_mkrvidor4000
- Board support for the MKR Vidor board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
arduino_mkrzero
- Board support for the mkrzero board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
arduino_nano33iot
- Board support for the Arduino Nano 33 IoT in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
Board support crates / Sparkfun
samd21_mini
- Board support for the SAMD21 Mini Breakout in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
Board support crates / SeeedStudio
xiao_m0
- Board support for the Seeed Studio Seeeduino XIAO in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
wio_lite_mg126
- Board support for the Seeed Studio wio_lite_mg126 in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
wio_lite_w600
- Board support for the Seeed Studio wio_lite_w600 in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
wio_terminal
- Board support for the Seeed Studio wio_terminal in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 1 support (⭐573) board
Board support crates / Sodaq
sodaq_one
- Board support for the Sodaq one board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
sodaq_sara_aff
- Board support for the Sodaq sara aff board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
Board support crates / Other
serpente
- Board support for the serpente board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
p1am_100
- Board support for the p1am_100 board in the atsamd-rs (⭐573) repo. It is an atsamd-rs tier 2 support (⭐573) board.
Jan 09, 2022
Community / Community Chat Rooms
- #atsamd-rs:gitter.im - For discussions of using Embedded Rust on ATSAMD devices
Jan 08, 2022
Peripheral Access Crates / Microchip
atsame53
Peripheral access API for Microchip (formerly Atmel) SAME53 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
Board support crates / Adafruit
feather-f405
- Board support for the Feather STM32F405 Express.
adafruit-feather-rp2040
- Board Support Crate for the Adafruit Feather RP2040
adafruit-itsy-bitsy-rp2040
- Board Support Crate for the Adafruit ItsyBitsy RP2040
adafruit-kb2040
- Board Support Crate for the Adafruit KB2040
adafruit-macropad
- Board Support Crate for the Adafruit Macropad
adafruit-qt-py-rp2040
- Board Support Crate for the Adafruit QT Py RP2040
Dec 31, 2021
HAL implementation crates / OS
freebsd-embedded-hal
for embedded (or not) FreeBSD systems. -
Dec 30, 2021
Peripheral Access Crates / Microchip
pic32-pac
Peripheral access API for PIC32MX1/2xx -
HAL implementation crates / Microchip
pic32-hal
- HAL for PIC32MX -
no-std crates / WIP
- fixed-fft: Fixed-point Fast Fourier Transform -
Dec 26, 2021
Real-time / Real-time Operating System (RTOS)
- Hubris (⭐3.1k) A real-time operating system built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers.
Peripheral Access Crates / Raspberry Pi Silicon
rp2040-pac
- Peripheral access API for the RP2040 dual-core system-on-chip (generated using svd2rust) -
HAL implementation crates / Raspberry Pi Silicon
rp2040-hal
- HAL for the RP2040 dual-core system-on-chip -
HAL implementation crates / Texas Instruments
Board support crates / Pimoroni
pimoroni-pico-explorer
- Board Support for the Pimoroni Pico Explorer
pimoroni-pico-lipo-16mb
- Board Support for the Pimoroni Pico Lipo 16MB
Board support crates / Raspberry Pi
rp-pico
- Board Support Crate for the RP2040-based Raspberry Pi Pico.
Board support crates / Sparkfun
sparkfun-pro-micro-rp2040
- Board Support Crate for the RP2040 based Sparkfun Pro Micro.
Dec 25, 2021
Tools / Paid and commercially available materials
- cargo-flash A small cargo subcommand to download your binary to your target chip. -
- cargo-embed A superset of cargo-flash with additional useful features like configuration file support, an RTT terminal, or a GDB server. -
Dec 20, 2021
Tools / Paid and commercially available materials
- Embassy start (⭐27) is a GitHub repo template for setting up async embedded Rust projects that use Embassy (⭐5.7k). This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only.
Dec 17, 2021
Driver crates / Other
- MAX116xx-10bit - SPI - Driver for the MAX11619-MAX11621, MAX11624 and MAX11625 10-bit ADCs - Intro blog post -
Dec 15, 2021
Driver crates / Other
- port-expander - I2C - Driver for I2C port expanders (supports
PCA95xx
,PCF85xx
) - Intro blog post -
Dec 06, 2021
Board support crates / Nordic
Nov 12, 2021
Tools / Paid and commercially available materials
- ferros (⭐109) A Rust-based userland which also adds compile-time assurances to seL4 development.
Nov 09, 2021
no-std crates / WIP
- sntpc: Rust SNTP client to get a timestamp from NTP servers. -
Oct 26, 2021
no-std crates / WIP
- scapegoat: Safe, stack-only alternative to
BTreeSet
andBTreeMap
. -
Oct 14, 2021
Tools / Paid and commercially available materials
- embedded-hal-compat (⭐15), a compatibility layer to provide interoperability between
v0.2.x
andv1.x.x
hal implementations and drivers
Aug 24, 2021
Community / Community Chat Rooms
- embedded.rs-wasm-iot - English Telegram chat about Rust and WASM for microcontrollers and IoT
- #rp-rs:matrix.org - For discussion of using Embedded Rust on RP2040 based devices
Aug 23, 2021
Community / Community Chat Rooms
- #avr-rust:gitter.im - For discussion of using Embedded Rust on AVR devices
- #stm32-rs:matrix.org - For discussion of using Embedded Rust on STM32 based devices
Aug 19, 2021
Peripheral Access Crates / NXP
SKEAZN642
Peripheral access API for KEA64 family microcontrollers (generated using svd2rust) -
Jul 30, 2021
Driver crates / Other
- rainbow-hat-rs - I2C/SPI/GPIO - Pimoroni Rainbow HAT driver for Raspberry Pi - github (⭐3) -
Jul 20, 2021
Driver crates / WIP
- VEML7700 - I2C - Ambient light sensors -
Jul 05, 2021
Tools / Paid and commercially available materials
- edc2svd (⭐6) Generate SVD files for PIC32 devices from EDC files. -
Architecture support crates / MIPS
mips-mcu
Low-level access to MIPS MCU cores -
Jul 01, 2021
Board support crates / Nordic
Jun 28, 2021
Driver crates / WIP
- IST7920 - SPI monochrome LCD display -
Jun 24, 2021
Driver crates / WIP
- SSD1320 - SPI - Graphical OLED display controller -
Jun 22, 2021
Driver crates / Other
- TCN75A - I2C - Microchip TCN75A temperature sensor -
Jun 20, 2021
Books, blogs, and training materials / Free and public materials
- DSP on STM32F407G-DISC1 (⭐31) Unofficial oxidization of the Digital Signal Processing using Arm Cortex-M based Microcontrollers: Theory and Practice book. The book isn't necessary to enjoy the examples and learn a functional DSP Rust coding style.
no-std crates / WIP
cmsis-dsp-sys
: Rust FFI bindings to the Arm CMSIS_5 (⭐1.4k) math library -
Jun 09, 2021
Driver crates / Other
- CD74HC4067 - GPIO - 16-channel digital and analog multiplexer - Intro blog post - github (⭐1) -
- HC-12 - SERIAL - Wireless serial transceiver module - Intro blog post - github (⭐1) -
May 09, 2021
HAL implementation crates / Microchip
atsam4-hal
- HAL for SAM4E, SAM4N and SAM4S -
Apr 18, 2021
Peripheral Access Crates / MSP430
Apr 14, 2021
no-std crates / WIP
- cam-geom: Geometric models of cameras for photogrammetry.
Apr 13, 2021
Peripheral Access Crates / GigaDevice
gd32f1
Peripheral access API for GD32F1x0 Cortex-M3 microcontrollers (generated using svd2rust) -
HAL implementation crates / GigaDevice
gd32f1x0-hal
-- HAL implementation for GD32F1x0 microcontrollers
Apr 11, 2021
Peripheral Access Crates / MSP430
msp430g2553
Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust)- msp430 quickstart (⭐38) some examples for msp430
Apr 07, 2021
no-std crates / WIP
- adskalman: Kalman filter and Rauch-Tung-Striebel smoothing implementation.
Mar 25, 2021
Books, blogs, and training materials / Free and public materials
- Ferrous Systems' Knurling Sessions are hands-on embedded projects that explore specific concepts using generally available hardware, building full systems and components using microcontrollers, sensors, and actuators.
Tools / Paid and commercially available materials
- Knurling Tools are developed by Ferrous Systems to ease the development process for building, debugging, and testing embedded Rust systems. These tools include:
- defmt (⭐879): a highly efficient logging framework that targets resource-constrained devices, like microcontrollers.
- flip-link (⭐289), a linker wrapper that provides stack overflow protection without an MMU by flipping the standard memory layout of ARM Cortex-M programs
- app-template (⭐320), a
cargo-generate
powered project template for quickly setting up new projects using the Knurling Tools. - defmt-test (⭐9), an embedded test harness that lets you write and run unit tests as if you were using the built-in
#[test]
attribute, but will run on an embedded target
HAL implementation crates / STMicroelectronics
stm32-hal
-- HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7.
Old books, blogs, and training materials / WIP
- Internet of Streams A video series by @jamesmunns building a bare metal IoT Sensor Node Platform from (nearly) scratch in Rust
Mar 16, 2021
Driver crates / Other
- IIS2MDC - I2C - ST's High accuracy, ultra-low-power, 3-axis digital output magnetometer -
- ISM330DHCX - I2C - ST's IMU with 3D accelerometer, 3D gyroscope, ML core and more -
Mar 11, 2021
Driver crates / Other
- DRV8825 - DRV8825 Stepper Motor Driver (based on Stepper) - Intro blog post -
- STSPIN220 - STSPIN220 Stepper Motor Driver (based on Stepper) - Intro blog post -
no-std crates / WIP
- RampMaker: Stepper Motor Acceleration Ramp Generator -
- Stepper: Universal Stepper Motor Interface -
Mar 07, 2021
Peripheral Access Crates / Nordic
nrf52811-pac
- Peripheral access API for the nRF52811 microcontroller (generated using svd2rust) -
nrf52833-pac
- Peripheral access API for the nRF52833 microcontroller (generated using svd2rust) -
nrf5340-app-pac
- Peripheral access API for the nRF5340 application core (generated using svd2rust) -
nrf5340-net-pac
- Peripheral access API for the nRF5340 network core (generated using svd2rust) -
nrf9160-pac
- Peripheral access API for the nRF9160 system-in-package (generated using svd2rust) -
HAL implementation crates / Nordic
Feb 25, 2021
no-std crates / WIP
- mqtt-sn: Implementation of the MQTT-SN protocol -
Feb 14, 2021
Board support crates / STMicroelectronics
stm32f3-discovery
Board Support Crate for the STM32F3DISCOVERY used in Rust Embedded Discovery book -
Jan 20, 2021
no-std crates / WIP
- embassy (⭐4): A set of embedded async tools to make async/await a first-class option for embedded development
Jan 14, 2021
Component abstraction crates / Other
embedded-nal
: An Embedded Network Abstraction Layer -
embedded-storage
: An Embedded Storage Abstraction Layer
Jan 13, 2021
Driver crates / Other
- SRAM23x - SPI - Microchip 23x series serial SRAM/NVSRAM driver - Intro blog post -
Dec 29, 2020
no-std crates / WIP
- device-driver: A toolkit to write better device drivers, faster.
Oct 01, 2020
Board support crates / Teensy
teensy4-rs
Board Support crate for the [Teensy 4.0]
Sep 28, 2020
Driver crates / Other
- TSIC - GPIO - TSIC 306 temperature sensor driver - Intro blog post
Sep 10, 2020
Driver crates / Other
- embedded-ccs811 - I2C - Gas and VOC sensor driver for monitoring indoor air quality - Intro blog post -
Sep 07, 2020
Driver crates / Other
- AHT20 - I2C - Humidity and temperature sensor - github (⭐3) -
Aug 31, 2020
no-std crates / WIP
- static-bytes (⭐6): Help work with buffers without dynamic allocation. Implement traits from bytes crate.
Aug 11, 2020
Driver crates / Other
- dht-sensor - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - github (⭐30) -
Aug 09, 2020
no-std crates / WIP
- embedded-crc-macros: Macros implementing portable CRC algorithms and build-time lookup table generation.
- smbus-pec: Minimal portable System Management Bus Packet Error Code calculation algorithm.
Aug 07, 2020
Driver crates / Other
- Adafruit-7segment - I2C - Driver for Adafruit 7-segment LED Numeric Backpack based on the ht16k33 chip - github (⭐2) -
Driver crates / WIP
- epd-waveshare - SPI - driver for E-Paper Modules from Waveshare
Jul 31, 2020
no-std crates / WIP
- gdbstub: zero-allocation, pure Rust implementation of the GDB Remote Serial Protocol -
Jul 30, 2020
Driver crates / WIP
- ltr-559 - I2C - Ambient Light Sensor and Proximity sensor
Jul 29, 2020
Driver crates / WIP
- MLX9061x - I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. -
Jul 19, 2020
Books, blogs, and training materials / Free and public materials
- Writing embedded drivers in Rust isn't that hard A guide to building an embedded-hal driver. Part 2
Old books, blogs, and training materials / WIP
- Exploring Rust on Teensy by @branan — Beginner set of articles on getting into embedded dev in Rust.
- Pragmatic Bare Metal Rust A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI).
- Using Rust in an Embedded Project: A Simple Example Article and some links on setting up Rust cross-compiling.
- Robigalia general purpose robust operating system in Rust running on secure seL4 microkernel.
- intermezzOS A small teaching operating system in Rust. A book with some explanations is also included.
- Fearless concurrency by @japaric — How to easily develop Rust programs for pretty much any ARM Cortex-M microcontroller with memory-safe concurrency.
Jul 18, 2020
Peripheral Access Crates / NXP
Jul 14, 2020
Driver crates / Other
- MCP25LCXX - SPI - Driver for Microchip's 25LC series of EEPROMs -
Jun 26, 2020
Component abstraction crates / Other
atat
: Abstraction crate to ease writing AT based driver crates -
Driver crates / Other
- ADXL313 - SPI - 3-axis accelerometer -
- TC72 - SPI - Microchip TC72 temperature sensor -
Driver crates / WIP
- ublox-cellular-rs (⭐22) - Serial - Cellular driver for the full Ublox cellular serial based family
Jun 19, 2020
Driver crates / Other
- AnyLeaf - I2C - pH sensor module - github (⭐6) -
Jun 12, 2020
Community / Community Chat Rooms
- #rtic-rs:matrix.org - For discussion of the Real-Time Interrupt-driven Concurrency framework
Jun 07, 2020
Tools / Paid and commercially available materials
- cargo-hf2 (⭐51) A small cargo subcommand to download cargo builds to Microsoft UF2 bootloaders via HID USB . -
- uf2 (⭐28) Converts binary files to Microsoft's UF2 format for copying over to mass storage device uf2 bootloaders -
May 29, 2020
Board support crates / 1BitSquared
May 23, 2020
no-std crates / WIP
- embedded-websocket: A lightweight server and client websocket library for embedded systems.
May 16, 2020
Driver crates / WIP
- lvgl (⭐696) - no_std LittleVGL (⭐18k) port -
May 15, 2020
Real-time / Real-time Operating System (RTOS)
- FreeRTOS-rust (⭐377) Rust interface for FreeRTOS with Rust entry point and build support crate.
May 09, 2020
Driver crates / WIP
- MCP4725 - I2C - 12-bit DAC -
May 02, 2020
Driver crates / WIP
- BMI160 - I2C / SPI - Inertial Measurement Unit -
- HRS3300 - I2C - Heart rate sensor / monitor used in the PineTime smartwatch, for example. -
- HDC20xx - I2C - Temperature and humidity sensor compatible with HDC2080, HDC2021 and HDC2010. -
- ISL29125 - I2C - RGB Color Light Sensor with IR Blocking Filter -
- MAX170xx (⭐8) - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. -
- MAX3010x - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -
Apr 29, 2020
Driver crates / WIP
- MAX17048/9 - I2C - LiPo Fuel gauge, battery monitoring IC -
no-std crates / WIP
- debouncr: A simple no-std input debouncer to detect rising/falling edges with minimal RAM requirements.
Apr 23, 2020
Driver crates / Other
- MAX6955 - I2C - Driver for Alphanumeric LED display driver - Intro blog post -
Driver crates / WIP
- LSM9DS1 - I2C/SPI - 9-axis motion sensor module
Apr 12, 2020
Driver crates / Other
Mar 30, 2020
no-std crates / WIP
- endian_codec: (En/De)code rust types as packed bytes with specific order (endian). Supports derive. -
Mar 22, 2020
Peripheral Access Crates / MSP430
msp430fr2355
Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust)
HAL implementation crates / MSP430
msp430fr2x5x-hal
- HAL implementation for the MSP430FR2x5x family of microcontrollers
Mar 09, 2020
no-std crates / WIP
- microfft: Embedded-friendly (
no_std
, no-alloc
) fast fourier transforms -
Feb 21, 2020
Driver crates / WIP
- midi-port - UART - MIDI input -
- ST7920 - SPI - LCD displays using the ST7920 controller
Feb 19, 2020
Peripheral Access Crates / NXP
imxrt-ral
Register access layer for i.MX RT series. -
HAL implementation crates / NXP
imxrt-hal
- HAL for i.MX RT series. -
Feb 17, 2020
Community / Community Chat Rooms
- You can usually find community members (including embedded WG members) in the official
#rust-embedded:matrix.org
Matrix room.
- embedded.rs - Telegram chat about Rust for microcontrollers in the Russian language.
- #nrf-rs:matrix.org - For discussion of using Embedded Rust on Nordic Semiconductor devices
- #probe-rs:matrix.org - For discussion of the Probe-rs debugging toolkit
- #rust-embedded-graphics:matrix.org - For discussion of the
embedded-graphics
crate and ecosystem
Component abstraction crates / Other
embedded-graphics
: 2D drawing library for any size display -
Feb 14, 2020
Driver crates / Other
- ADXL355 - SPI - 3-axis accelerometer - Intro blog post -
Feb 11, 2020
Driver crates / Other
- SHTCx - I2C - Temperature / humidity sensors - github (⭐13) -
Feb 07, 2020
Peripheral Access Crates / Ambiq Micro
ambiq-apollo1-pac
Peripheral access API for Ambiq Apollo 1 microcontrollers (generated using svd2rust)
ambiq-apollo2-pac
Peripheral access API for Ambiq Apollo 2 microcontrollers (generated using svd2rust)
ambiq-apollo3-pac
Peripheral access API for Ambiq Apollo 3 microcontrollers (generated using svd2rust)
ambiq-apollo3p-pac
Peripheral access API for Ambiq Apollo 3 Plus microcontrollers (generated using svd2rust)
Driver crates / Other
- usbd-hid-device - USB HID class implementation without
unsafe
- github (⭐12) -
- usbd-midi - USB MIDI class implementation - github (⭐48) -
Feb 03, 2020
Component abstraction crates / Other
usb-device
: Abstraction layer between USB peripheral crates & USB class crates -
Driver crates / Other
- usbd-serial - USB CDC-ACM class (serial) implementation - github (⭐118) -
- usbd-hid - USB HID class implementation - github (⭐91) -
- usbd-webusb - USB webUSB class implementation - github (⭐20) -
Driver crates / WIP
- embedded-morse - Output morse messages -
Jan 27, 2020
Driver crates / WIP
- MAX31855 (⭐4) - SPI - Thermocouple digital converter -
Jan 26, 2020
HAL implementation crates / GigaDevice
gd32vf103xx-hal
-- HAL for GD32VF103xx microcontrollers
Board support crates / SeeedStudio
seedstudio-gd32v
- Board support crate for the GD32 RISC-V Dev Board- Contains runnable examples for this board
Board support crates / Sipeed
longan-nano
- Board support package for the Longan Nano board- Contains runnable examples for this board
no-std crates / WIP
- irq: utilities for writing interrupt handlers (allows moving data into interrupts, and sharing data between them) -
Jan 20, 2020
no-std crates / WIP
- bitmatch: A crate that allows you to match, bind, and pack the individual bits of integers. -
Jan 11, 2020
Peripheral Access Crates / Microchip
atsamd11
Peripheral access API for Microchip (formerly Atmel) SAMD11 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
HAL implementation crates / Microchip
atsamd-hal
- HAL for SAMD11, SAMD21, SAMD51 and SAME54 -
Jan 10, 2020
Peripheral Access Crates / NXP
k64
-
lpc11uxx
-
Peripheral Access Crates / STMicroelectronics
stm32g0
-
stm32g4
-
stm32h7
-
HAL implementation crates / OS
ftdi-embedded-hal
for FTDI FTx232H chips connected to Linux systems via USB
linux-embedded-hal
for embedded Linux systems like the Raspberry Pi. -
HAL implementation crates / NXP
lpc8xx-hal
- HAL for lpc82x and lpc845 -
HAL implementation crates / STMicroelectronics
stm32h7xx-hal
-- HAL implementation for the STMicro STM32H7xx family of microcontrollers
Architecture support crates / ARM
cortex-m
Low-level access to Cortex-M processors -
Board support crates / STMicroelectronics
f3
Board Support Crate for the STM32F3DISCOVERY -
Board support crates / Texas Instruments
stellaris-launchpad
- For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad
Component abstraction crates / Other
smart-leds
: Support for addressable LEDs including WS2812 and APA102
Driver crates / Other
- AD983x - SPI - AD9833/AD9837 waveform generators / DDS - Intro blog post -
- adafruit-alphanum4 - I2C - Driver for Adafruit 14-segment LED Alphanumeric Backpack based on the ht16k33 chip -
- ADS1x1x - I2C - 12/16-bit ADCs like ADS1013, ADS1015, ADS1115, etc. - Intro blog post -
- ADXL343 - I2C - 3-axis accelerometer -
- AT86RF212 - SPI - Low power IEEE 802.15.4-2011 ISM RF Transceiver - Intro blog post -
- BlueNRG - SPI - driver for BlueNRG-MS Bluetooth module - Intro post
- BNO055 - I2C - Bosch Sensortec BNO055 9-axis IMU driver - Intro post
- DS1307 - I2C - Real-time clock driver - Intro blog post -
- EEPROM24x - I2C - 24x series serial EEPROM driver - Intro blog post -
- embedded-sdmmc - SPI - SD/MMC Card Driver with MS-DOS Partition and FAT16/FAT32 support - Intro post
- ENC28J60 - SPI - Ethernet controller - Intro blog post -
- HTS221 - I2C - Humidity and temperature sensor - Intro blog post -
- keypad - GPIO - Keypad matrix circuits - Intro post -
- KXCJ9 - I2C - KXCJ9/KXCJB 3-axis accelerometers - Intro blog post -
- LSM303DLHC - I2C - Accelerometer + compass (magnetometer) - Intro blog post -
- MCP3008 - SPI - 8 channel 10-bit ADC - Intro blog post -
- MCP3425 - I2C - 16-bit ADC - Intro blog post -
- MCP794xx - I2C - Real-time clock / calendar driver - Intro blog post -
- MMA7660FC - I2C - 3-axis accelerometer - Intro blog post
- OPT300x (⭐6) - I2C - Ambient light sensor family driver - Intro blog post -
- pwm-pca9685 - I2C - 16-channel, 12-bit PWM/Servo/LED controller - Intro blog post -
- rotary-encoder-hal - GPIO - A rotary encoder driver using
embedded-hal
- Intro blog post -
- SGP30 - I2C - Gas sensor - Intro blog post -
- SH1106 - I2C - Monochrome OLED display controller - Intro post
- shared-bus (⭐129) - I2C - utility driver for sharing a bus between multiple devices - Intro post
- shift-register-driver - GPIO - Shift register - Intro blog post -
- Si4703 - I2C - FM radio turner (receiver) driver - Intro blog post -
- SSD1306 - I2C/SPI - OLED display controller - Intro blog post -
- Sx127x - SPI - Long Range Low Power Sub GHz (Gfsk, LoRa) RF Transceiver - Intro blog post -
- Sx128x - SPI - Long range, low power 2.4 GHz (Gfsk, Flrc, LoRa) RF Transceiver - Intro blog post -
- TMP006 - I2C - Contact-less infrared (IR) thermopile temperature sensor driver - Intro post
- TMP1x2 - I2C - TMP102 and TMP112x temperature sensor driver - Intro blog post
- TSL256X - I2C - Light Intensity Sensor - Intro blog post -
- VEML6030/VEML7700 - I2C - Ambient light sensors - Intro blog post -
- VEML6075 - I2C - UVA and UVB light sensor - Intro blog post -
Driver crates / WIP
- AFE4400 (⭐6) - SPI - Pulse oximeter
- APDS9960 - I2C - Proximity, ambient light, RGB, and gesture sensor -
- AS5048A (⭐1) - SPI - AMS AS5048A Magnetic Rotary Encoder
- AXP209 (⭐5) - I2C - Power management unit
- BH1750 (⭐2) - I2C - ambient light sensor (lux meter)
- BME280 - A rust device driver for the Bosch BME280 temperature, humidity, and atmospheric pressure sensor and the Bosch BMP280 temperature and atmospheric pressure sensor.
- bme680 (⭐29) - I2C - Temperature / humidity / gas / pressure sensor -
- BMP280 - A platform agnostic driver to interface with the BMP280 pressure sensor
- CC1101 - SPI - Sub-1GHz RF Transceiver -
- DS3231 (⭐7) - I2C - real-time clock
- DS3234 (⭐1.9k) - SPI - Real-time clock
- DS323x - I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 -
- embedded-nrf24l01 - SPI+GPIO - 2.4 GHz radio
- GridEYE - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) -
- HC-SR04 (⭐17) - DIO - Ultrasound sensor
- HD44780-driver - GPIO - LCD controller -
- HD44780 (⭐13) - Parallel port - LCD controller
- HM11 - USART - HM-11 bluetooth module AT configuration crate -
- hub75 (⭐22) - A driver for rgb led matrices with the hub75 interface -
- hzgrow-r502 - UART capacitive fingerprint reader -
- iAQ-Core (⭐2) - I2C - iAQ-Core-C/iAQ-Core-P Gas and VOC sensor driver for monitoring indoor air quality.
- ILI9341 (⭐59) - SPI - TFT LCD display
- INA260 - I2C - power monitor -
- LM75 - I2C - Temperature sensor and thermal watchdog (also compatible with LM75A, LM75B, LM75C, AT30TS75A, DS1775, DS75, DS7505, G751, MAX7500/1/2/3/4, MAX6625, MCP9800/1/2/3, STDS75, TCN75, PCT2075) -
- LS010B7DH01 (⭐6) - SPI - Memory LCD
- LSM303C - A platform agnostic driver to interface with the LSM303C (accelerometer + compass)
- MAG3110 (⭐1) - I2C - Magnetometer
- MAX31865 - SPI - RTD to Digital converter -
- MAX44009 - I2C - Ambient light sensor -
- MAX7219 (⭐16) - SPI - LED display driver -
- MCP49xx - SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. -
- MCP9808 - I2C - Temperature sensor -
- MFRC522 (⭐30) - SPI - RFID tag reader/writer
- motor-driver (⭐10) - Motor drivers: L298N, TB6612FNG, etc.
- MPU6050 - I2C - no_std driver for the MPU6050
- MPU9250 - no_std driver for the MPU9250 (and other MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU)
- NRF24L01 (⭐28) - SPI - 2.4 GHz wireless communication
- PCD8544 (⭐0) - SPI - 48x84 pixels matrix LCD controller
- PCD8544_rich - SPI - Rich driver for 48x84 pixels matrix LCD controller -
- PCF857x - I2C - I/O expanders: PCF8574, PCF8574A, PCF8575
- radio-at86rf212 - SPI - Sub GHz 802.15.4 radio transceiver
- RFM69 (⭐11) - SPI - ISM radio transceiver
- RN2xx3 (⭐5) - Serial - A driver for the RN2483 / RN2903 LoRaWAN modems by Microchip
- SCD30 - I2C - CO₂ sensor -
- SHT2x (⭐2) - I2C - temperature / humidity sensors
- SHT3x (⭐7) - I2C - Temperature / humidity sensors
- SI5351 (⭐3) - I2C - clock generator
- SI7021 (⭐5) - I2C - Humidity and temperature sensor
- spi-memory (⭐25) - SPI - A generic driver for various SPI Flash and EEPROM chips -
- SSD1322 - SPI - Graphical OLED display controller -
- SSD1351 - SPI - 16bit colour OLED display driver -
- SSD1675 - SPI - Tri-color ePaper display controller -
- st7032i (⭐2) - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). -
- ST7735-lcd - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix
- stm32-eth (⭐150) - MCU - Ethernet
- SX1278 (⭐11) - SPI - Long range (LoRa) transceiver
- SX1509 (⭐1) - I2C - IO Expander / Keypad driver
- TCS3472 - I2C - RGB color light sensor -
- TPA2016D2 - I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier -
- VEML6040 - I2C - RGBW color light sensor -
- VEML6070 - I2C - UVA light sensor -
- vesc-comm (⭐1) - A driver for communicating with VESC-compatible electronic speed controllers
- VL53L0X - A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor)
- w5500 - SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE -
- xCA9548A - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A -
no-std crates / WIP
- atomic: Generic Atomic wrapper type.
- bbqueue: A SPSC, statically allocatable queue based on BipBuffers suitable for DMA transfers -
- biquad: A library for creating second-order IIR filters for signal processing based on Biquads, where both a Direct Form 1 (DF1) and Direct Form 2 Transposed (DF2T) implementation is available.
- bit_field: manipulating bitfields and bitarrays -
- bluetooth-hci: device-independent Bluetooth Host-Controller Interface implementation.
- bounded-registers A high-assurance memory-mapped register code generation and interaction library.
bounded-registers
provides a Tock-like API for MMIO registers with the addition of type-based bounds checking. -
- combine: parser combinator library -
- console-traits (⭐3): Describes a basic text console. Used by menu (⭐52) and implemented by vga-framebuffer (⭐31).
cmim
, or Cortex-M Interrupt Move: A crate for Cortex-M devices to move data to interrupt context, without needing a critical section to access the data within an interrupt, and to remove the need for the "mutex dance" -
- dcmimu: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements
- gcode (⭐90): A gcode parser for no-std applications -
- heapless: provides
Vec
,String
,LinearMap
,RingBuffer
backed by fixed-size buffers -
- ieee802154: Partial implementation of the IEEE 802.15.4 standard -
- infrared: infrared remote control library for embedded rust -
- intrusive-collections: intrusive (non-allocating) singly/doubly linked lists and red-black trees -
- managed: provides
ManagedSlice
,ManagedMap
backed by either their std counterparts or fixed-size buffers for#![no_std]
. -
- menu (⭐52): A basic command-line interface library. Has nested menus and basic help functionality.
- micromath (⭐403): Embedded Rust math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis -
- nalgebra: general-purpose and low-dimensional linear algebra library -
- nom: parser combinator framework -
- null-terminated: generic null-terminated arrays -
- num-format: Crate for producing string representations of numbers, formatted according to international standards, e.g. "1,000,000" for US English -
- pc-keyboard (⭐100): A PS/2 keyboard protocol driver. Transport (bit-banging or SPI) agnostic, but can convert Set 2 Scancodes into Unicode.
- qei : A qei wrapper that allows you to extend your qei timers from a 16-bit integer to a 64-bit integer. -
- qemu-exit: Quit a running QEMU session with user-defined exit code. Useful for unit or integration tests using QEMU. -
- register-rs (⭐47): Unified interface for MMIO and CPU registers. Provides type-safe bitfield manipulation.
register-rs
is Tock registers with added support for CPU register definitions using the same API as for the MMIO registers. This enables homogeneous interfaces to registers of all kinds. -
- scroll: extensible and endian-aware Read/Write traits for generic containers -
- smoltcp (⭐3.8k): a small TCP/IP stack that runs without
alloc
.
- tinybmp: No-std, no-alloc BMP parser for embedded systems. Introductory blog post -
- vga-framebuffer (⭐31): A VGA signal generator and font renderer for VGA-less microcontrollers. Used by Monotron (⭐192) to generate 48 by 36 character display using 3 SPI peripherals and a timer.
- wyhash: A fast, simple and portable hashing algorithm and random number generator. -
Panic handling / WIP
panic-persist
: A panic handler crate inspired bypanic-ramdump
that logs panic messages to a region of RAM defined by the user, allowing for discovery of panic messages post-mortem using normal program control flow. -
Jan 05, 2020
Component abstraction crates / Other
radio
- Generic radio transceiver traits, mocks, and helpers -
Jan 04, 2020
HAL implementation crates / STMicroelectronics
Dec 29, 2019
Peripheral Access Crates / Microchip
atsame54
Peripheral access API for Microchip (formerly Atmel) SAME54 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
Dec 02, 2019
Real-time / Real-time Operating System (RTOS)
- Drone OS An Embedded Operating System for writing real-time applications in Rust.
- FreeRTOS.rs (⭐234) Rust interface for the FreeRTOS API
- Tock An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers
Peripheral Access Crates / XMC
xmc4100
-
xmc4200
-
xmc4300
-
xmc4400
-
xmc4500
-
xmc4700
-
xmc4800
-
HAL implementation crates / XMC
xmc4-hal
-
Nov 24, 2019
Books, blogs, and training materials / Free and public materials
- Writing an embedded OS in Rust on the Raspberry Pi (⭐14k) A set of tutorials that give a guided, step-by-step tour of how to write a monolithic Operating System kernel for an embedded system from scratch. Runs on the Raspberry Pi 3 and the Raspberry Pi 4.
Nov 14, 2019
Peripheral Access Crates / Silicon Labs
efm32pg12-pac
- Peripheral access API for Silicon Labs EFM32PG12 microcontrollers -
Nov 09, 2019
HAL implementation crates / STMicroelectronics
stm32f7xx-hal
-- Generic HAL implementation for all MCUs of the stm32f7 series
Nov 08, 2019
Books, blogs, and training materials / Free and public materials
- The Embedded Rust Book - An introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers.
Oct 11, 2019
HAL implementation crates / GigaDevice
gd32vf103-hal
-- (WIP) Hardware abstract layer (HAL) for the GD32VF103 RISC-V microcontroller
Sep 28, 2019
Board support crates / STMicroelectronics
Sep 15, 2019
Peripheral Access Crates / GigaDevice
gd32vf103-pac
Peripheral access API for GD32VF103 RISC-V microcontrollers (generated using svd2rust) -
Sep 04, 2019
Peripheral Access Crates / NXP
HAL implementation crates / OS
bitbang-hal
software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin
HAL implementation crates / NXP
Aug 23, 2019
Peripheral Access Crates / STMicroelectronics
stm32f0
-
stm32f1
-
stm32f2
-
stm32f3
-
stm32f4
-
stm32f7
-
stm32l0
-
stm32l1
-
stm32l4
-
Jun 25, 2019
Peripheral Access Crates / Microchip
avr-device
Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family.
Board support crates / Arduino
avr-hal
- Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardo
May 22, 2019
HAL implementation crates / STMicroelectronics
stm32l0xx-hal
-- HAL implementation for the the STMicro STM32L0xx family of microcontrollers
May 04, 2019
Peripheral Access Crates / Microchip
atsamd21
Peripheral access API for Microchip (formerly Atmel) SAMD21 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
atsamd51
Peripheral access API for Microchip (formerly Atmel) SAMD51 microcontrollers. This git repo hosts both the peripheral access crate and the hal.
Component abstraction crates / Other
accelerometer
- Generic accelerometer support, including traits and types for taking readings from 2 or 3-axis accelerometers and tracking device orientations -
Apr 26, 2019
no-std crates / WIP
- Rubble (⭐399): A pure-Rust embedded BLE stack
Apr 07, 2019
HAL implementation crates / XMC
Mar 28, 2019
Architecture support crates / MIPS
mips
Low-level access to MIPS32 processors -
Mar 23, 2019
Peripheral Access Crates / SiFive
e310x
- svd2rust generated interface to SiFive Freedom E310 MCUs -
HAL implementation crates / SiFive
e310x-hal
- HAL for SiFive Freedom E310 MCUs -
Architecture support crates / RISC-V
riscv
Low-level access to RISC-V processors -
Board support crates / SiFive
Mar 15, 2019
no-std crates / WIP
- light-cli (⭐15): a lightweight heapless cli interface
Mar 14, 2019
HAL implementation crates / STMicroelectronics
stm32f4xx-hal
-- Generic HAL implementation for all MCUs of the stm32f4 series
Mar 13, 2019
Tools / Paid and commercially available materials
- xargo (⭐1.1k) Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system.
- xargo is great, but since it's in maintenance mode, cargo-xbuild (⭐259) is catching up as its intended replacement.
Mar 07, 2019
HAL implementation crates / STMicroelectronics
Feb 26, 2019
Peripheral Access Crates / Nordic
nrf52810-pac
- Peripheral access API for the nRF52810 microcontroller (generated using svd2rust) -
nrf52832-pac
- Peripheral access API for the nRF52832 microcontroller (generated using svd2rust) -
nrf52840-pac
- Peripheral access API for the nRF52840 microcontroller (generated using svd2rust) -
HAL implementation crates / Nordic
Board support crates / Nordic
Feb 15, 2019
HAL implementation crates / STMicroelectronics
stm32f1xx-hal
-- Can be run on boards like the [Blue pill], [Nucleo-F103RB], and similar boards [Blue pill]: https://stm32duinoforum.com/forum/wiki_subdomain/index_title_Blue_Pill.html [Nucleo-F103RB]: http://www.st.com/en/evaluation-tools/nucleo-f103rb.html
Feb 11, 2019
Peripheral Access Crates / Microchip
sam3x8e
Peripheral access API for Atmel SAMD3X8E microcontrollers (generated using svd2rust) -
Jan 26, 2019
Community
- Embedded WG (⭐1.9k), including newsletters with progress updates.
Jan 06, 2019
HAL implementation crates / STMicroelectronics
stm32l4xx-hal
-- Generic hal support for stm32l4 devices, has examples that can run on boards like the Nucleo-L432KC, Solo, and similar boards
Dec 02, 2018
HAL implementation crates / Silicon Labs
tomu-hal
- HAL implementation targeted for Tomu USB board with EFM32HG309F64 ARMv6-M core. Has support to configure tomu bootloader (⭐73) directly from an application via the
toboot_config
macro.
- HAL implementation targeted for Tomu USB board with EFM32HG309F64 ARMv6-M core. Has support to configure tomu bootloader (⭐73) directly from an application via the
Nov 08, 2018
Board support crates / Sony
prussia
- SDK for the PlayStation 2.
Oct 26, 2018
Tools / Paid and commercially available materials
- embedded-hal-mock Mock implementation of
embedded-hal
traits for testing without accessing real hardware. -
Oct 03, 2018
Board support crates / STMicroelectronics
stm32f407g-disc
Board Support Crate for the STM32F4DISCOVERY (WIP) -
stm32f429i-disc
Board Support Crate for the STM32F429DISCOVERY (WIP) -
Sep 27, 2018
no-std crates / WIP
- OxCC (⭐20): A port of Open Source Car Control written in Rust
Sep 10, 2018
Books, blogs, and training materials / Free and public materials
- Physical Computing With Rust A (WIP) guide to physical computing with Rust on the Raspberry Pi.
Aug 29, 2018
Peripheral Access Crates / Texas Instruments
tm4c123x
Peripheral access API for TM4C123x microcontrollers (generated using svd2rust)
tm4c129x
Peripheral access API for TM4C129x microcontrollers (generated using svd2rust)
Aug 14, 2018
Architecture support crates / ARM
cortex-a
Low-level access to Cortex-A processors (early state) -
Aug 11, 2018
Books, blogs, and training materials / Free and public materials
- Discovery by @rust-embedded — this book is an introductory course on microcontroller-based embedded systems that uses Rust as the teaching language. Original author: @japaric
Aug 01, 2018
Board support crates / Special Purpose
betafpv-f3
- For the BetaFPV F3 drone flight controller
Jul 23, 2018
Books, blogs, and training materials / Free and public materials
- MicroRust Introductory book for embedded development in Rust on the micro:bit.
Jul 09, 2018
Board support crates / Texas Instruments
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 (⭐52), vga-framebuffer (⭐31) and pc-keyboard (⭐100).
May 28, 2018
Books, blogs, and training materials / Free and public materials
- Cortex-M Quickstart by @japaric – a template and introduction to embedded Rust, suitable for developers familiar with embedded development but new to embedded Rust.
May 06, 2018
Tools / Paid and commercially available materials
- bobbin-cli (⭐114) A Rust command line tool to simplify embedded development and deployment.
May 02, 2018
Firmware projects / WIP
- anne-key (⭐568): Alternate keyboard firmware for the Obins ANNE Pro
Apr 08, 2018
Tools / Paid and commercially available materials
- bindgen Automatically generates Rust FFI bindings to C and C++ libraries. -
Peripheral Access Crates / Nordic
nrf51
Peripheral access API for nRF51 microcontrollers (generated using svd2rust) -
Peripheral Access Crates / NXP
mkw41z
-
HAL implementation crates / Nordic
HAL implementation crates / STMicroelectronics
Board support crates / Nordic
Board support crates / NXP
frdm-kw41z
- FRDM-KW41Z -
Driver crates / Other
- L3GD20 - SPI - Gyroscope - Intro blog post -
Apr 06, 2018
Tools / Paid and commercially available materials
- svd2rust (⭐725) Generate Rust structs with register mappings from SVD files.
- cortex-m semihosting (⭐0) Semihosting for ARM Cortex-M processors
Apr 01, 2018
HAL implementation crates / STMicroelectronics
stm32f0xx-hal
-- Has examples that can run on boards like the [Nucleo-F042K6] and similar boards [Nucleo-F042K6]: http://www.st.com/en/evaluation-tools/nucleo-f042k6.html
Board support crates / STMicroelectronics
nucleo-f042k6
- [Nucleo-F042K6]
nucleo-f103rb
- [Nucleo-F103RB]