Writing embedded firmware using Rust

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

Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarQube - Static code analysis for 29 languages.
  • 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

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • 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

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

  • esp32-hal

    A hardware abstraction layer for the esp32 written in Rust.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • 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