Features currently supported:

  • support for ARM Cortex-M, Cortex-A micro-architectures
  • support for multi-slot partitioning of microcontroller flash memory. This allows us to implement the boot/update approach for bare-metal firmware updates.
  • support for Aarch64 linux booting
  • elliptic curve cryptography for integrity and authenticity verification using RustCrypto crates
  • a tiny hardware abstraction layer for non-volatile memory (i.e. flash) access.
  • anti-rollback protection via version numbering.
  • a fully memory safe core-bootloader implementation with safe parsers and firmware-update logic.
  • power-interruptible firmware updates along with the assurance of fall-back availability.
  • a signing utility to sign bare-metal firmware and fit-image(s), written in pure rust.

Features planned:

  • support for external flash devices (ex: SPI flash) and serial/console logging interfaces.
  • support for ARM TrustZone-M and A and certified secure hardware elements - microchip ATECC608a, NXP SE050, STSAFE-100
  • support for a highly secure and efficient firmware transport method over end-end mutually authenticated and encrypted channels via ockam-networking-libraries.