STM32微控制器的可自定義引導加載程序。該項目包括有關各種硬件的演示如何執行帶有FAT32文件系統外部SD卡上固件的應用程序進行編程。
每個示例使用位於lib/stm32-bootloader文件夾中的相同引導加載程序庫。這些示例位於projects文件夾中,它們配備了一個單獨的專用讀數文件,其中包含與該特定實現有關的描述。
更新: STM32L496-Discovery示例除了IAR EWARM之外,還使用GNU ARM嵌入式工具鏈(ARM GCC)來支持和構建該項目。查看項目README以獲取更多信息。
請參閱https://akospasztor.github.io/stm32-bootloader,以獲取Bootloader庫源代碼的完整文檔。
Repository
├── docs
├── drivers
│ ├── CMSIS
│ └── STM32L4xx_HAL_Driver
├── lib
│ ├── fatfs
│ └── stm32-bootloader
└── projects
├── STM32L476-CustomHw
├── STM32L496-CustomHw
└── STM32L496-Discovery
docs文件夾包含Bootloader源代碼和其他與文檔相關的靜態文件的生成文檔。
drivers文件夾包含CMSI(Cortex MicroController軟件接口標準)以及ST的HAL(硬件抽象層)驅動程序。
可以在lib/stm32-bootloader文件夾中找到Bootloader源代碼和相應的標頭文件。此外, lib文件夾還包含FATFS庫。
各種演示位於projects文件夾中。每個示例項目都包含一個分別位於標頭和源文件的include和source文件夾。編譯器和SDK特定文件位於其各自的子文件夾中。此外,每個示例項目都有一個專用的讀數文件,詳細說明了其功能。
該存儲庫包含以下示例。
| 微控制器 | 硬體 | 項目路徑 |
|---|---|---|
| STM32L476VG | 風俗 | Projects/STM32L476-CUSTOMHW |
| STM32L496VG | 風俗 | Projects/STM32L496-CUSTOMHW |
| STM32L496AG | 32L496GDISCOVERY | 項目/STM32L496挖掘 |
可以輕鬆自定義和量身定制引導加載程序,即在各種接口上執行固件更新,甚至可以實現無線(OTA)更新,如果硬件包含了無線通信模塊。為了執行成功的應用程序內編程,必須保留以下序列:
Bootloader_Init()初始化閃存。Bootloader_Erase()擦除應用程序空間。Bootloader_FlashBegin()來準備編程。Bootloader_FlashNext()函數來執行編程。編程過程需要將8個字節(雙詞)立即編程到Flash中。此功能自動增加了編寫數據的地址。Bootloader_FlashEnd()來最終確定編程。應用圖像必須以二進制格式。如果啟用了校驗和驗證,則二進製文件必須在圖像末端包括校驗和值。創建應用程序映像時,必須在整個圖像(校驗和區域除外)中計算出校驗和,該參數以下參數:
重要說明:
system_stm32xxxx.c文件中的0x0000,默認情況下。必須禁用這一點(可以將引導加載程序配置為在跳轉前執行矢量表重置),或者手動將矢量表偏移寄存器(VTOR)設置為適當的偏移值,這是應用程序空間的開始地址。有關更多信息,請參閱[1]。可以在bootloader.h文件中廣泛配置引導加載程序。該文件包括與可配置參數和定義有關的詳細註釋和描述。
[1] PM0214,“ STM32F3系列,STM32F4系列,STM32L4系列和STM32L4+系列Cortex®-M4編程手冊”,http://wwww.st.com/resource/Resource/EN/progensming_man/programming_manual/dm00046982.pdm00046982.pdf