@@ -13,7 +13,7 @@ essential resources, tasks, and priorities required to foster a robust Rust
1313ecosystem around their System-on-Chip (SoC).
1414
1515** Note:** For assistance with strategy in engaging with the community, we
16- recommend reaching out to the Embedded Rust Working Group (REWG) leads. They
16+ recommend reaching out to the Rust Embedded Working Group (REWG) leads. They
1717can provide valuable insights and support to help you navigate the process
1818effectively.
1919
@@ -43,10 +43,10 @@ resolve issues and improve the quality of the PACs.
4343### Flash Algorithms
4444
4545[ Flash Algorithms] ( https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/flashAlgorithm.html )
46- are integrated with debugging tools like ` probe-rs ` . They facilitate and speed
47- up firmware programming and debugging, streamlining development workflows.
48- Providing well-supported FlashAlgos will enhance the integration with these
49- tools and improve the overall developer experience.
46+ are integrated with debugging tools like [ probe-rs] ( https://probe.rs ) . They
47+ facilitate and speed up firmware programming and debugging, streamlining
48+ development workflows. Providing well-supported FlashAlgos will enhance the
49+ integration with these tools and improve the overall developer experience.
5050
5151### Vendor Tooling
5252
@@ -72,20 +72,23 @@ at the core of enabling Rust support.
7272
7373### Generate and Maintain PACs
7474
75- Multiple tools such as ` svd2rust ` , ` chiptool ` , ` raltool ` , and ` svd2pac `
76- automate the generation of PACs from register description files. Each tool has
77- its strengths, and selecting the right one depends on the requirements and the
78- complexity of the hardware.
75+ Multiple tools such as [ svd2rust] ( https://crates.io/crates/svd2rust ) ,
76+ [ chiptool] ( https://github.com/embassy-rs/chiptool ) ,
77+ [ raltool] ( https://github.com/imxrt-rs/imxrt-ral/tree/master/raltool ) , and
78+ [ svd2pac] ( https://github.com/Infineon/svd2pac ) automate the generation of PACs
79+ from register description files. Each tool has its strengths, and selecting the
80+ right one depends on the requirements and the complexity of the hardware.
7981
8082### Develop and Maintain HAL Crates
8183
82- Implement ` embedded-hal ` and ` embedded-hal-async ` traits in your HAL crates.
83- Adhering to these traits ensures compatibility across the Embedded Rust
84- ecosystem, enhancing interoperability. It is an essential goal that HALs use
85- Rust code rather than wrapping existing C code. An incremental porting
86- strategy, where Rust is used for all core functionality, but C with Rust
87- bindings is used for complex drivers, is acceptable, allowing for gradual
88- adoption and community contributions.
84+ Implement [ embedded-hal] ( https://crates.io/crates/embedded-hal ) and
85+ [ embedded-hal-async] ( https://crates.io/crates/embedded-hal-async ) traits in
86+ your HAL crates. Adhering to these traits ensures compatibility across the
87+ Embedded Rust ecosystem, enhancing interoperability. It is an essential goal
88+ that HALs use Rust code rather than wrapping existing C code. An incremental
89+ porting strategy, where all core functionality is implemented in Rust, but C
90+ with Rust bindings is used for complex drivers, is acceptable, allowing for
91+ gradual adoption and community contributions.
8992
9093Start with essential peripherals (clock, timer, GPIO) and expand progressively
9194(I2C, SPI, UART, etc.) based on community feedback. Release early and often to
@@ -95,11 +98,12 @@ engage the community and gather valuable insights for further development.
9598
9699- Ensure that crates are compatible with ` no_std ` environments, which are
97100 common in embedded systems without an operating system. Functionality that
98- needs ` alloc ` or ` std ` can be included when gated with Cargo "features."
99- - Make your crates available on [ crates.io] ( https://crates.io/ ) to maximize
101+ needs ` alloc ` or ` std ` can be included when gated with Cargo
102+ [ features] ( https://doc.rust-lang.org/cargo/reference/features.html ) .
103+ - Make your crates available on [ crates.io] ( https://crates.io ) to maximize
100104 visibility and ease of use for developers.
101- - Use semantic versioning to maintain consistency and predictability in your
102- releases.
105+ - Use [ semantic versioning] ( https://semver.org ) to maintain consistency and
106+ predictability in your releases.
103107- Prefer licenses like Apache 2.0 and MIT for their permissive nature, which
104108 encourages broader adoption and collaboration.
105109
@@ -116,11 +120,14 @@ resolution. Implement transparent processes for:
116120
117121### Facilitate Debugging and Testing
118122
119- The use of ` probe-rs ` is prevalent in the Embedded Rust ecosystem for debugging
120- and testing. Combined with debug-based facilities like ` defmt-rtt ` , which
121- offers logging capabilities for embedded systems, the Embedded Rust ecosystem
122- has developed numerous tools. ` probe-rs ` supports a wide range of target
123- architectures, debug interfaces, and debug probe protocols.
123+ The Embedded Rust ecosystem offers various tools used for debugging
124+ and testing, with [ probe-rs] ( https://probe.rs ) being one of the most widely
125+ used. [ probe-rs] ( https://probe.rs ) supports a wide range
126+ of target architectures, debug interfaces, and debug probe protocols.
127+ Combined with debug-based facilities like
128+ [ defmt-rtt] ( https://crates.io/crates/defmt-rtt ) , which provide logging
129+ capabilities for embedded systems, these tools form a robust foundation for
130+ development.
124131
125132Thorough testing ensures hardware-software reliability, and leveraging these
126133tools can significantly enhance development workflows.
@@ -138,8 +145,8 @@ practical starting points and learning aids.
138145
139146BSP crates are relevant when you need to provide board-specific configurations
140147and initializations. Unlike HALs, which focus on hardware abstraction, BSPs
141- handle the integration of multiple components for a specific board. Having both
142- BSP and HAL crates offers a layered approach, making it easier for developers
148+ handle the integration of multiple components for a specific board. Separation
149+ in BSP and HAL crates offers a layered approach, making it easier for developers
143150to build applications targeting a particular hardware board.
144151
145152### Project Templates
@@ -155,10 +162,12 @@ Embassy, RTIC, and others.
155162Offer guides on setting up development environments for Embedded Rust projects
156163with popular tools such as:
157164
158- - ` rust-analyzer ` : for Rust syntax highlighting and error checking.
159- - ` probe-rs ` : for flashing and debugging firmware.
160- - ` defmt ` : a logging framework optimized for embedded systems.
161- - ` defmt-test ` : testing utilities for ` defmt ` .
165+ - [ rust-analyzer] ( https://rust-analyzer.github.io ) : for Rust syntax
166+ highlighting and error checking.
167+ - [ probe-rs] ( https://probe.rs ) : for flashing and debugging firmware.
168+ - [ defmt] ( https://crates.io/crates/defmt ) : a logging framework optimized for
169+ embedded systems, including a test harness called
170+ [ defmt-test] ( https://crates.io/crates/defmt-test ) .
162171
163172Providing setup instructions for these tools will help developers integrate
164173them into their workflows, enhancing productivity and collaboration.
0 commit comments