完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
实验环境基于STM32L496。
系统Bootloader基础知识 什么是DFU ST官方在很多STM32的系统存储区烧录了Bootloader程序用以实现IAP。 用户可以通过进入系统Bootloader模式,经由USART、CAN、USB、I2C、SPI烧录程序,其中DFU(Device Firmware Update)就是通过USB接口实现IAP的方案。 作为一个IAP,该方案常用于避免产品软件更新时的拆装,并且能省去上位机程序和Bootloader程序的编写。 ST支持系统Bootloader的单片机型号如下(摘自AN2606,V44,2020.7): 相关参考文档 进入BootLoader 硬件Boot引脚进入BootLoader模式 STM32L496通过在复位时检测Boot0 Pin(PH3)和FlashOPTR寄存器中的nBoot1 bit状态进入Bootloader模式: 默认状态下,OPTR寄存器值为0xFFEFF8AA,即Boot0由Boot0Pin(PH3)决定,Boot1 bit跟随Boot0变化,所以只需要在复位时保持PH3上拉即可进入系统bootloader。 需要注意的是,如果使用了Flash保护 level2,就只能从Flash地址空间启动,不能进入系统Bootloader 如下STM32L4X6参考手册对OPTR寄存器的描述: 软件进入BootLoader模式 如果不想通过引脚进入Bootloader,在程序内也可以通过软件跳转到SystemMemory来执行Bootloader。 参考AN2606 -4.1章节,在跳转前需要做如下处理:
参照AN2606,由于L4X6具有双Bank特性,需要将系统Boot代码区使用SYSCFG重映射到0x00000000。 最终跳转代码如下: void JumpToBootloader(void) { uint32_t i=0; void (*SysMemBootJump)(void); __IO uint32_t BootAddr = 0x1FFF0000; /* Disable IRQ */ __set_PRIMASK(1); SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; HAL_RCC_DeInit(); /* Disable all irq flag */ for (i = 0; i < 8; i++) { NVIC->ICER=0xFFFFFFFF; NVIC->ICPR=0xFFFFFFFF; } /* Enable IRQ */ __set_PRIMASK(0); /* Remap system memory bootloader at 0x00000000 */ CLEAR_BIT(SYSCFG->MEMRMP, 0x07); SET_BIT(SYSCFG->MEMRMP, 0x01); SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); /* Set stack address */ __set_MSP(*(uint32_t *)BootAddr); /* 在RTOS工程中,这条语句很重要,设置为特权模式,使用MSP指针 */ __set_CONTROL(0); /* Jump to system bootloader */ SysMemBootJump(); } 下载程序 安装STM32CubeProgrammer
准备标准USB线,绿色线(D+)接单片机的USB-DP(PA12),白色线(D-)接单片机的USB-DN(PA11),黑色地线接地。连接PC,打开STM32CubeProgrammer,打开设备管理器。 Bootloader下载 Boot0 Pin置高,断电复位,等待3S左右,PC上设备管理器会显示STM32Bootloader驱动: 使用软件方式就更简单了,直接执行JumpToBootloader程序,成功的话设备管理器上也会显示Bootloader驱动。 CubePro上点击Connect: 执行下载步骤: 完成后提示下载完成,校验完成。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4130 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3221 浏览 1 评论
2747 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2175 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14939 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3084浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1892浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2064浏览 3评论
1976浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2165浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:18 , Processed in 0.603712 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5050