在開發中,請注意:此固件目前處於開發階段。功能可能會更改,並且代碼可能包含錯誤。謹慎使用並報告您遇到的任何問題。
STM32微控制器的此引導加載程序為固件更新提供了堅固且功能豐富的解決方案。 Bootloader旨在通過內部USB或UART接口來促進固件更新,並利用外部SPI閃光燈臨時存儲固件。

雙插槽固件存儲:Bootloader在外部SPI Flash中管理兩個單獨的插槽,以存儲不同版本的固件。這允許具有回滾功能的安全固件更新。
固件回滾:如果發生更新故障,引導加載程序可以還原為先前的工作固件,以確保設備保持運行。
CRC32驗證:使用CRC32檢查驗證了SPI Flash中存儲的每個固件,以確保數據完整性並防止損壞的固件被執行。
加密存儲:Bootloader將所有存儲在SPI Flash中的固件數據以加密形式存儲,從而增強了安全性,以防止未經授權的訪問。
版本管理:Bootloader可以報告當前的固件版本,幫助維護和跟踪設備上部署的固件版本。
外部Python腳本:提供了Python腳本,以幫助將新固件加載到設備上。該腳本還促進了版本報告和其他引導程序相關的操作。
FW FILE ),並連接至關重要的元數據,例如固件版本,固件名稱,固件ID,構建時間和日期到輸出文件( BIN FILE )。Lock Bin工具將這些輸入與固件文件相結合,並加密包裝以確保其在傳輸過程中的安全性。BIN FILE ),它與嵌入式元數據一起安全地包含加密的固件。.fw文件,其中包含所有元數據,包括構建時間和日期。Host App負責將加密的固件文件傳輸到微控制器。.fw文件,提取必要的元數據以記錄或驗證目的,並通過COM端口與微控制器建立連接(例如,USB/UART)。Host App接收加密的固件和元數據。該管道安全地處理固件更新,確保從加密到安裝過程的過程的完整性。 .fw文件中的構建時間和日期的添加為每個固件版本提供了進一步的可追溯性。
克隆這個存儲庫:
git clone https://github.com/mayankpatel97/STM32-SPIFLASH-UART-BOOTLOADER.git
cd STM32-SPIFLASH-UART-BOOTLOADER使用您的首選IDE(例如,STM32Cubeide)或通過命令行配置引導加載程序。
構建Boot Loader項目,然後將其刷到您的STM32微控制器上。
通過USB或UART將STM32設備連接到計算機。
運行提供的Python腳本以加載新固件:
python firmware_loader.py --port /dev/ttyUSB0 --file firmware.bin該腳本將自動處理傳輸,驗證和版本管理。
成功加載固件後,Bootloader將執行CRC16檢查器,並在檢測到錯誤時啟動到新固件中或還原為上一個版本。
如果新加載的固件出現問題,則引導加載程序會自動恢復到另一個插槽中的先前固件,以確保設備保持運行。
要檢查當前運行的固件版本,請使用以下命令:
python firmware_loader.py --port /dev/ttyUSB0 --version該項目是根據MIT許可證獲得許可的 - 有關詳細信息,請參見許可證文件。
通過提交拉動請求或為任何錯誤或功能請求開頭問題,可以隨意為該項目做出貢獻。
特別感謝開源社區提供的工具和庫有助於開發此引導程序。