The Embedded Working Group Newsletter - 22
2020-01-01This is the 22nd newsletter of the Embedded WG where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help!
Discuss on #rust-embedded:matrix.org, users.rust-lang.org, on twitter, or on reddit!
If you want to mention something in the next newsletter, send us a pull request!
Highlights
- @andre-richter added a new tutorial for the
Operating System development tutorials in Rust on the Raspberry Pi
series:- Tutorial 13: Integrated Testing - Kernel
Unit tests
,Integration tests
andConsole tests
usingQEMU
.
- Tutorial 13: Integrated Testing - Kernel
- @jamesmunns sketched out a few introductory notes about foundational Embedded Rust Crates like
r0
,cortex-m
,PAC
s, andHAL
s. See part 1 and part 2 on Twitter! - @jamesmunns wrote about the cost of Formatting in Embedded Rust as part of the #rust2020 effort, and how to reduce code size while maintaining panic debug-ability
- Craig Bishop wrote an overview of Getting Started on the STM32L0, which contains an excellent breakdown of what makes up an Embedded Rust project
Embedded Projects
-
@andre-richter released v0.1.0 of
qemu-exit
. This library provides functions to gracefully exit a running QEMU session from within your Rust binary with an user-defined exit code. This can be used for unit or integration tests that run inside QEMU. Currently supportsaarch64
andx86_64
architectures. -
@eldruin released a platform-agnostic driver for the Si4703 FM radio turner (receiver) and published a blog post including a picture of an example setup.
-
@eldruin released a platform-agnostic driver for the PCA9685 PWM LED/Servo controller driver and published a blog post including a video of the device controlling RGB LEDs and several Servo motors simultaneously.
-
@eldruin released a platform-agnostic driver for Vishay's VEML6030 and VEML7700 ambient light sensors and published a blog post about it.
-
@nickray released
salty
(API, book, code), a library for fast Ed25519 signatures on Cortex-M4 and Cortex-M33 microcontrollers. It presents theed25519-dalek
API, but is self-contained and uses the fastest currently published field operations implementation, due to Bjoern Haase, based on theUMAAL
DSP instruction(a: u32, b: u32, c: u32, d: u32) -> (a * b + c + d): u64
. Testing is done on themusca-b1
Cortex-M33 microcontroller, simulated in QEMU v4. Additionally, a C API is included. -
@nickray released
littlefs2
(API, code), an idiomatic Rust API for thelittlefs
filesystem for microcontrollers, modeled afterstd::fs
. The upstream library claims to be resilient against power-loss, and supports features like dynamic wear-leveling with bad block detection, inline files for efficient use of storage, and custom user attributes on files and directories. -
@nickray released
nisty
(API, code), a companion library tosalty
with similar API, but for NIST P-256 signatures on Cortex-M4 and Cortex-M33 microcontrollers. It offers deterministic signatures, idiomatic conversions, and usesmicro-ecc
as backend implementation, which also hasUMAAL
DSP instruction optimizations. -
probe-rs has finally released 0.3.0 on crates.io. Its
cargo-flash
extension has improved by a large margin! Flashing speed has increased 10x and it is possible to virtually flash any ARM core thanks to the use of CMSIS-Pack flash algorithms.- You can create your own target description from a CMSIS-Pack with the use of target-gen
- Built in algorithms support the nRF51xxx, nRF91xxx, nRF52xxx, STM32F1xx, LPC8xx and LPC55S66 and LPC55S69 series using a DAPLink or an ST-Link.
- Please file a PR if you extracted an algorithm for your chip and tested it!
- We are looking for contributors. We have lots of non-ARM-specific stuff to do as well, such as improving erroring, useability and documentation including a webpage on the newly acquired probe.rs domain.
- Join us on #probe-rs:matrix.org
- 0.4.0 will finally feature GDB support :) Stay tuned!
If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to the next newsletter, we would love to show it off!
embedded-hal
Ecosystem Crates
As part of the Weekly Driver Initiative, crates that are part of the embedded-hal
ecosystem are now tracked in the Awesome Embedded Rust repository. Here is a current snapshot of what is available there:
Type | Status | Count | Diff |
---|---|---|---|
Peripheral Access Crates | released | 39 | +7 |
HAL Impl Crates | released | 31 | +2 |
Board Support Crates | released | 19 | 0 |
Driver Crates Released | released | 33 | +3 |
Driver Crates WIP | WIP | 67 | -2 |
no-std crates | released | 32 | +2 |
no-std crates WIP | WIP | 3 | 0 |