Crate embedded_update
source ·Expand description
Firmware updates for embedded devices
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
Modules
- Implementations of the
FirmwareDevice
trait. - Implementations of the
UpdateService
trait.
Structs
- Represents a serde serializeable byte slice.
- The current status of the firmware on a device
- The updater process that uses the update service to perform a firmware update check for a device. If the device needs to be updated, the updater will follow the update protocol
- Represents the current state of firmware and firmware being written on a device.
- The status of the firmware being written to a device.
- Configuration for the updater task.
Enums
- Represents a command issued from the update service to a device.
- The device status as determined after running the updater.
- The error types that the updater may return during the update process.
Traits
- Represents a device that can be updated by a
FirmwareUpdater
. - Type representing the firmware version
- Trait for the firmware update service.