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. - Register 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.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) - nrf51
Peripheral access API for nRF51 microcontrollers (generated using svd2rust) - 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) - k64
- lpc11uxx
- lpc55s6x-pac
- lpc82x-pac
- lpc845-pac
- mkw41z
- imxrt-ral
Register access layer for i.MX RT series. - e310x
- svd2rust generated interface to SiFive Freedom E310 MCUs - efm32pg12-pac
- Peripheral access API for Silicon Labs EFM32PG12 microcontrollers - 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)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) - Peripheral access crates for the different XMC4xxx families of microcontrollers
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. - atsamd-hal
- HAL for SAMD11, SAMD21, SAMD51 and SAME54 - avr-hal
- HAL for AVR microcontroller family and AVR-based boardsAlso 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. - 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
- msp430fr2x5x-hal
esp8266-hal
rust-xtensa
tomu-hal
toboot_config
macro.xmc1100-hal
- xmc4-hal
- gd32vf103xx-hal
- gd32vf103-hal
- 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 - mips
Low level access to MIPS32 processors - Crates tailored for specific boards.
metro_m0
- Board support for the Metro M0 board
metro_m4
- Board support for the Metro M4 board
pyportal
- Board support for the PyPortal board
pygamer
- Board support for the PyGamer board
trellis_m4
- Board support for the NeoTrellis M4 board
feather-f405
- Board support for the Feather STM32F405 Express feather_m0
- Board support for the Feather M0 board feather_m4
- Board support for the Feather M4 board
circuit_playground_express
- Board support for the Circuit Playground Express board
edgebadge
- Board support for the EdgeBadge board
gemma_m0
- Board support for the Gemma M0 board
itsybitsy_m0
- Board support for the ItsyBitsy M0 board
itsybitsy_m4
- Board support for the ItsyBitsy M4 Express board
trinket_m0
- Board support for the Trinket M0 board
avr-hal
- Board support crate for several AVR-based boards including the Arduino Uno and the Arduino Leonardoarduino_mkrvidor4000
- Board support for the MKR Vidor board arduino_mkrzero
- Board support for the mkrzero board dwm1001
- Decawave DWM1001-DEV - microbit
- micro:bit - frdm-kw41z
- FRDM-KW41Z - samd21_mini
- Board support for the SAMD21 Mini Breakout seedstudio-gd32v
- Board support crate for the GD32 RISC-V Dev Board
xiao_m0
- Board support for the Seeed Studio Seeeduino XIAO 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-F042K6nucleo-f103rb
- Nucleo-F103RBnucleo-f401re
- Nucleo-F401RE solo-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) - 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 betafpv-f3
- For the BetaFPV F3 drone flight controllerThe 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 - 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 developed as part of the Weekly Driver initiative and that have achieved the "released" status (published on crates.io + documentation / short blog post).
embedded-hal
- Intro blog post - unsafe
- github - 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" - 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. - alloc
. Work in progress crates. Help the authors make these crates awesome!
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.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。