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.
What is it that we really want? At a broad level:
- To improve the absolute quality (functionality, safety, performance) of embedded software in the wild.
- To improve the productivity of embedded software development teams, by reducing the tangible and intangible costs of achieving a level of quality.
- To improve the experience for programmers developing for embedded systems.
- To make embedded systems programming more accessible for people that are not already embedded systems developers.
The WG is composed of a lead and 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.
@japaric is the current lead of the embedded WG. His functions are:
- Representing the WG in meetings where other Rust teams participate.
- Communicating the needs of the embedded Rust community (e.g. language features,
core
API stabilization) to the Rust teams. - Giving the casting vote on intra-WG decisions where no voting majority can be achieved.
The Cortex-M team develops and maintains the core of the Cortex-M crate ecosystem.
Projects maintained by this team.
alloc-cortex-m
cortex-m-quickstart
cortex-m-rt
cortex-m-semihosting
cortex-m
itm
panic-itm
panic-semihosting
The embedded Linux team develops and maintains the core of the embedded Linux crate ecosystem.
Projects maintained by the embedded Linux team
The HAL team develops and maintains crates that ease the development of Hardware Abstraction Layers, Board Support Crates and drivers.
Projects maintained by the HAL team.
The MS430 team develops and maintains the core of the MSP430 crate ecosystem.
Projects maintained by this team
The RISCV team develops and maintains the core of the RISCV crate ecosystem.
Projects maintained by this team
The resources team develops, maintains and curates resources on embedded Rust.
Projects maintained by the resources team
- Awesome embedded Rust
- The Discovery book
- The embedded Rust book
- The embedonomicon
- @rustembedded twitter
The tools team maintains and develops core embedded tools.
Projects maintained by the tools team
This list is the membership of the embedded WG when it was first created and it's kept around for historical purposes. All the people in this list are members of the rust-embedded organization and most of them are members of one of the teams listed above.
You can usually find the members of the embedded WG on the #rust-embedded channel (server: irc.mozilla.org).
These are other projects you may be interested in but that (currently) are not owned by the WG.
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.
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:
- clone this repo to your own personal one
- copy
0000-template.md
totext/0000-my-feature.md
(where "my-feature" is descriptive. Don't assign an RFC number yet) - fill in the details of your RFC in that file
- Open an pull request with this repository