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