awesome-embedded-rust

授权协议 View license
开发语言 C/C++
所属分类 其他开源、 嵌入式操作系统
软件类型 开源软件
地区 不详
投 递 者 梁丘烨
操作系统 嵌入式
开源组织
适用人群 未知
 软件概览

Embedded Rust

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!

Table of contents

Community

In 2018 the Rust community created an embedded working group to help drive adoption in the Rust ecosystem.

  • Embedded WG, including newsletters with progress updates.

Community Chat Rooms

Books, blogs and training materials

Tools

  • xargo Rust package manager with support for non-default std libraries — build rust runtime for your own embedded system.
    • xargo is great but it's in maintenance mode, cargo-xbuild is catching up as intended replacement.
  • svd2rust Generate Rust structs with register mappings from SVD files.
  • edc2svd Generate SVD files for PIC32 devices from EDC files. -
  • embedded-hal-mock Mock implementation of embedded-hal traits for testing without accessing real hardware. -
  • bindgen Automatically generates Rust FFI bindings to C and C++ libraries. -
  • cortex-m semihosting Semihosting for ARM Cortex-M processors
  • bobbin-cli A Rust command line tool to simplify embedded development and deployment.
  • cargo-fel4 A Cargo subcommand for working with feL4 projects. -
  • 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, a RTT terminal or a GDB server. -
  • cargo-hf2 A small cargo subcommand to download cargo builds to Microsoft UF2 bootloaders via HID USB . -
  • uf2 Converts binary files to Microsoft's UF2 format for copying over to mass storage device uf2 bootloaders -
  • Knurling Tools are developed by Ferrous Systems to ease the development process for building, debugging, and testing embedded Rust systems. These tools include:
    • Probe Run: a cargo runner to flash and run embedded applications just like you would native applications, including backtraces and panicking behavior
    • defmt: a highly efficient logging framework that targets resource-constrained devices, like microcontrollers.
    • flip-link, a linker wrapper that provides stack overflow protection without an MMU by flipping the standard memory layout of ARM Cortex-M programs
    • app-template, a cargo-generate powered project template for quickly setting up new projects using the Knurling Tools.
    • defmt-test, 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
    • embedded-hal-compat, a compatibility layer to provide interoperability between v0.2.x and v1.x.x hal implementations and drivers

Real-time

Real-time Operating System (RTOS)

  • Drone OS An Embedded Operating System for writing real-time applications in Rust.
  • FreeRTOS.rs Rust interface for the FreeRTOS API
  • FreeRTOS-rust Rust interface for FreeRTOS with Rust entry point and build support crate.
  • Tock An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers

Real-time tools

  • RTIC v0.5 Real-Time Interrupt-driven Concurrency — A concurrency framework for building real time systems:

Peripheral Access Crates

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 thesvd2rust keyword on crates.io!

Microchip

  • 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) -
  • pic32-pac Peripheral access API for PIC32MX1xx, PIC32MX2xx, PIC32MX274 XLP

Nordic

  • 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) -

NXP

SiFive

Silicon Labs

  • efm32pg12-pac - Peripheral access API for Silicon Labs EFM32PG12 microcontrollers -

STMicroelectronics

The stm32-rs project has peripheral access APIs for most STM32 microcontrollers (generated using svd2rust):

Texas Instruments

  • tm4c123x Peripheral access API for TM4C123x microcontrollers (generated using svd2rust)
  • tm4c129x Peripheral access API for TM4C129x microcontrollers (generated using svd2rust)

MSP430

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)

GigaDevice

  • gd32vf103-pac Peripheral access API for GD32VF103 RISC-V microcontrollers (generated using svd2rust) -
  • gd32f1 Peripheral access API for GD32F1x0 Cortex-M3 microcontrollers (generated using svd2rust) -

XMC

Peripheral access crates for the different XMC4xxx families of microcontrollers

HAL implementation crates

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 theembedded-hal-impl and embedded-hal keywords on crates.io!

OS

  • bitbang-hal software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin
  • ftdi-embedded-hal for FTDI FTx232H chips connected to Linux systems via USB
  • linux-embedded-hal for embedded Linux systems like the Raspberry Pi. -

Microchip

  • 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 boards
  • pic32-hal - HAL for PIC32MX

Nordic

NXP

Also check the list of NXP board support crates!

SiFive

STMicroelectronics

Also check the list of STMicroelectronics board support crates!

Texas Instruments

MSP430

  • msp430fr2x5x-hal
    • HAL implementation for the MSP430FR2x5x family of microcontrollers

Espressif

Silicon Labs

  • tomu-hal
    • HAL implementation targeted for Tomu USB board with EFM32HG309F64 ARMv6-M core. Has support to configure tomu bootloader directly from application via toboot_config macro.

XMC

GigaDevice

  • gd32vf103xx-hal -
    • HAL for GD32VF103xx microcontrollers
  • gd32vf103-hal -
    • (WIP) Hardware abstract layer (HAL) for the GD32VF103 RISC-V microcontroller
  • gd32f1x0-hal -
    • HAL implementation for GD32F1x0 microcontrollers

Architecture support crates

Crates tailored for general CPU architectures.

ARM

  • cortex-a Low level access to Cortex-A processors (early state) -
  • cortex-m Low level access to Cortex-M processors -

RISC-V

  • riscv Low level access to RISC-V processors -

MIPS

  • mips Low level access to MIPS32 processors -
  • mips-mcu Low level access to MIPS MCU cores -

Board support crates

Crates tailored for specific boards.

1BitSquared

Adafruit

Arduino

Nordic

NXP

Sparkfun

SeeedStudio

SiFive

Sipeed

Sony

  • prussia - SDK for the PlayStation 2.

STMicroelectronics

Teensy

  • teensy4-rs Board Support create for the [Teensy 4.0]

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, vga-framebuffer and pc-keyboard.
  • stellaris-launchpad - For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad

Special Purpose

  • betafpv-f3 - For the BetaFPV F3 drone flight controller

Component abstraction crates

The following crates provide HAL-like abstractions for subcomponents of embeddeddevices 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 APA102
  • usb-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 Layer

Driver crates

Platform agnostic crates to interface external components. These crates use the embedded-halinterface to support all the devices and systems that implement the embedded-haltraits.

The list below contains drivers developed as part of the Weekly Driver initiative and thathave achieved the "released" status (published on crates.io + documentation / short blog post).

  1. AD983x - SPI - AD9833/AD9837 waveform generators / DDS - Intro blog post -
  2. adafruit-alphanum4 - I2C - Driver for Adafruit 14-segment LED Alphanumeric Backpack based on the ht16k33 chip -
  3. ADS1x1x - I2C - 12/16-bit ADCs like ADS1013, ADS1015, ADS1115, etc. - Intro blog post -
  4. ADXL313 - SPI - 3-axis accelerometer -
  5. ADXL343 - I2C - 3-axis accelerometer -
  6. ADXL355 - SPI - 3-axis accelerometer - Intro blog post -
  7. AHT20 - I2C - Humidity and temperature sensor - github -
  8. AnyLeaf - I2C - pH sensor module - github -
  9. AT86RF212 - SPI - Low power IEEE 802.15.4-2011 ISM RF Transceiver - Intro blog post -
  10. BlueNRG - SPI - driver for BlueNRG-MS Bluetooth module - Intro post
  11. BNO055 - I2C - Bosch Sensortec BNO055 9-axis IMU driver - Intro post
  12. CD74HC4067 - GPIO - 16-channel digital and analog multiplexer - Intro blog post - github -
  13. dht-sensor - 1-Wire - DHT11/DHT22 temperature/humidity sensor driver - github -
  14. DRV8825 - DRV8825 Stepper Motor Driver (based on Stepper) - Intro blog post -
  15. DS1307 - I2C - Real-time clock driver - Intro blog post -
  16. EEPROM24x - I2C - 24x series serial EEPROM driver - Intro blog post -
  17. embedded-ccs811 - I2C - Gas and VOC sensor driver for monitoring indoor air quality - Intro blog post -
  18. embedded-sdmmc - SPI - SD/MMC Card Driver with MS-DOS Partition and FAT16/FAT32 support - Intro post
  19. ENC28J60 - SPI - Ethernet controller - Intro blog post -
  20. HC-12 - SERIAL - Wireless serial transceiver module - Intro blog post - github -
  21. HTS221 - I2C - Humidity and temperature sensor - Intro blog post -
  22. IIS2MDC - I2C - ST's High accuracy, ultra-low-power, 3-axis digital output magnetometer -
  23. ISM330DHCX - I2C - ST's IMU with 3D accelerometer, 3D gyroscope, ML core and more -
  24. keypad - GPIO - Keypad matrix circuits - Intro post -
  25. KXCJ9 - I2C - KXCJ9/KXCJB 3-axis accelerometers - Intro blog post -
  26. L3GD20 - SPI - Gyroscope - Intro blog post -
  27. LSM303DLHC - I2C - Accelerometer + compass (magnetometer) - Intro blog post -
  28. MAX6955 - I2C - Driver for Alphanumeric LED display driver - Intro blog post -
  29. MCP25LCXX - SPI - Driver for Microchip's 25LC series of EEPROMs -
  30. MCP3008 - SPI - 8 channel 10-bit ADC - Intro blog post -
  31. MCP3425 - I2C - 16-bit ADC - Intro blog post -
  32. MCP794xx - I2C - Real-time clock / calendar driver - Intro blog post -
  33. MMA7660FC - I2C - 3-axis accelerometer - Intro blog post
  34. OPT300x - I2C - Ambient light sensor family driver - Intro blog post -
  35. pwm-pca9685 - I2C - 16-channel, 12-bit PWM/Servo/LED controller - Intro blog post -
  36. rainbow-hat-rs - I2C/SPI/GPIO - Pimoroni Rainbow HAT driver for Raspberry Pi - github -
  37. rotary-encoder-hal - GPIO - A rotary encoder driver using embedded-hal - Intro blog post -
  38. SGP30 - I2C - Gas sensor - Intro blog post -
  39. SH1106 - I2C - Monochrome OLED display controller - Intro post
  40. shared-bus - I2C - utility driver for sharing a bus between multiple devices - Intro post
  41. shift-register-driver - GPIO - Shift register - Intro blog post -
  42. Si4703 - I2C - FM radio turner (receiver) driver - Intro blog post -
  43. SRAM23x - SPI - Microchip 23x series serial SRAM/NVSRAM driver - Intro blog post -
  44. SSD1306 - I2C/SPI - OLED display controller - Intro blog post -
  45. STSPIN220 - STSPIN220 Stepper Motor Driver (based on Stepper) - Intro blog post -
  46. Sx127x - SPI - Long Range Low Power Sub GHz (Gfsk, LoRa) RF Transceiver - Intro blog post - crates.io
  47. Sx128x - SPI - Long range, low power 2.4 GHz (Gfsk, Flrc, LoRa) RF Transceiver - Intro blog post -
  48. TC72 - SPI - Microchip TC72 temperature sensor -
  49. TCN75A - I2C - Microchip TCN75A temperature sensor -
  50. TMP006 - I2C - Contact-less infrared (IR) thermopile temperature sensor driver - Intro post
  51. TMP1x2 - I2C - TMP102 and TMP112x temperature sensor driver - Intro blog post
  52. TSIC - GPIO - TSIC 306 temperature sensor driver - Intro blog post
  53. TSL256X - I2C - Light Intensity Sensor - Intro blog post -
  54. VEML6030/VEML7700 - I2C - Ambient light sensors - Intro blog post -
  55. VEML6075 - I2C - UVA and UVB light sensor - Intro blog post -
  56. usbd-serial - USB CDC-ACM class (serial) implementation - github -
  57. usbd-hid - USB HID class implementation - github -
  58. usbd-hid-device - USB HID class implementation without unsafe - github -
  59. usbd-midi - USB MIDI class implementation - github -
  60. usbd-webusb - USB webUSB class implementation - github -
  61. SHTCx - I2C - Temperature / humidity sensors - github -
  62. ST7789 - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix used in the PineTime watch github
  63. DW1000 - SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - Article -
  64. Adafruit-7segment - I2C - Driver for Adafruit 7-segment LED Numeric Backpack based on the ht16k33 chip - github -

NOTE You may be able to find even more driver crates by searching for the embedded-hal-driverkeyword on crates.io!

WIP

Work in progress drivers. Help the authors make these crates awesome!

  1. AFE4400 - SPI - Pulse oximeter
  2. APDS9960 - I2C - Proximity, ambient light, RGB and gesture sensor -
  3. AS5048A - SPI - AMS AS5048A Magnetic Rotary Encoder
  4. AXP209 - I2C - Power management unit
  5. BH1750 - I2C - ambient light sensor (lux meter)
  6. BME280 - A rust device driver for the Bosch BME280 temperature, humidity, and atmospheric pressure sensor and the Bosch BMP280 temperature and atmospheric pressure sensor.
  7. bme680 - I2C - Temperature / humidity / gas / pressure sensor -
  8. BMI160 - I2C / SPI - Inertial Measurement Unit -
  9. BMP280 - A platform agnostic driver to interface with the BMP280 pressure sensor
  10. CC1101 - SPI - Sub-1GHz RF Transceiver -
  11. DS3231 - I2C - real time clock
  12. DS3234 - SPI - Real time clock
  13. DS323x - I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 -
  14. epd-waveshare - SPI - driver for E-Paper Modules from Waveshare
  15. embedded-morse - Output morse messages -
  16. embedded-nrf24l01 - SPI+GPIO - 2.4 GHz radio
  17. GridEYE - I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) -
  18. HC-SR04 - DIO - Ultrasound sensor
  19. HD44780-driver - GPIO - LCD controller -
  20. HD44780 - Parallel port - LCD controller
  21. HM11 - USART - HM-11 bluetooth module AT configuration crate -
  22. HRS3300 - I2C - Heart rate sensor / monitor used in the PineTime smartwatch, for example. -
  23. HDC20xx - I2C - Temperature and humidity sensor compatible with HDC2080, HDC2021 and HDC2010. -
  24. hub75 - A driver for rgb led matrices with the hub75 interface -
  25. hzgrow-r502 - UART capacitive fingerprint reader -
  26. iAQ-Core - I2C - iAQ-Core-C/iAQ-Core-P Gas and VOC sensor driver for monitoring indoor air quality.
  27. ILI9341 - SPI - TFT LCD display
  28. INA260 - I2C - power monitor -
  29. ISL29125 - I2C - RGB Color Light Sensor with IR Blocking Filter -
  30. IST7920 - SPI monochrome LCD display -
  31. LM75 - I2C - Temperature sensor and thermal watchdog -
  32. LS010B7DH01 - SPI - Memory LCD
  33. LSM303C - A platform agnostic driver to interface with the LSM303C (accelerometer + compass)
  34. LSM9DS1 - I2C/SPI - 9-axis motion sensor module
  35. ltr-559 - I2C - Ambient Light Sensor and Proximity sensor
  36. lvgl - no_std LittleVGL port -
  37. MAG3110 - I2C - Magnetometer
  38. MAX17048/9 - I2C - LiPo Fuel gauge, battery monitoring IC -
  39. MAX170xx - I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9.
  40. MAX3010x - I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -
  41. MAX31855 - SPI - Thermocouple digital converter -
  42. MAX31865 - SPI - RTD to Digital converter -
  43. MAX44009 - I2C - Ambient light sensor -
  44. MAX7219 - SPI - LED display driver -
  45. MCP4725 - I2C - 12-bit DAC -
  46. MCP49xx - SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. -
  47. MCP9808 - I2C - Temperature sensor -
  48. MFRC522 - SPI - RFID tag reader/writer
  49. midi-port - UART - MIDI input -
  50. MLX9061x - I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. -
  51. motor-driver - Motor drivers: L298N, TB6612FNG, etc.
  52. MPU6050 - I2C - no_std driver for the MPU6050
  53. MPU9250 - no_std driver for the MPU9250 (and other MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU)
  54. NRF24L01 - SPI - 2.4 GHz wireless communication
  55. OneWire - 1wire - OneWire protocol implementation with drivers for devices such as DS18B20 -
  56. PCD8544 - SPI - 48x84 pixels matrix LCD controller
  57. PCD8544_rich - SPI - Rich driver for 48x84 pixels matrix LCD controller -
  58. PCF857x - I2C - I/O expanders: PCF8574, PCF8574A, PCF8575
  59. radio-at86rf212 - SPI - Sub GHz 802.15.4 radio transceiver
  60. RFM69 - SPI - ISM radio transceiver
  61. RN2xx3 - Serial - A driver for the RN2483 / RN2903 LoRaWAN modems by Microchip
  62. SCD30 - I2C - CO₂ sensor -
  63. SHT2x - I2C - temperature / humidity sensors
  64. SHT3x - I2C - Temperature / humidity sensors
  65. SI5351 - I2C - clock generator
  66. SI7021 - I2C - Humidity and temperature sensor
  67. spi-memory - SPI - A generic driver for various SPI Flash and EEPROM chips -
  68. SSD1320 - SPI - Graphical OLED display controller -
  69. SSD1322 - SPI - Graphical OLED display controller -
  70. SSD1351 - SPI - 16bit colour OLED display driver -
  71. SSD1675 - SPI - Tri-color ePaper display controller -
  72. st7032i - I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). -
  73. ST7735-lcd - SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix
  74. ST7920 - SPI - LCD displays using the ST7920 controller
  75. stm32-eth - MCU - Ethernet
  76. SX1278 - SPI - Long range (LoRa) transceiver
  77. SX1509 - I2C - IO Expander / Keypad driver
  78. TCS3472 - I2C - RGB color light sensor -
  79. TPA2016D2 - I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier -
  80. VEML6040 - I2C - RGBW color light sensor -
  81. VEML6070 - I2C - UVA light sensor -
  82. VEML7700 - I2C - Ambient light sensors -
  83. vesc-comm - A driver for communicating with VESC-compatible electronic speed controllers
  84. VL53L0X - A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor)
  85. w5500 - SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE -
  86. xCA9548A - I2C - I2C switches/multiplexers: TCA9548A, PCA9548A -
  87. ublox-cellular-rs - Serial - Cellular driver for the full Ublox cellular serial based family

no-std crates

#![no_std] crates designed to run on resource constrained devices.

  1. adskalman: Kalman filter and Rauch-Tung-Striebel smoothing implementation.
  2. atomic: Generic Atomic wrapper type.
  3. bbqueue: A SPSC, statically allocatable queue based on BipBuffers suitable for DMA transfers -
  4. bitmatch: A crate that allows you to match, bind, and pack the individual bits of integers. -
  5. 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.
  6. bit_field: manipulating bitfields and bitarrays -
  7. bluetooth-hci: device-independent Bluetooth Host-Controller Interface implementation.
  8. 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. -
  9. cam-geom: Geometric models of cameras for photogrammetry.
  10. combine: parser combinator library -
  11. console-traits: Describes a basic text console. Used by menu and implemented by vga-framebuffer.
  12. 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" -
  13. cmsis-dsp-sys: Rust FFI bindings to the Arm CMSIS_5 math library -
  14. dcmimu: An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements
  15. debouncr: A simple no-std input debouncer to detect rising/falling edges with minimal RAM requirements.
  16. device-driver: A toolkit to write better device drivers, faster.
  17. embassy: A set of embedded async tools to make async/await a first-class option for embedded development
  18. embedded-crc-macros: Macros implementing portable CRC algorithms and build-time lookup table generation.
  19. embedded-websocket: A lightweight server and client websocket library for embedded systems.
  20. endian_codec: (En/De)code rust types as packed bytes with specific order (endian). Supports derive. -
  21. gcode: A gcode parser for no-std applications -
  22. gdbstub: zero-allocation, pure Rust implementation of the GDB Remote Serial Protocol -
  23. heapless: provides Vec, String, LinearMap, RingBuffer backed by fixed-size buffers -
  24. ieee802154: Partial implementation of the IEEE 802.15.4 standard -
  25. infrared: infrared remote control library for embedded rust -
  26. intrusive-collections: intrusive (non-allocating) singly/doubly linked lists and red-black trees -
  27. irq: utilities for writing interrupt handlers (allows moving data into interrupts, and sharing data between them) -
  28. managed: provides ManagedSlice, ManagedMap backed by either their std counterparts or fixed-size buffers for #![no_std]. -
  29. menu: A basic command-line interface library. Has nested menus and basic help functionality.
  30. mqtt-sn: Implementation of the MQTT-SN protocol -
  31. microfft: Embedded-friendly (no_std, no-alloc) fast fourier transforms -
  32. micromath: Embedded Rust math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis -
  33. nalgebra: general-purpose and low-dimensional linear algebra library -
  34. nom: parser combinator framework -
  35. null-terminated: generic null-terminated arrays -
  36. num-format: Crate for producing string representations of numbers, formatted according to international standards, e.g. "1,000,000" for US English -
  37. 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. -
  38. pc-keyboard: A PS/2 keyboard protocol driver. Transport (bit-banging or SPI) agnostic, but can convert Set 2 Scancodes into Unicode.
  39. qei : A qei wrapper that allows you to extend your qei timers from a 16 bit integer to a 64 bit integer. -
  40. qemu-exit: Quit a running QEMU session with user-defined exit code. Useful for unit or integration tests using QEMU. -
  41. RampMaker: Stepper Motor Acceleration Ramp Generator -
  42. register-rs: 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. -
  43. scroll: extensible and endian-aware Read/Write traits for generic containers -
  44. smbus-pec: Minimal portable System Management Bus Packet Error Code calculation algorithm.
  45. smoltcp: a small TCP/IP stack that runs without alloc.
  46. static-bytes: Help work with buffers without dynamic allocation. Implement traits from bytes crate.
  47. Stepper: Universal Stepper Motor Interface -
  48. tinybmp: No-std, no-alloc BMP parser for embedded systems. Introductory blog post -
  49. vga-framebuffer: A VGA signal generator and font renderer for VGA-less microcontrollers. Used by Monotron to generate 48 by 36 character display using 3 SPI peripherals and a timer.
  50. wyhash: A fast, simple and portable hashing algorithm and random number generator. -

WIP

Work in progress crates. Help the authors make these crates awesome!

  • light-cli: a lightweight heapless cli interface
  • OxCC: A port of Open Source Car Control written in Rust
  • Rubble: A pure-Rust embedded BLE stack

Firmware projects

  • anne-key: Alternate keyboard firmware for the Obins ANNE Pro

Old books, blogs and training materials

These materials may be outdated and reflect earlier practices, but might still be useful for reference.

License

This list is licensed under

Code of Conduct

Contribution to this crate is organized under the terms of the Rust Code ofConduct, the maintainer of this crate, the Resources team, promisesto intervene to uphold that code of conduct.

  • Rust语言gRPC入门 Intro to gRPC with Rust https://dev.to/anshulgoyal15/a-beginners-guide-to-grpc-with-rust-3c7o 这个小哥Anshul Goyal写了一个关于gRPC入门的教程,有兴趣学习的同学们可以看看。很不错! 内容提纲: Introduction Protocol Buffer Rust an

  • 关于创建「更小的」Rust的思考 #rust 官方核心团队成员无船大佬新博文,针对社区中有些人喜欢Rust但还没有真正热爱Rust的人提出的看法「能否创造一个更小化更简单的更易于使用的Rust呢」所做的回应? 发出此类问题的人,最想改变Rust的一个想法就是给Rust增加垃圾回收,但其实这是错误的。因为他们根本不明白Rust语言的本质。Rust的核心是:代数数据类型、RAII、「别名 xor 可变

  • 本文时间:2018-11-21,作者: krircc, 简介:天青色 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 Rust中文社区首页 Rust中文社区Rust文章栏目 知乎专栏Rust语言 Rust 编程语言有很多特质,但 一个很大的优势是良好的文档资源,你可以在这里找到官方文档.本文重点介绍官方Rust语言社区和Rust中文社区 目前Rust并没有官方中文社区,这就是为什么

 相关资料
  • The embedded component removes fullscreen CSS styles from A-Frame’s <canvas>element, making it easier to embed within the layout of an existing webpage. Embedding removes the default fixed positioning

  • Figure not available... Figure not available... So you've written a masterpiece, a class in a class of its own, and you'd like to share it with the world. But, being a responsible developer, you feel

  • Embedded InnoDB 是为开发人员、独立软件开发商提供的高性能、高可靠性的嵌入式数据库服务器。Embedded InnoDB 并不和 MySQL 运行在一起,也不是 MySQL 的存储引擎和插件,它是为嵌入到应用程序里提供低级的数据管理服务功能的。

  • 面试要点记录 主要涉及到嵌入式软件开发、嵌入式驱动开发、IOT开发、git等知识点。最新的请参考wiki和我的个人博客 要点 c基础知识 数据结构(链表 hash表 排序算法 设计模式等) 外设(串口 网口 i2s i2c spi sdio等) ARM cortex-m0 m3 m4 A8等芯片架构 操作系统(内存管理 进程管理 实时性要求 任务间通讯等) tcpip协议栈(tcpip模型 分层结

  • Embedded Jopr 是基于 Web 的应用,可以管理和监控 JBoss Application Server 的实例。 Embedded Jopr 是 Jopr 的分支,复用了大量 Jopr 的组件。Embedded Jopr 的最终目标是替代 jmx 和 web 工作台。可以作为配置和监控 JBoss AS 实例的工具。 示例视频: demo video

  • slakbootEBS 是一个用来自动创建可启动的嵌入式系统的开发工具包,基于 Slackware 和 Busybox 。该工具主要面向使用了闪存存储的 i486 和 ARM 系统。提供各种工具、脚本、文档和 i486、PXA250 上的一些打包程序。