Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Awesome Embedded Rust | 4,772 | 17 days ago | 19 | other | ||||||
Curated list of resources for Embedded and Low-level development in the Rust programming language | ||||||||||
Awesome Iot | 2,721 | 7 months ago | 1 | mit | ||||||
🤖 A curated list of awesome Internet of Things projects and resources. | ||||||||||
Awesome Embedded Software | 452 | a month ago | cc0-1.0 | |||||||
:stars: List of software (HW interfaces, libs, protocols, etc) specifically suitable for resource-constrained Embedded Systems (low-memory and low-power) like 8-bit, 16-bit and 32-bit microcontrollers. | ||||||||||
Awesome Embedded | 81 | 10 months ago | 1 | cc0-1.0 | ||||||
A curated list of awesome embedded software frameworks, libraries, resources, and shiny things. | ||||||||||
Awesome Electronic Engineering | 81 | 21 days ago | cc0-1.0 | |||||||
Awesome Electronic Engineering | ||||||||||
Awesome Edge Ai | 20 | 4 years ago | cc0-1.0 | |||||||
A curated list of edge tools for AI applications | ||||||||||
Awesome Iot Resources | 11 | 2 years ago | 3 | mit | ||||||
An awesome collection of curated IoT resources(Books, Tutorials, Blogs, Podcasts, ...) | ||||||||||
Awesome Embedded Systems | 5 | 10 months ago | cc0-1.0 | |||||||
A curated list of awesome embedded systems resources | ||||||||||
Awesome Ides | 5 | a month ago | cc0-1.0 | |||||||
A curated list of Integrated Development Environments (IDEs) and related tools that can enhance your coding experience and boost your productivity. |
This is a curated list of resources related to embedded and low-level programming in the programming language Rust, including a list of useful crates.
This project is developed and maintained by the Resources team.
Don't see something you want or need here? Add it to the Not Yet Awesome Embedded Rust list!
In 2018 the Rust community created an embedded working group to help drive adoption in the Rust ecosystem.
#rust-embedded:matrix.org
Matrix room.embedded-graphics
crate and ecosystemembedded-hal
traits for testing without accessing real hardware. - cargo-generate
powered project template for quickly setting up new projects using the Knurling Tools.#[test]
attribute, but will run on an embedded targetv0.2.x
and v1.x.x
hal implementations and driversRegister definition for microcontroller families. Usually generated using svd2rust
. -
Peripheral Access Crates were also called Device Crates.
NOTE You may be able to find even more peripheral access crates by searching for the
svd2rust
keyword on crates.io!
atsamd11
Peripheral access API for Microchip (formerly Atmel) SAMD11 microcontrollers. This git repo hosts both the peripheral access crate and the hal.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.atsame53
Peripheral access API for Microchip (formerly Atmel) SAME53 microcontrollers. This git repo hosts both the peripheral access crate and the hal.atsame54
Peripheral access API for Microchip (formerly Atmel) SAME54 microcontrollers. This git repo hosts both the peripheral access crate and the hal.avr-device
Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family.sam3x8e
Peripheral access API for Atmel SAMD3X8E microcontrollers (generated using svd2rust) - pic32-pac
Peripheral access API for PIC32MX1/2xx - nrf51
Peripheral access API for nRF51 microcontrollers (generated using svd2rust) - nrf52810-pac
- Peripheral access API for the nRF52810 microcontroller (generated using svd2rust) - nrf52811-pac
- Peripheral access API for the nRF52811 microcontroller (generated using svd2rust) - nrf52832-pac
- Peripheral access API for the nRF52832 microcontroller (generated using svd2rust) - nrf52833-pac
- Peripheral access API for the nRF52833 microcontroller (generated using svd2rust) - nrf52840-pac
- Peripheral access API for the nRF52840 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) - k64
- lpc11uxx
- lpc55s6x-pac
- lpc82x-pac
- lpc845-pac
- mkw41z
- imxrt-ral
Register access layer for i.MX RT series. - SKEAZN642
Peripheral access API for KEA64 family microcontrollers (generated using svd2rust) - rp2040-pac
- Peripheral access API for the RP2040 dual-core system-on-chip (generated using svd2rust) - e310x
- svd2rust generated interface to SiFive Freedom E310 MCUs - efm32pg12-pac
- Peripheral access API for Silicon Labs EFM32PG12 microcontrollers - The efm32-rs
project has peripheral access APIs for most EFM32 microcontrollers (generated using svd2rust):
efm32g-pac
- efm32gg-pac
- efm32gg11b-pac
- efm32gg12b-pac
- efm32hg-pac
- efm32jg1b-pac
- efm32jg12b-pac
- efm32lg-pac
- efm32pg-pac
- efm32pg22-pac
- efm32pg23-pac
- efm32tg-pac
- efm32tg11b-pac
- efm32wg-pac
- efm32zg-pac
- The stm32-rs
project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust):
stm32f0
- stm32f1
- stm32f2
- stm32f3
- stm32f4
- stm32f7
- stm32g0
- stm32g4
- stm32h7
- stm32l0
- stm32l1
- stm32l4
- tm4c123x
Peripheral access API for TM4C123x microcontrollers (generated using svd2rust)tm4c129x
Peripheral access API for TM4C129x microcontrollers (generated using svd2rust)msp430g2553
Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust)
msp430fr2355
Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust)msp430fr6972
- 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)gd32vf103-pac
Peripheral access API for GD32VF103 RISC-V microcontrollers (generated using svd2rust) - gd32e2
Peripheral access API for GD32E23x Cortex-M23 microcontrollers (generated using svd2rust) - gd32f1
Peripheral access API for GD32F1x0 Cortex-M3 microcontrollers (generated using svd2rust) - gd32f2
Peripheral access API for GD32F20x Cortex-M3 microcontrollers (generated using svd2rust) - Peripheral access crates for the different XMC4xxx families of microcontrollers
w7500x-pac
Peripheral Access Crate for Wiznet's W7500x microcontrollers (generated using svd2rust) - 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) - da14531
Peripheral Access Crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip - Implementations of embedded-hal
for microcontroller families and systems running some OS. -
NOTE You may be able to find even more HAL implementation crates by searching for the
embedded-hal-impl
and embedded-hal
keywords on crates.io!
bitbang-hal
software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPinftdi-embedded-hal
for FTDI FTx232H chips connected to Linux systems via USBlinux-embedded-hal
for embedded Linux systems like the Raspberry Pi. - freebsd-embedded-hal
for embedded (or not) FreeBSD systems. - atsam4-hal
- HAL for SAM4E, SAM4N and SAM4S - atsamd-hal
- HAL for SAMD11, SAMD21, SAMD51 and SAME54 - avr-hal
- HAL for AVR microcontroller family and AVR-based boardspic32-hal
- HAL for PIC32MX - nrf51-hal
- nrf52810-hal
- nrf52811-hal
- nrf52832-hal
- nrf52833-hal
- nrf52840-hal
- nrf9160-hal
- Also check the list of NXP board support crates!
lpc55s6x-hal
- lpc8xx-hal
- HAL for lpc82x and lpc845 - mkw41z-hal
- imxrt-hal
- HAL for i.MX RT series. - rp2040-hal
- HAL for the RP2040 dual-core system-on-chip - e310x-hal
- HAL for SiFive Freedom E310 MCUs - Also check the list of STMicroelectronics board support crates!
stm32f0xx-hal
- stm32f1xx-hal
- stm32f3xx-hal
- stm32f4xx-hal
- stm32f7xx-hal
- stm32g0xx-hal
- stm32h7xx-hal
- stm32l0xx-hal
- stm32l1xx-hal
- stm32l151-hal
- stm32l4xx-hal
- stm32-hal
- msp430fr2x5x-hal
esp-idf-hal
esp-hal
no_std
Hardware Abstraction Layers for ESP32 microcontrollerstomu-hal
toboot_config
macro.xmc1100-hal
- xmc4-hal
- gd32vf103xx-hal
- gd32vf103-hal
- gd32f1x0-hal
- da14531-hal
HAL crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip - Crates tailored for general CPU architectures.
cortex-a
Low level access to Cortex-A processors (early state) - cortex-m
Low level access to Cortex-M processors - riscv
Low level access to RISC-V processors - Crates tailored for specific boards.
metro_m0
- Board support for the Metro M0 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board. metro_m4
- Board support for the Metro M4 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board. pyportal
- Board support for the PyPortal board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. pygamer
- Board support for the PyGamer board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board. trellis_m4
- Board support for the NeoTrellis M4 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. feather-f405
- Board support for the Feather STM32F405 Express. 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. feather_m4
- Board support for the Feather M4 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board. 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. edgebadge
- Board support for the EdgeBadge board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. gemma_m0
- Board support for the Gemma M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. itsybitsy_m0
- Board support for the ItsyBitsy M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. itsybitsy_m4
- Board support for the ItsyBitsy M4 Express board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. trinket_m0
- Board support for the Trinket M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. neo_trinkey
- Board support for the neo trinkey board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. neokey_trinkey
- Board support for the neokey trinkey board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. 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. qt_py_m0
- Board support for the QT Py board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. 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 avr-hal
- Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardoarduino_mkr1000
- Board support for the MKR 1000 WiFi board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. arduino_mkrvidor4000
- Board support for the MKR Vidor board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. arduino_mkrzero
- Board support for the mkrzero board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. arduino_nano33iot
- Board support for the Arduino Nano 33 IoT in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. dwm1001
- Decawave DWM1001-DEV - microbit
- micro:bit - nrf52840-dk-bsp
- nrf52840-dk - Thingy:91-nrf9160
- thingy:91 - frdm-kw41z
- FRDM-KW41Z - pimoroni-pico-explorer
- Board Support for the Pimoroni Pico Explorer
pimoroni-pico-lipo-16mb
- Board Support for the Pimoroni Pico Lipo 16MB
rp-pico
- Board Support Crate for the RP2040 based Raspberry Pi Pico.samd21_mini
- Board support for the SAMD21 Mini Breakout in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. sparkfun-pro-micro-rp2040
- Board Support Crate for the RP2040 based Sparkfun Pro Micro.seedstudio-gd32v
- Board support crate for the GD32 RISC-V Dev Board
xiao_m0
- Board support for the Seeed Studio Seeeduino XIAO in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. wio_lite_mg126
- Board support for the Seeed Studio wio_lite_mg126 in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. wio_lite_w600
- Board support for the Seeed Studio wio_lite_w600 in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. wio_terminal
- Board support for the Seeed Studio wio_terminal in the atsamd-rs repo. It is an atsamd-rs tier 1 support board longan-nano
- Board support package for the Longan Nano board
prussia
- SDK for the PlayStation 2.f3
Board Support Crate for the STM32F3DISCOVERY - nucleo-f042k6
- Nucleo-F042K6
nucleo-f103rb
- Nucleo-F103RB
nucleo-f401re
- Nucleo-F401RE nucleo-h743zi
Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2nucleo-h723zg
Board support crate for the Nucleo H723ZGsolo-bsp
Board Support Crate for Solo, an open source security token (WIP) - stm32f407g-disc
Board Support Crate for the STM32F4DISCOVERY (WIP) - stm32f429i-disc
Board Support Crate for the STM32F429DISCOVERY (WIP) - stm32f3-discovery
Board Support Crate for the STM32F3DISCOVERY used in Rust Embedded Discovery book - teensy4-rs
Board Support create for the [Teensy 4.0]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.stellaris-launchpad
- For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad tm4c129-launchpad
- For the Texas Instruments TM4C129-XL Launchpad boardbetafpv-f3
- For the BetaFPV F3 drone flight controllersodaq_one
- Board support for the Sodaq one board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. sodaq_sara_aff
- Board support for the Sodaq sara aff board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. serpente
- Board support for the serpente board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. p1am_100
- Board support for the p1am_100 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board. The following crates provide HAL-like abstractions for subcomponents of embedded
devices which go beyond what is available in embedded-hal
:
accelerometer
- Generic accelerometer support, including traits and types for taking readings from 2 or 3-axis accelerometers and tracking device orientations - embedded-graphics
: 2D drawing library for any size display - radio
- Generic radio transceiver traits, mocks, and helpers - smart-leds
: Support for addressable LEDs including WS2812 and APA102usb-device
: Abstraction layer between USB peripheral crates & USB class crates - atat
: Abstraction crate to ease writting AT based driver crates - embedded-nal
: An Embedded Network Abstraction Layer - embedded-storage
: An Embedded Storage Abstraction Layerswitch-hal
: An "on"/"off" abstraction for input and output switches - Platform agnostic crates to interface external components. These crates use the embedded-hal
interface to support all the devices and systems that implement the embedded-hal
traits.
The list below contains drivers that have achieved the "released" status. In order to add a driver to this list, please ensure that your driver has a short blog post, article or sufficiently explanatory README showing an example of its use. Ideally this post would demonstrate using the device in a small project so that a Rust and/or embedded newcomer can also understand it. Otherwise please add it to the WIP section below.
PCA95xx
, PCF85xx
) - Intro blog post - embedded-hal
- Intro blog post - unsafe
- github - usb-device
. Includes concrete Keyboard (boot and NKRO), Mouse and Consumer Control implementations as well as support for building your own HID classes - github - no_std
driver for the TB6612FNG motor driver - NOTE You may be able to find even more driver crates by searching for the embedded-hal-driver
keyword on crates.io!
Work in progress drivers. Help the authors make these crates awesome!
#![no_std]
crates designed to run on resource constrained devices.
bounded-registers
provides a Tock-like API for MMIO registers with the addition of type-based bounds checking. - 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" - cmsis-dsp-sys
: Rust FFI bindings to the Arm CMSIS_5 math library - Vec
, String
, LinearMap
, RingBuffer
backed by fixed-size buffers - ManagedSlice
, ManagedMap
backed by either their std counterparts or fixed-size buffers for #![no_std]
. - no_std
, no-alloc
) fast fourier transforms - panic-persist
: A panic handler crate inspired by panic-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. - 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. - BTreeSet
and BTreeMap
. - alloc
. no_std
parser for the Adafruit Bluefruit LE Connect controller protocol. - Work in progress crates. Help the authors make these crates awesome!
These materials may be outdated and reflect earlier practices, but might still be useful for reference.
This list is licensed under
Contribution to this crate is organized under the terms of the Rust Code of Conduct, the maintainer of this crate, the Resources team, promises to intervene to uphold that code of conduct.