随着物联网的发展,加上 MCU 外设/功能越来越丰富、存储资源也越来越多,在线更新 MCU 固件成了很多嵌入式产品的重要功能。
今天分享几款适用于 MCU 的 Bootloader,看看你们用过哪些?
MCUboot
MCUboot 顾名思义,针对 MCU 的 boot,它是一款适用于 32 位微控制器的安全引导加载程序(软件框架)。而且,这款 MCUboot 开源、并遵循 Apache License 2.0 开源协议。
开源地址:
https://github.com/mcu-tools/...
MCUBoot 是一个开源的、跨平台的 Bootloader,支持多种 ARM Cortex-M 系列单片机。MCUboot 提供了安全的固件更新机制,支持加密和签名验证,适用于物联网设备。它不依赖于任何特定的操作系统和硬件,主要跟芯片的 Flash 结构密切相关。
MCUboot 主要特点:
- 完全开源
- 多种升级模式
- 对固件安全校验
- 可异常恢复
官方网站:
http://www.trustedfirmware.org/
官方提供了许多文档资料,我之前也给大家分享了MCUboot 的几种模式,感兴趣的同学可以点击进去看下。
OpenBLT
OpenBLT 是一款适用于常见 8 位、16 位、32 位等众多单片机的 Bootloader。
默认情况下,它支持 RS232、CAN、USB、TCP/IP、Modbus RTU 等单片机常见通信协议。并附带易于使用的 MicroBoot PC 工具,用于启动和监控固件更新。同时,还支持直接从 SD 卡执行固件更新。
开源地址:
https://github.com/feaser/ope...
或
OpenBLT 特点:
- 开源免费,提供完整源代码
- 包括用户友好的 PC 下载实用程序
- 易于移植到不同的微控制器
- ROM 占用空间小
- 高度可配置
- 有序且文档齐全的代码
- 支持从本地连接的存储(如 SD 卡)进行软件更新
- 可扩展以支持额外的存储器,例如串行 EEPROM 或外部 Flash
- 支持常见的通信接口,如 RS232、CAN、TCP/IP、USB 和 Modbus RTU
- 可与 STM32、XMC4、XCM1、Tricore、HCS12 和其他基于 ARM Cortex 的微控制器配合使用
OpenBLT 遵循 GNU GPL V3 开源协议。
官方给了一个 OpenBLT 的介绍视频,大家可以观看下:
Tiny Bootloader
Tiny Bootloader 顾名思义,它是一款微小(轻量级)的 Bootloader,适合于 8 位(AVR)、32 位单片机等资源有限的单片机,只需要 2KB ROM 即可。
开源地址:
https://github.com/jaz303/tin...
Tiny Bootloader 支持 UART、SPI、I2C 等常见的通信。源码其实挺简单,定义了一些常见的读写、页大小等。
Tiny Bootloader 软件框架如下:
// MACRO DEFINITIONS HERE
char bootloader_requested() {
// check if bootloader has been requested (e.g. button press, GPIO low, etc)
return 0;
}
void bootloader_init() {
// get ready to enter bootloader; enable comms channel etc.
}
#include "tiny_bootloader.h"
#define TINY_BOOTLOADER_IMPL
#include "tiny_bootloader.h"
int main() {
if (bootloader_requested()) {
bootloader_init();
bootloader_run(); // defined in tiny_bootloader.h
} else {
asm("JMP 0"); // jump to main program
}
while (1);
}
wolfBoot
wolfBoot 是一款开源的、轻量级的安全 Bootloader,它是完全独立的应用程序,适用于 32 位 MCU 操作系统或裸机项目。
开源地址:
https://github.com/wolfSSL/wo...
该 bootloader 由以下组件组成:
- wolfCrypt,用于验证镜像的签名
- 一个极简的硬件抽象层,为支持的目标提供了实现,该目标负责特定 MCU 上的 IAP 闪存访问和时钟设置
- 核心引导加载程序
- 应用程序用于与引导加载程序 osrc/libwolfboot.c 交互的小型应用程序库
这款程序也是号称安全的 Bootloader,没有动态内存分配机制,也没有链接到除 wolfCrypt 之外的任何标准 C 库。
END
作者:strongerHuang
来源:strongerHuang
推荐阅读
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。