#embedded-devices #dfu #async #ota #no-std

no-std embedded-update

Firmware updates for embedded devices supporting multiple update services

14 releases (breaking)

0.12.0 Oct 6, 2023
0.11.0 Apr 26, 2023
0.10.0 Nov 28, 2022
0.6.1 Jun 22, 2022

#1707 in Embedded development

Download history 31/week @ 2024-02-19 14/week @ 2024-02-26 5/week @ 2024-03-11 206/week @ 2024-04-01

211 downloads per month
Used in drgdfu

Apache-2.0

44KB
1K SLoC

Firmware updates for embedded devices

CI crates.io docs.rs Matrix

The embedded-update crate implements a firmware update protocol for embedded devices connected to a firmware update service, which works in no_std (bare metal) environments.

Both the device to be updated and the update service are pluggable, so the protocol can be used with any device or service that implements the provided traits. This means you can use the library directly on an embedded device, or on a gateway that proxies multiple devices.

The library provides the InMemory and Serial reference implementations of the UpdateService trait, and the Simulator and Serial implementations for the FirmwareDevice trait.

Update service and device implementations can be added to embedded-update when types and traits for interacting with device flash and network connections are more widely available.

Supported update services

  • Serial - implements a serial update protocol for a device, that can be used over UART, USB Serial etc.
  • InMemory - implements a hard coded update service that serves an update from memory.

See drogue-device for additional update service implementations.

Supported devices

  • Serial - implements a serial update protocol allowing to talk to a device implementing this protocol over UART, USB Serial etc.
  • Simulated - implements a simulated device for testing update services.

See drogue-device for additional device implementations.

Minimum supported Rust version (MSRV)

embedded-update requires two features from nightly to compile when using the nightly flag.

  • async_fn_in_traits
  • impl_trait_projections

Dependencies

~1–2MB
~44K SLoC