Coordination repository of the embedded devices Working Group (WG)
This repository issue tracker is used by the embedded WG to coordinate efforts towards making Rust a great choice for embedded development.
Want to get started with embedded development with Rust? Check out our embedded Rust book and the rest of our bookshelf.
Want to stay up-to-date with community progress? Check out our newsletter.
Join the discussion on Matrix! #rust-embedded:matrix.org
What is it that we really want? At a broad level:
At a high level we have two main tasks:
We work with the community to improve the embedded ecosystem.
We maintain and develop core crates in the embedded ecosystem ensuring that the development roadmap aligns with the needs of its users. You can find all the crates we maintain in the Organization section.
We develop and curate resources about embedded Rust development. Check our bookshelf!
We maintain and moderate the venues the embedded community uses to discuss. That includes this coordination repository and our Matrix room.
And, we serve as a bridge between the Rust teams and the embedded community.
Everyone can contribute to the embedded WG efforts! There are several ways to help out:
Join our weekly meetings on Matrix. We use these meetings as a faster, synchronous alternative to the RFC threads on GitHub. The agenda is posted in the matrix channel in advance to the meeting. Everyone is free to join the meeting and share their thoughts. You can also nominate an existing GH thread for discussion if you think it would benefit from a more synchronous discussion. The usual meeting time is Tuesdays, 8pm CET/CEST.
We have several teams focused on different areas: tooling, Cortex-M crates, etc. and each team maintains several projects (crates, docs and / or tools) that live under the rust-embedded organization. You can collaborate with the maintenance and development of these projects by becoming a project collaborator (consult with the team that owns the project) or by joining the team.
The WG is composed of several teams whose functions are defined in RFC #136. The embedded WG develops and maintains a large set of projects under the rust-embedded organization. This section lists all the teams and all the projects owned by the WG.
The functions of the core team are:
core
API
stabilization) to the Rust teams.The Cortex-A team develops and maintains the core of the Cortex-A crate ecosystem.
Projects maintained by this team.
aarch64-cpu
rust-raspberrypi-OS-tutorials
The Cortex-M team develops and maintains the core of the Cortex-M crate ecosystem.
Projects maintained by this team.
cortex-m-quickstart
cortex-m-rt
cortex-m-semihosting
cortex-m
itm
panic-itm
panic-semihosting
The Cortex-R team develops and maintains the core of the Cortex-R crate ecosystem.
This team is currently empty! Please get in touch via an issue or the Matrix chat if you are interested in helping to maintain the Cortex-R crates.
arm-dcc
cortex-r
panic-dcc
The embedded Linux team develops and maintains the core of the embedded Linux crate ecosystem.
Projects maintained by the embedded Linux team
gpio-cdev
gpio-utils
i2cdev
linux-embedded-hal
meta-rust-bin
spidev
sysfs-gpio
sysfs-pwm
The HAL team develops and maintains crates containing shared traits and related code that enables the development of hardware abstraction layers and drivers which can interoperate across all embedded Rust devices on all architectures.
Projects maintained by the HAL team.
embedded-dma
embedded-hal
nb
critical-section
The infrastructure team manages our domains, DNS records, e-mail aliases, etc.
Projects maintained by this team
rust-embedded-provisioning
The libs team manages library code that is not architecture-specific.
Projects maintained by this team
embedded-alloc
heapless
qemu-exit
volatile-register
The MS430 team develops and maintains the core of the MSP430 crate ecosystem.
Projects maintained by this team
msp430-quickstart
msp430-rt
msp430
The RISC-V team develops and maintains the core of the RISC-V crate ecosystem.
Projects maintained by this team
riscv-rust-quickstart
riscv-pac
riscv-rt
riscv-semihosting
riscv
The resources team develops, maintains and curates documentation, books, our social media accounts and websites, and similar resources on embedded Rust.
Projects maintained by the resources team
The tools team maintains and develops software for embedded development which typically runs on your development machine rather than the embedded targets themselves.
Projects maintained by the tools team
cargo-binutils
itm
svd-parser
svd2rust
The triage team is charge of keeping PR queues moving; they ensure no PR is left unattended.
The following alumni have put themselves into the hibernation state, due to being absent or busy for an extended amount of time. See ops/hibernating.md.
Each team can be privately contacted via the following e-mail addresses:
You can usually find the members of the embedded WG on the Rust Embedded Matrix room (#rust-embedded:matrix.org).
Our Matrix room is logged by on the bridged IRC channel, and you can find the logs at: https://libera.irclog.whitequark.org/rust-embedded/
These are other projects you may be interested in but that (currently) are not owned by the WG.
Several device specific communities exist that are not part of the working group. These communities maintain crates for peripheral access, hardware abstraction, examples, and more that are specific to a particular family of devices. The list below is not exhaustive and will be updated as device support increases.
embedded-hal
embedded-hal
is a project that aims to build a standard set of traits (interfaces) for I/O
functionality common in embedded devices: Serial, I2C, etc. with the goal of serving as a base for
building reusable driver crates, crates to interface with external components like sensors.
There are plenty of traits that still need to be designed, in particular ones that involve async I/O. Join the discussion and help us design the missing traits so that they'll fulfill your needs.
To put the embedded-hal
to test and to expand the embedded crates.io ecosystem we are running the
weekly driver initiative. The goal is to release a new no_std
, generic, embedded-hal
driver
crate every one or two weeks.
There's lots of cool devices that would be great to have drivers for. Join the initiative and help us grow the embedded crates.io ecosystem!
The community is building a curated list of crates useful for embedded development. In this list you'll find driver crates, board support crates and general purpose no-std crates. Help us improve this list by adding your crate via PR or by tackling any of our help wanted issues.
As an experiment the Rust lang user forum has gained a new embedded
category.
This is meant as a friendly exchange for anyone interested in embedded topics with Rust.
So if you want to discuss ideas, problems or solutions please feel free to chime in on existing topics or create a new one!
When the team deems it necessary the RFC process may be used to make decisions or to design processes, user interfaces, APIs, etc.
Learn more about the Rust's RFC process (which is the same as our own) here.
To create an RFC, simply:
0000-template.md
to text/0000-my-feature.md
(where "my-feature" is
descriptive. Don't assign an RFC number yet)