Expand description

Moonboot is a framework to build bootloaders for embedded devices, or other kinds of no_std Rust environments.

This crate contains implementations, macros and build.rs helpers for:

  • Partitioning of your memory into different sections
  • Exchange of the contents of those partitions via the bootloader
  • Signature/Checksum-checking of the partitions contents with an algorithm of your choice, because it is done in firmware, not in bootloader
  • Automatic Linker Script generation based on a Section/Parition Description in Rust Code

Re-exports

Modules

Common hardware abstractions and associated implementations

Shared state management between firmware and bootloader

Structs

Use this from your bootloader application and call boot() to do the magic, reading the current state via the State type and then jumping to the new image using the Jumper specified

Instantiate this in your application to enable mutation of the State specified in this and jump to the bootloader to apply any updates.

Type Definitions

Address type in RAM or ROM

Attribute Macros

Marker macro for a handler fn invoked shortly before jumping to a different image. Use this to uninitialize your hardware.