[STM32F4] DFU模式下固件更新后不启动,怀疑跳转代码出错

[复制链接]
130|15
Uriah 发表于 2025-10-20 07:48 | 显示全部楼层 |阅读模式
用USB DFU更新固件,下载过程正常,校验也通过,但重启后没反应。怀疑是跳转到应用区的汇编写错了。用ST的例程也一样。
Clyde011 发表于 2025-10-20 07:51 | 显示全部楼层
试试直接在Bootloader里软复位到APP,看差别。
公羊子丹 发表于 2025-10-20 07:52 | 显示全部楼层
跳转前要先关闭中断,这一步很多人忘。
周半梅 发表于 2025-10-20 07:53 | 显示全部楼层
检查栈指针初始化是不是对的。
帛灿灿 发表于 2025-10-20 07:54 | 显示全部楼层
我遇过是向量表偏移没设对。
童雨竹 发表于 2025-10-20 07:55 | 显示全部楼层
F4的DFU例程有坑,部分版本有隐藏Bug。
万图 发表于 2025-10-20 07:56 | 显示全部楼层
可以在跳转前先打印一下APP地址确认。
Wordsworth 发表于 2025-10-20 07:57 | 显示全部楼层
是不是APP编译时起始地址没改?
Bblythe 发表于 2025-10-20 07:58 | 显示全部楼层
别忘了SYSCFG->MEMRMP要正确配置。
Pulitzer 发表于 2025-10-20 07:59 | 显示全部楼层
我当时也是跳转不成功,最后是cache问题。
 楼主| Uriah 发表于 2025-10-20 08:00 | 显示全部楼层
用ST-LINK调进应用区看看PC指针去了哪。
故里说长安 发表于 2025-10-20 10:27 | 显示全部楼层
中断向量表偏移可能没有正确配置吧
豌豆爹 发表于 2025-10-20 11:27 | 显示全部楼层
主堆栈指针初始化失败?
进入猫次元 发表于 2025-10-20 13:28 | 显示全部楼层
跳转前外设状态未清理?
进入猫次元 发表于 2025-10-20 15:29 | 显示全部楼层
在启动应用代码前,必须将SCB->VTOR指向应用区的向量表首地址
麻花油条 发表于 2025-10-20 16:30 | 显示全部楼层
从向量表读取MSP,应用区的向量表首地址存储了初始MSP值,跳转前必须将其加载到主堆栈指针寄存器。
classroom 发表于 2025-10-20 18:31 | 显示全部楼层
禁用所有外设时钟,跳转前通过HAL_RCC_DeInit()复位时钟配置,并禁用PLL。
cr315 发表于 2025-10-20 19:31 | 显示全部楼层
关闭全局中断
duo点 发表于 2025-10-20 19:32 | 显示全部楼层
复位看门狗,若启用独立看门狗(IWDG),需在跳转前喂狗或禁用。
elephant00 发表于 2025-10-20 10:32 | 显示全部楼层
固件烧录不完整或校验失败可能导致应用区代码无效,引发启动失败。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

6361

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部