几款适用单片机的Bootloader
关注+星标公众号,不错过精彩内容作者 | strongerHuang
微信公众号 | strongerHuang随着物联网的发展,加上MCU外设/功能越来越丰富、存储资源也越来越多,在线更新MCU固件成了很多嵌入式产品的重要功能。今天分享几款适用于MCU的Bootloader,看看你们用过哪些?MCUboot
MCUboot顾名思义,针对MCU的boot,它是一款适用于 32 位微控制器的安全引导加载程序(软件框架)。而且,这款MCUboot开源、并遵循Apache License 2.0开源协议。开源地址:https://github.com/mcu-tools/mcuboot
MCUBoot是一个开源的、跨平台的Bootloader,支持多种ARM Cortex-M系列单片机。MCUboot 提供了安全的固件更新机制,支持加密和签名验证,适用于物联网设备。它不依赖于任何特定的操作系统和硬件,主要跟芯片的Flash结构密切相关。MCUboot主要特点:完全开源多种升级模式对固件安全校验可异常恢复官方网站:http://www.trustedfirmware.org/
官方提供了许多文档资料,我之前也给大家分享了MCUboot的几种模式,感兴趣的同学可以点击进去看下。OpenBLT
OpenBLT 是是一款适用于常见 8 位、16 位、32 位等众多单片机的Bootloaderr。默认情况下,它支持RS232、CAN、USB、TCP/IP、Modbus RTU等单片机常见通信协议。并附带易于使用的 MicroBoot PC 工具,用于启动和监控固件更新。同时,还支持直接从 SD 卡执行固件更新。开源地址:https://github.com/feaser/openblt
或https://sourceforge.net/projects/openblt/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 BootloaderTiny Bootloader顾名思义,它是一款微小(轻量级)的Bootloader,适合于8位(AVR)、32位单片机等资源有限的单片机,只需要2KB ROM即可。开源地址:https://github.com/jaz303/tiny_bootloader
Tiny Bootloader支持UART、SPI、I2C等常见的通信。源码其实挺简单,定义了一些常见的读写、页大小等。Tiny Bootloader软件框架如下:// MACRO DEFINITIONS HEREchar 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);}
wolfBootwolfBoot 是一款开源的、轻量级的安全Bootloader,它是完全独立的应用程序,适用于32位MCU操作系统或裸机项目。开源地址:https://github.com/wolfSSL/wolfBoot
该bootloader由以下组件组成:
wolfCrypt,用于验证镜像的签名
一个极简的硬件抽象层,为支持的目标提供了实现,该目标负责特定 MCU 上的 IAP 闪存访问和时钟设置
核心引导加载程序
应用程序用于与引导加载程序 src/libwolfboot.c 交互的小型应用程序库
这款程序也是号称安全的Bootloader,没有动态内存分配机制,也没有链接到除 wolfCrypt 之外的任何标准 C 库。------------ END ------------●专栏《嵌入式工具》●专栏《嵌入式开发》●专栏《Keil教程》●嵌入式专栏精选教程关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。点击“阅读原文”查看更多分享。