STM32系统bootloader应用

时间:2024-04-10 21:12:24

嵌入式开发中,经常需要bootloader进行程序固件升级和系统维护,所以bootloader是必不可少的功能。STM32系统自带的系统bootloader很方便使用。大量减少了工程师开发bootloader的工作

1. 摘要

本篇笔记主要介绍,STM32系统bootloader的应用,以STM32H743芯片为例介绍,

2. 准备工作

    1, IAR 8.32.1

    2, STM32CubeProgrammer

3. 系统bootloader介绍

相信用过STM32芯片的童鞋应该都不陌生,在芯片出厂的时候,意法在内部系统固化了bootloader,并且支持多种接口像UART,I2C,SPI,USB,CAN等等,可用于下载升级用户程序,就我使用的H743来讲可支持接口如下:

STM32系统bootloader应用

注意红色框部分地址有误,程序中代码需要注意,目前支持几乎全系列STM32。像F0, F1,F4,F7,H7,包括比较新的G系列也都支持,还有L系列和W系列。此bootloader可配合ST官方的STM32CubeProgrammer上位机使用,这样大大节省了开发时间,当然你如果要做更好的bootloader可以根据这个思路自己在添加更多功能。

STM32系统bootloader应用

就我最近使用的H743来讲,我们今天以H743为例,以USB接口为例来介绍。

4. 硬件连接示意图

将板子通过USB线连入电脑,板子作为USB device

STM32系统bootloader应用

5. Bootloader模式

在使用bootloader时候,需要考虑怎么进入boot模式,而STM32支持通过boot引脚跳转,通过boot引脚跳转需要配置引脚和地址寄存器

STM32系统bootloader应用

通过用户应用程序跳转则不需要配置boot引脚,而一般通过应用程序跳转比较方便,尤其是带有不好拆卸外壳的产品,我们通过应用程序跳转极为方便,固以后者为例来说明。通过boot引脚跳转的配置说明大家可以参考官方文档AN2606.

6. 配置需求

一般来说我们在进入跳转到bootloader时候需要做一些工作,STM32在进入系统bootloader时候需要做以下动作:关闭全局中断,时钟恢复配置为HIS,清除中断挂起标志,使能中断,设置跳转地址,执行跳转,可以是按键检测跳转,或者触摸操作跳转,这个根据自己的应用去实现。

STM32系统bootloader应用

STM32系统bootloader应用

STM32系统bootloader应用

7. 代码实现

通过按照上面的说明我们就可以通过代码实现,只需要在需要跳转动作的地方调用下面的函数。注意ST官方给的系统bootloader系统地址不对,AN2606中给出的地址有误,使用时候要注意,需采用下面的地址,此处参考了安富莱例程,一并感谢。

STM32系统bootloader应用

8. 测试

配合STM32CubeProgrammer完成测试,测试步骤很简单,打开STM32CubeProgrammer,当应用程序中满足跳转条件进入系统bootloader后,就会进入DFU,点击连接,如过连接无误,可以选择要下载的文件,进行下载,下载成功后,有提示。按照图示操作就可以完成。

STM32系统bootloader应用

STM32系统bootloader应用

点击Open file,选择自己要下载的文件

STM32系统bootloader应用

STM32系统bootloader应用

STM32系统bootloader应用

或者可以在菜单里选择第二项进入下面界面更新。

STM32系统bootloader应用

STM32系统bootloader应用

9. 参考文档

序号

文献

1

STM32H743RM

2

AN2606: STM32 microcontroller system memory boot mode