Arduino发布基于MCUboot的安全引导加载程序

原文链接:Arduino releases secure bootloader based on MCUboot 由Jean-Luc Aufranc撰写。
本文共计690字,预计阅读2分钟

Arduino 发布了基于MCUBoot的新引导加载程序,以增加 Arduino 产品的功能范围和固件安全性,第一个版本针对 Arduino Pro 系列中基于 STM32H7 的Arduino PortentaNicla Vision板。

该版本侧重于基于 Arduino Mbed OS 的开发板,但 MCUboot 与操作系统无关,它还可以与ZephyrNuttxApache mynewt 一起使用。Arduino公司为了确保过渡很容易,在 Arduino 板上保留了现有的 OTA 固件升级过程。

Arduino MCUboot
Arduino MCUboot

Arduino MCUboot 亮点:

  • 签名和加密更新 – MCUboot 支持在升级时即时加密/解密图像。它还将在启动sketch 之前检查计算的签名是否与嵌入在固件中的签名匹配。
  • 确认或恢复更新 – 更新后,新的sketch 可以在运行时更新 flash 的内容,将自己标记为 OK。如果一切按预期工作,则更改将是永久性的,但如果sketch 无法确认正常工作,MCUboot 将执行恢复交换并尝试引导旧sketch 。
  • Sketch bootstrap – 如果在主插槽中未找到有效固件,MCUboot 将在辅助插槽中搜索有效固件,如果有则将其加载到主插槽中。
  • 重置恢复 – 如果在交换操作过程中发生重置,两个固件在闪存中可能不连续。MCUboot 通过使用固件尾部来确定固件部分在 flash 中的分布方式并重新启动交换,从而从这种情况中恢复。
  • 向后兼容默认的 Arduino 引导加载程序 – 如果签名和加密密钥没有与 MCUboot 一起存储在 flash 中,则跳过sketch 签名验证,并且可以引导任何有效的sketch 。
Portenta H7 板上的固件分区
Portenta H7 板上的固件分区

Arduino 在宣布新引导加载程序的博客文章中详细介绍了固件更新机制。基本上,有两个分区,其中 SLOT 0 代表包含当前应用程序固件的flash分区,而 SLOT 1 代表包含更新的应用程序固件的flash分区。还需要一个额外的flash区域“SCRATCH”来支持MCUboot 交换擦除算法。在 Portenta H7 板上,SLOT 0 分区位于内部flash中,而 SLOT 1 (update.bin) 和 SCRATCH (scratch.bin) 分区/文件将位于外部QSPI flash中。

您可以在Github 上找到代码和更多详细信息,尤其是为 Portenta H7、 Portenta H7 LitePortenta H7 Lite Connected或 Nicla Vision 板的所有者切换到 Arduino MCUboot 引导加载程序的分步说明(更新skech、加密密钥生成、固件签名等)。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论