如何使用STM32微控制器的ST Open Bootloader

1.简介


ST Open Bootloader是提供应用程序内编程(IAP)的STM32微控制器的示例应用程序代码,在STM32Cube MCU包和GitHub中提供。它与STM32系统引导程序完全兼容,支持相同的通信接口和命令,也可与STM32CubeProgrammer一起使用。Open Bootloader作为示例代码提供,可用于构建自定义的引导加载程序。它允许将应用程序下载到内部用户存储器(闪存、SRAM、OTP),而不需要使用可用通信接口之一(USART、I2C、SPI、USB-DFU或FDCAN)的调试器。
Open Bootloader通过接口链接与主机(STM32CubeProgrammer或其他主机)通信,将固件下载到设备,以写入目标用户内存。Open Bootloader依赖STM32Cube HAL/LL驱动程序进行硬件系统初始化以及时钟和通信接口的配置。打开引导程序代码可以加载到用户闪存或SRAM中,采取必要的预防措施以避免擦除或损坏(即使用写保护功能)。Open Bootloader在非安全域中从用户Flash或SRAM使用以下资源在初始基地址执行:
  • 非安全内部闪存/SRAM1
  • 中断
  • 时钟和电源
  • 通信接口
  • GPIO公司
  • 系统刻度
  • IWDG公司

本文展示了如何在STM32Cube库包中找到ST Open Bootloader,并通过一个将其编程到STM32中并与STM32CubeProgramer一起使用的示例进行了说明。
 

2.先决条件示例

  • 硬件
    • Micro USB电缆:为板供电和编程
    • Type-C USB电缆:用于连接板载STM32G0的USB外围设备
    • STM32G0C1E-EV评估板
  • 软件
    • STM32管
    • STM32管式编程器


3.入门

ST Open Bootloader是STM32Cube Library软件包的一部分。此示例使用STM32G0C1评估板,Open Bootloader可在此处找到:
STM32Cube_FW_G0_Vx.x\Projects\STM32G0C1E-EV\Applications\OpenBootloader
提供了STM32CubeIDE、IAR EWARM和Keil uVision工具链的项目示例,而本文使用的是STM32CubeIDE。ST Open Bootloader支持各种外围接口(UART、I2C、SPI、CAN、USB DFU),STM32G0 System Memory Bootloader也是如此。本例将使用USB DFU。
 

4.步骤

  1. 下载并解压缩最新的STM32G0CubeG0固件库:

STM32CubeG0-适用于STM32G0系列的STM32Cube MCU封装(HAL、低层API和CMSIS、USB PD、文件。。。
  1. 打开ST Open Bootloader项目:

在Windows文件资源管理器中,双击STM32CubeIDE项目文件名“.project”,用于STM32CubeG0库中的ST Open Bootloader,该库已在此位置下载并解压缩:
STM32Cube_FW_G0_V.1.5.0\项目/STM32G0C1E-EV\Applications\OpenBootloader/STM32CubeIDE
然后,该项目将显示在项目资源管理器中,如下所示:

 
  1. 构建项目,进入调试模式并运行代码


进入调试会话:这将代码编程到闪存中,然后启动调试会话

通过终止调试会话来退出调试会话。
默认情况下,引导模式已设置为从Flash执行。
重置板,ST Open Bootloader将开始执行。ST Open Bootloader在检测阶段开始,检查各种通信外围接口是否存在寻找主机连接的活动。
将USB Type C电缆插入连接到STM32G0母板的CN7子板。USB主机将开始通信,将板枚举为设备管理器中确认的USB DFU设备:

打开STM32CubeProgammer:
 
  • 选择STM32CubeProgamer中的USB接口以通过USB建立连接:


确认USB连接已建立,如下所示。如果不是,请单击刷新按钮以下为:

现在单击“连接”按钮进行连接:

连接完成后,闪光灯的内容将显示如下:

虽然现在可以读取、擦除或写入闪存,但主要目标是将新的应用程序映像上载到STM32G0中。
 

5.链接

STM32G0C1VE-主流Arm Cortex-M0+32位MCU,最高512KB闪存,144KB RAM,6x USART,定时器。。。
STM320x1基于Arm®的高级32位MCU-参考手册
STM32CubeIDE-STM32集成开发环境-STMicroelectronics
STM32CubeG0-适用于STM32G0系列的STM32Cube MCU封装(HAL、低层API和CMSIS、USB PD、文件。。。
STM32CubeProg-适用于所有STM32-STMicroelectronics的STM32Cube编程器软件
STM32G0C1E-EV-带STM32G0C11VE MCU的评估板-STMicroelectronics
AN2606-STM32微控制器系统内存引导模式
AN3155-STM32引导加载程序中使用的USART协议
AN4221-STM32引导加载程序中使用的I2C协议
AN4286-STM32引导加载程序中使用的SPI协议
AN3156-STM32引导加载程序中使用的USB DFU协议
AN5405-STM32引导加载程序中使用的FDCAN协议
AN3154-STM32引导加载程序中使用的CAN协议
STM32在GitHub上打开引导加载程序