设备固件升级

概述

设备固件升级子系统提供必要的框架,用于在运行时升级基于 Zephyr 的应用程序映像。它目前由两个不同的模块组成:

DFU 子系统负责映像管理,但不涉及将映像发送到目标设备所需的传输或管理协议本身。有关这些协议和框架的信息,请参阅 设备管理 一节。

Flash 映像

作为设备固件升级(DFU)子系统一部分的 Flash 映像 API 在 Flash Stream 之上提供了一层抽象,以简化将固件映像块写入 Flash 的操作。

API 参考

Flash image API

MCUBoot API

提供 MCUboot API 用于获取应用程序映像的版本信息和启动状态。它允许为下一次启动选择应用程序映像和启动类型。

API Reference

MCUboot image control API

引导加载程序

MCUboot

Zephyr 直接兼容开源、跨 RTOS 的 MCUboot boot loader。它与 MCUboot 对接,并了解其所需的映像格式,因此当 Zephyr 使用 MCUboot 作为引导加载程序时,即可使用设备固件升级。源代码本身托管在 MCUboot GitHub Project 页面上。

要将 MCUboot 与 Zephyr 一起使用,需要考虑以下事项:

  1. 需要定义 MCUboot 所需的 Flash 分区;有关详细信息,请参阅 Flash 映射。

  2. 必须将 Flash 分区指定为选定的代码分区

/ {
   chosen {
      zephyr,code-partition = &slot0_partition;
   };
};
  1. 应用程序的 .conf 文件需要启用 CONFIG_BOOTLOADER_MCUBOOT Kconfig 选项,以便以兼容 MCUboot 的方式构建 Zephyr

  2. 需要在设备上构建并烧录 MCUboot 本身

  3. 可能需要采取预防措施,避免整片擦除 Flash,并将 Zephyr 应用程序映像烧录到正确偏移处(紧跟在引导加载程序之后)

有关将 MCUboot 与 Zephyr 一起使用的更详细信息,请参阅 MCUboot 网站上的 MCUboot with Zephyr 文档页面。