#bootloader #update #partition #firmware #applications #embassy

no-std embassy-boot

一种轻量级的引导加载程序,支持以电力故障安全的方式更新固件,具有试验引导和回滚功能

5个版本 (3个重大更新)

0.3.0 2024年8月5日
0.2.0 2024年1月11日
0.1.1 2022年11月25日
0.1.0 2022年2月11日
0.0.0 2022年2月9日

#1495 in 嵌入式开发

Download history 107/week @ 2024-04-27 36/week @ 2024-05-04 42/week @ 2024-05-11 20/week @ 2024-05-18 25/week @ 2024-05-25 75/week @ 2024-06-01 42/week @ 2024-06-08 69/week @ 2024-06-15 71/week @ 2024-06-22 31/week @ 2024-06-29 136/week @ 2024-07-06 52/week @ 2024-07-13 182/week @ 2024-07-20 188/week @ 2024-07-27 258/week @ 2024-08-03 42/week @ 2024-08-10

每月678次下载
用于 3 crate

MIT/Apache

345KB
7.5K SLoC

embassy-boot

一个 Embassy 项目。

一种轻量级的引导加载程序,支持以电力故障安全的方式更新固件,具有试验引导和回滚功能。

引导加载程序可以作为库使用,也可以通过从链接脚本派生的默认配置直接烧录。

按照设计,引导加载程序不提供任何网络功能。可以通过用户应用程序提供获取新固件的网络功能,使用引导加载程序作为库更新固件,或者作为库使用并添加此功能。

概述

引导加载程序将存储空间划分为4个主要分区,这些分区在创建引导加载程序实例时或在链接脚本中可配置

  • BOOTLOADER - 引导加载程序放置的位置。引导加载程序本身大约消耗8KB的闪存,但如果您需要调试它并且有空间,增加到24KB将允许您使用probe-rs运行引导加载程序。
  • ACTIVE - 主应用程序放置的位置。引导加载程序将尝试在此分区的开始处加载应用程序。此分区所需的最小大小是您的应用程序大小。
  • DFU - 要交换的应用程序放置的位置。此分区由应用程序写入。此分区必须比ACTIVE分区至少大1页。
  • BOOTLOADER STATE - 引导加载程序存储当前状态的位置,描述是否需要交换活动和DFU分区。

对于任何分区,以下条件是必需的

  • 分区必须对齐到页大小。
  • 分区必须是页大小的倍数。

应用程序和引导加载程序的链接脚本看起来很相似,但引导加载程序的FLASH区域必须指向引导加载程序分区,应用程序的ACTIVE分区。

有关引导加载程序的更多详细信息,请参阅文档

硬件支持

引导加载程序支持在不同crate中的不同硬件

  • embassy-boot-nrf - 用于nRF微控制器。
  • embassy-boot-rp - 用于RP2040微控制器。
  • embassy-boot-stm32 - 用于STM32微控制器。

依赖项

~1.5–2.8MB
~56K SLoC