This Year in Embedded Rust: 2021
2021-12-28As 2021 draws to a close, we thought we'd take a look back at what's happened over the last year in Embedded Rust, both within the working group and in the larger community.
Meetings
We continued our weekly Rust Embedded Working Group meetings on our Matrix channel. They take place at 8pm Berlin time every Tuesday, and are open to the public. You can find all the minutes on Github.
Newsletters
The blog saw five new newsletters posted, keeping everyone up to date with what's hot in Embedded Rust. Make sure you bookmark or subscribe with your favourite RSS reader so you never miss an update! Please do also keep your contributions coming, as we love hearing about what everyone gets up to in Embedded Rust outside of the official Rust Embedded Working Group projects.
Platform Support
Outside of the working group, platform support communities provide vendor-specific support for particular microcontrollers and development boards.
2021 saw a brand-new microcontroller vendor hit the scene - Raspberry Pi! Their debut RP2040 microcontroller has two Cortex-M0 cores, and certainly made us all think about how we can try to make our software safe to use on multi-core systems. A new rp-rs community sprang up and continues to make good progress supporting all areas of the RP2040 with good quality examples.
This year also saw Espressif officially adopt Rust and they hired @mabez from the esp-rs community to help out!
Other platform support communities continued to develop this year:
- atsamd-rs for Atmel ARM SAM-D and SAM-E microcontrollers (Matrix chat)
- avr-rust for Atmel AVR microcontrollers (Matrix chat)
- esp-rs for Espressif ESP8266 and ESP32 Wi-Fi chips (Matrix chat)
- imxrt-rs for NXP ARM iMX.RT microcontrollers
- lpc55 for NXP ARM LPC55xx microcontrollers (Matrix chat)
- nrf-rs for Nordic ARM nRF51, 52 and 9160 Bluetooth/LTE devices (Matrix chat)
- riscv-rust for all kinds of RISC-V devices
- rp-rs for Raspberry Pi's RP2040 microcontroller (Matrix chat)
- stm32-rs for all of ST Micro's 32-bit ARM microcontrollers (Matrix chat)
If you're a platform support community not on the list please get in touch, we'd love to hear from you!
Other Embedded Projects
While not officially part of the Embedded Working Group, the following projects all continued to develop over 2021:
- The concurrency framework RTIC (GitHub, Matrix) hit version 1.0!
- The async framework Embassy (GitHub, Matrix) has been under heavy development and now supports STM32, nRF and RP2040 platforms.
- The debug and programming library and tools from probe-rs (GitHub, Matrix) released v0.11 and v0.12 of their library and tools including cargo-embed.
- The Knurling project (GitHub) has had several releases of their tools such as probe-run.
- The smoltcp embedded TCP/IP stack released v0.7 and v0.8, with many improvements including to the DHCP client and adding IEEE 802.15.4 support.
- embedded-graphics (Matrix), a graphics library for embedded applications, had a major new v0.7 release (see the migration notes).
- The Hubris RTOS and its companion debugger Humility, by Oxide Computer, had their first release.
Our Repositories
We continued to work on and maintain a number of key Embedded Rust repositories. The following repos all had commits during 2021:
- embedded-hal: The Embedded Hardware Abstraction Layer is a set of traits for describing common peripherals in a hardware-independent way. It continues its march towards 1.0 status, with a series of 1.0-alpha releases. It should hit 1.0 milestone some time in 2022! 120 commits over 27 files this year.
- discovery: This book on Discovering Embedded Programming using Rust had a re-write this year - it's now based around the BBC micro:Bit! 251 commits over 187 files this year.
- book: Our guide to all things Embedded Rust continues to be updated and improved, with 39 commits this year.
- embedonomicon: Our guide to all the low-down details on how to bring-up a new
#[no_std]
platform with Rust saw 15 commits this year. - svd2rust: This tool generates our 'Peripheral Access Crates' from a System View Description file of the chip provided by the manufacturer. 122 commits over 17 files this year.
- svd: The core libraries used by svd2rust and other tools to manipulate SVD files had 103 commits over 39 files this year.
- awesome-embedded-rust: Our list of the very best in Embedded Rust keeps growing with 97 commits this year.
- cortex-m, cortex-m-rt, and cortex-m-quickstart: Our platform support crates for the Arm Cortex-M architecture saw continued development, with 93 and 54 commits respectively, and a new v0.7 of cortex-m-rt released this year.
- cortex-a: Our platform support crate for the Arm Cortex-A architecture saw 25 commits this year.
- riscv and riscv-rt: Our platform support crates for the RISC-V architecture saw 74 and 12 commits respectively this year, with a v0.7 release of riscv.
- msp430 and msp430-rt: Our platform support crates for the MSP430 architecture.
- gpio-cdev, rust-spidev, rust-sysfs-gpio, rust-i2cdev, and linux-embedded-hal: Support for embedded Linux continued with 177 commits across these projects.
- r0 was a cross-platform initialisation library, but we deprecated it this year to move such initialisation into platform-specific libraries such as cortex-m-rt.