vesperW · 3月13日

几款适用单片机的 Bootloader

随着物联网的发展,加上 MCU 外设/功能越来越丰富、存储资源也越来越多,在线更新 MCU 固件成了很多嵌入式产品的重要功能。

今天分享几款适用于 MCU 的 Bootloader,看看你们用过哪些?

MCUboot

MCUboot 顾名思义,针对 MCU 的 boot,它是一款适用于 32 位微控制器的安全引导加载程序(软件框架)。而且,这款 MCUboot 开源、并遵循 Apache License 2.0 开源协议。

开源地址:

https://github.com/mcu-tools/...

image.png

MCUBoot 是一个开源的、跨平台的 Bootloader,支持多种 ARM Cortex-M 系列单片机。MCUboot  提供了安全的固件更新机制,支持加密和签名验证,适用于物联网设备。它不依赖于任何特定的操作系统和硬件,主要跟芯片的 Flash 结构密切相关。

MCUboot 主要特点:

  • 完全开源
  • 多种升级模式
  • 对固件安全校验
  • 可异常恢复

官方网站:

http://www.trustedfirmware.org/

Image

官方提供了许多文档资料,我之前也给大家分享了MCUboot 的几种模式,感兴趣的同学可以点击进去看下。

OpenBLT

OpenBLT 是一款适用于常见 8 位、16 位、32 位等众多单片机的 Bootloader。

默认情况下,它支持 RS232、CAN、USB、TCP/IP、Modbus RTU 等单片机常见通信协议。并附带易于使用的 MicroBoot PC 工具,用于启动和监控固件更新。同时,还支持直接从 SD 卡执行固件更新。

Image

Image

Image

开源地址:

https://github.com/feaser/ope...

https://sourceforge.net/proje...

Image

OpenBLT 特点:

  • 开源免费,提供完整源代码
  • 包括用户友好的 PC 下载实用程序
  • 易于移植到不同的微控制器
  • ROM 占用空间小
  • 高度可配置
  • 有序且文档齐全的代码
  • 支持从本地连接的存储(如 SD 卡)进行软件更新
  • 可扩展以支持额外的存储器,例如串行 EEPROM 或外部 Flash
  • 支持常见的通信接口,如 RS232、CAN、TCP/IP、USB 和 Modbus RTU
  • 可与 STM32、XMC4、XCM1、Tricore、HCS12 和其他基于 ARM Cortex 的微控制器配合使用

OpenBLT 遵循  GNU GPL V3 开源协议

Image

官方给了一个 OpenBLT 的介绍视频,大家可以观看下:

image.png

Tiny Bootloader

Tiny Bootloader 顾名思义,它是一款微小(轻量级)的 Bootloader,适合于 8 位(AVR)、32 位单片机等资源有限的单片机,只需要 2KB ROM 即可。

开源地址:

https://github.com/jaz303/tin...

Image

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...

Image

该 bootloader 由以下组件组成:

  • wolfCrypt,用于验证镜像的签名
  • 一个极简的硬件抽象层,为支持的目标提供了实现,该目标负责特定 MCU 上的 IAP 闪存访问和时钟设置
  • 核心引导加载程序
  • 应用程序用于与引导加载程序 osrc/libwolfboot.c 交互的小型应用程序库

这款程序也是号称安全的 Bootloader,没有动态内存分配机制,也没有链接到除 wolfCrypt 之外的任何标准 C 库。

END

作者:strongerHuang
来源:strongerHuang

推荐阅读

欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式客栈专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
2914
内容数
341
分享一些在嵌入式应用开发方面的浅见,广交朋友
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息