艾巴生活网

您现在的位置是:主页>科技 >内容

科技

bootloader下载 关于在Bootloader模式下的应用程序下载

2024-11-22 14:34:57科技帅气的蚂蚁
介绍在bootloader模式下,STM32 MCU可以通过各种可用的外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器。) 详情请参考应用笔记A

bootloader下载 关于在Bootloader模式下的应用程序下载

介绍

在bootloader模式下,STM32 MCU可以通过各种可用的外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器。).详情请参考应用笔记AN2606 《STM32 microcontroller system memory boot mode》。本文主要介绍利用STLINK-V3SET调试/编程工具的I2C接口将程序下载到SDRAM中并执行的方法。

2.问题描述

问题源于客户的实际需求,客户希望通过I2C接口将程序下载到SRAM中,对芯片进行功能测试。

3.问题分析和定位

关于在Bootloader模式下下载应用程序,有几个lat可供参考。比如《如何使用STM32NUCLEO 板来测试串口 Bootloader》,《一种在 IAR 中实现通过 SRAM 应用程序跳转到bootloader 的方法》等。应用程序下载到SRAM,也有LAT可供参考,如《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法》。据调查,STLINK-V3SET支持I2C Bootloader程序下载,可以Bootloader模式将应用程序下载到SRAM中。

4.问题解决

本文以NUCLEO-F401RE开发板为例进行介绍。本文介绍的方法分为三个步骤。首先进行硬件配置和布线,使STM32F401RE通过I2C与STLINK-V3SET连接,复位后STM32F401RE可以进入bootloader模式。其次,对软件进行配置和编程,程序可以通过IAR下载到SRAM中。最后通过STM32CubeProgrammer软件下载运行程序。下面分别介绍三个步骤。

4.1硬件配置和布线

看AN2606可以看出,Boot0和Boot1 (Boot0=1,Boot1=0)的硬件设置可以使NUCLEO板卡在上电复位后进入bootloader模式。STM32F401RE的I2C1、I2C2、I2C3都支持bootloader。这里选择I2C1接口来实现bootloader模式下的程序下载功能。

关于STLINK-V3SET和SRM32F401RE之间的I2C连接,在STLINK-V3SET模块上提供了680欧姆的上拉电阻,通过闭合JP10跳线激活。同时需要通过NUCLEO板为STLINK-V3SET提供3.3V电源。参考AN2606中的I2C连接方式,其引脚连接如下表所示:

最后用一根USB类型的A转Micro B线连接STLINK-V3SET和PC,STM32 NUCLEO-F401RE也由调试线供电。

4.2通过IAR将程序下载到SRAM中

参考另一个实战经验:《一种在 IAR 中实现通过将程序在 SRAM 中调试的方法》。主要操作如下。

(1)在项目的链接选项中选择stm32f411xe_sram.icf。

(2)设置中断向量表的位置:

4.3通过STM32CubeProgrammer将程序下载到SRAM并运行。

因为bootloader使用了一些SRAM程序,所以需要修改地址以避免冲突。参考另一个实战经验:《一种在 IAR 中实现从在 SRAM 运行的应用程序跳转到 bootloader 的方法》。对于SRAM中的bootloader区域,我们可以从关于bootloader的应用笔记中看到以下信息:

从红色部分我们可以看到Bootloader使用了一部分内部SRAM,所以我们需要修改stm32f411xe_sram.icf中运行的代码的起始地址,避免与bootloader运行时冲突:

同时,需要修改下层中断向量表的偏移量:

在应用程序中,我们编写下面的程序,LED灯每1s闪烁一次。

最后用STM32CubeProgrammer下载程序。打开STM 32 cube programmer(2.6版),在序列号中选择STLINK-V3SET,相关配置如图所示。选择端口I2C,波特率设置为400KHz,地址设置为0x39(如果地址是7位,比如STM32F401RE I2C1的地址是0b0111001x,那么I2C设置的地址就是0b0111001,也就是0x39,不同系列的MCU地址可能不一样。请检查AN2606)。

点击连接后,如果连接成功,如图。

点击擦除编程,加载十六进制文件,勾选验证编程,编程后运行,如下图所示。单击开始编程开始程序下载。程序下载成功后,可以看到LED2以1Hz的频率闪烁,STM32CubeProgrammer断开。要重新连接,需要按下NUCLEO板上的reset键,使MCU进入bootloader模式。

总结

用STLINK-V3SET,通过STM32CubeProgrammer软件的I2C接口下载程序生成的十六进制文件后,我们可以看到程序下载到SRAM后,LED灯每1s闪烁一次,应用程序下载成功。

原标题:工程师 Notes |通过STLINK-V3SET I2C接口将程序下载到SRAM并执行的方法

来源:【微信微信官方账号:STM32 MCU】欢迎关注!请注明文章出处。

审计唐子红