Writing embedded firmware using Rust

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • hubris

    A lightweight, memory-protected, message-passing kernel for deeply embedded systems.

  • In addition to Cliff's talk/blog -- which are absolutely outstanding -- I would recommend listening to the Twitter Space we did on Hubris and Humility last week.[0] It was a really fun conversation, and it also serves as a bit of a B-side for the talk in that it goes into some of the subtler details that we feel are important, but didn't quite rise to the level of the presentation. And of course, be sure to check out the source itself![1][2]

    [0] https://www.youtube.com/watch?v=cypmufnPfLw

    [1] https://github.com/oxidecomputer/hubris

    [2] https://github.com/oxidecomputer/humility

  • humility

    Debugger for Hubris

  • In addition to Cliff's talk/blog -- which are absolutely outstanding -- I would recommend listening to the Twitter Space we did on Hubris and Humility last week.[0] It was a really fun conversation, and it also serves as a bit of a B-side for the talk in that it goes into some of the subtler details that we feel are important, but didn't quite rise to the level of the presentation. And of course, be sure to check out the source itself![1][2]

    [0] https://www.youtube.com/watch?v=cypmufnPfLw

    [1] https://github.com/oxidecomputer/hubris

    [2] https://github.com/oxidecomputer/humility

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • atsamd

    Target atsamd microcontrollers using Rust

  • The embedded-hal project supplies these for a wide variety of controllers, for SAMD specifically, https://github.com/atsamd-rs/atsamd .

  • stm32-rs

    Embedded Rust device crates for STM32 microcontrollers

  • Specifically these Rust register definitions are being auto-generated using SVD files published by the chip vendors (https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html). For stm32 for example there are the auto-generated register definitions: https://github.com/stm32-rs/stm32-rs and then the HAL layers on top that try to build easy to use tools on top of the registers (e.g. an SPI or USART type with write and read functions). e.g. https://github.com/stm32-rs/stm32f4xx-hal for the stm32f4xx line

  • stm32f4xx-hal

    A Rust embedded-hal HAL for all MCUs in the STM32 F4 family

  • Specifically these Rust register definitions are being auto-generated using SVD files published by the chip vendors (https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html). For stm32 for example there are the auto-generated register definitions: https://github.com/stm32-rs/stm32-rs and then the HAL layers on top that try to build easy to use tools on top of the registers (e.g. an SPI or USART type with write and read functions). e.g. https://github.com/stm32-rs/stm32f4xx-hal for the stm32f4xx line

  • esp32

    Discontinued Peripheral access crate for the ESP32 (by esp-rs)

  • esp32-hal

    Discontinued A hardware abstraction layer for the esp32 written in Rust.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • bounded-registers

    Using Type-Level Programming in Rust to Make Safer Hardware Abstractions

  • meta-raspberrypi

    Yocto/OE BSP layer for the Raspberry Pi boards

  • Arduino

    Arduino IDE 1.x (by arduino)

  • As suggested, one way is to look into the porting Rockbox firmware for your MP3 player. However given that you do not have any background in embedded, I don't think it will be a easy path.

    Would suggest that you try using the Arduino or RaspberryPI; these platforms are widely used, and you would be able to easily get help if you get stuck.

    Build a simple project like a weather station or clock, which will keep you focused on a "hard" goal.

    https://www.arduino.cc

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts