微信公眾號 | strongerHuang
隨著物聯(lián)網(wǎng)的發(fā)展,加上MCU外設(shè)/功能越來越豐富、存儲資源也越來越多,在線更新MCU固件成了很多嵌入式產(chǎn)品的重要功能。
今天分享幾款適用于MCU的Bootloader,看看你們用過哪些?
MCUboot
MCUboot顧名思義,針對MCU的boot,它是一款適用于 32 位微控制器的安全引導(dǎo)加載程序(軟件框架)。而且,這款MCUboot開源、并遵循Apache License 2.0開源協(xié)議。
開源地址:https://github.com/mcu-tools/mcuboot
MCUBoot是一個開源的、跨平臺的Bootloader,支持多種ARM Cortex-M系列單片機(jī)。MCUboot?提供了安全的固件更新機(jī)制,支持加密和簽名驗證,適用于物聯(lián)網(wǎng)設(shè)備。它不依賴于任何特定的操作系統(tǒng)和硬件,主要跟芯片的Flash結(jié)構(gòu)密切相關(guān)。
MCUboot主要特點:完全開源多種升級模式對固件安全校驗可異常恢復(fù)
官方網(wǎng)站:http://www.trustedfirmware.org/
官方提供了許多文檔資料,我之前也給大家分享了MCUboot的幾種模式,感興趣的同學(xué)可以點擊進(jìn)去看下。
OpenBLT
OpenBLT 是是一款適用于常見 8 位、16 位、32 位等眾多單片機(jī)的Bootloaderr。
默認(rèn)情況下,它支持RS232、CAN、USB、TCP/IP、Modbus RTU等單片機(jī)常見通信協(xié)議。并附帶易于使用的 MicroBoot PC 工具,用于啟動和監(jiān)控固件更新。同時,還支持直接從 SD 卡執(zhí)行固件更新。
開源地址:https://github.com/feaser/openblt
或https://sourceforge.net/projects/openblt/
OpenBLT特點:
開源免費,提供完整源代碼
包括用戶友好的 PC 下載實用程序
易于移植到不同的微控制器
ROM 占用空間小
高度可配置
有序且文檔齊全的代碼
支持從本地連接的存儲(如 SD 卡)進(jìn)行軟件更新
可擴(kuò)展以支持額外的存儲器,例如串行 EEPROM 或外部Flash
支持常見的通信接口,如 RS232、CAN、TCP/IP、USB 和 Modbus RTU
可與 STM32、XMC4、XCM1、Tricore、HCS12 和其他基于 ARM Cortex 的微控制器配合使用
OpenBLT 遵循?GNU GPL V3 開源協(xié)議。
官方給了一個OpenBLT的介紹視頻,大家可以觀看下:
?Tiny BootloaderTiny Bootloader顧名思義,它是一款微小(輕量級)的Bootloader,適合于8位(AVR)、32位單片機(jī)等資源有限的單片機(jī),只需要2KB ROM即可。
開源地址:https://github.com/jaz303/tiny_bootloader
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);
}
wolfBootwolfBoot 是一款開源的、輕量級的安全Bootloader,它是完全獨立的應(yīng)用程序,適用于32位MCU操作系統(tǒng)或裸機(jī)項目。
開源地址:https://github.com/wolfSSL/wolfBoot
該bootloader由以下組件組成:
wolfCrypt,用于驗證鏡像的簽名
一個極簡的硬件抽象層,為支持的目標(biāo)提供了實現(xiàn),該目標(biāo)負(fù)責(zé)特定 MCU 上的 IAP 閃存訪問和時鐘設(shè)置
核心引導(dǎo)加載程序
應(yīng)用程序用于與引導(dǎo)加載程序 src/libwolfboot.c 交互的小型應(yīng)用程序庫
這款程序也是號稱安全的Bootloader,沒有動態(tài)內(nèi)存分配機(jī)制,也沒有鏈接到除 wolfCrypt 之外的任何標(biāo)準(zhǔn) C 庫。