[STM32F4] 将静态库添加到项目中后,不会退出dfu模式。

[复制链接]
651|19
 楼主| 石榴大王 发表于 2025-7-17 23:02 | 显示全部楼层 |阅读模式
大家好,我之前在True Studio中有可正常工作的代码,该代码可与引导加载程序(boot loader)配合运行。我将该代码迁移到了STM32 Cube IDE中。
在STM32 Cube IDE中,我通过参考文档DM00629856的第2.2.2节创建了静态库
将创建的静态库包含到Cube IDE项目中,代码编译通过,并生成了HEX转DFU文件。使用ST-Link引导加载程序将HEX文件加载到硬件中,之后通过DfuSe软件加载DFU文件。
根据引导加载程序的设计,上电后设备会进入DFU模式并保持10秒,在此期间应将DFU文件加载到硬件中。
问题描述:
当添加了静态库的DFU文件加载到硬件后,设备无法退出DFU模式,会一直停留在该模式。如果手动退出DFU模式,DfuSe软件会卡死。
求助:
是否我的库创建过程存在问题?是否有其他方法可以将库添加到项目中?或者从Atollic迁移到STM32 Cube IDE的项目是否不适用于库的集成?

公羊子丹 发表于 2025-7-25 07:26 | 显示全部楼层
感觉像是库里有初始化或者中断没对上,DFU 跳不到 APP 去了。
周半梅 发表于 2025-7-25 07:27 | 显示全部楼层
之前在 TrueStudio 用的链接脚本和 CubeIDE 的一样吗?地址要对齐才行。
帛灿灿 发表于 2025-7-25 07:28 | 显示全部楼层
看下你库里有没有用到 vector table,可能覆盖了 boot 跳转逻辑。
童雨竹 发表于 2025-7-25 07:29 | 显示全部楼层
有时候库里带了自己的启动文件,会把原来的 boot code 覆盖掉。
万图 发表于 2025-7-25 07:30 | 显示全部楼层
试试把库去掉再编译,确认是库引起的还是 CubeIDE 配置问题。
Wordsworth 发表于 2025-7-25 07:30 | 显示全部楼层
Boot 和 APP 的对接要用 attribute((section)) 固定入口地址,不然会跑飞。
Bblythe 发表于 2025-7-25 07:31 | 显示全部楼层
也可能是 DFU 完写完后复位跳转地址没设置对。
Pulitzer 发表于 2025-7-25 07:32 | 显示全部楼层
建议先用裸代码链接,确认 APP 单独烧写能正常跑。
Uriah 发表于 2025-7-25 07:33 | 显示全部楼层
库里要是有系统初始化函数,要小心和主工程里的重复。
Clyde011 发表于 2025-7-25 07:34 | 显示全部楼层
有结果记得分享下哈,我也准备把老工程搬到 CubeIDE,正担心这块呢!
是你的乱码 发表于 2025-7-28 14:32 | 显示全部楼层
中断向量表配置或引导加载程序与应用程序的交互逻辑有关。
flycamelaaa 发表于 2025-7-28 14:48 | 显示全部楼层
静态库的编译选项与主项目不一致?
powerantone 发表于 2025-7-28 14:48 | 显示全部楼层
重新生成库。
elephant00 发表于 2025-7-28 14:54 | 显示全部楼层
检查链接顺序和脚本有无冲突。
stormwind123 发表于 2025-7-28 15:49 | 显示全部楼层
清理并重新构建静态库,避免旧编译产物干扰。
probedog 发表于 2025-7-28 16:50 | 显示全部楼层
链接器按顺序解析符号,顺序错误可能导致未解析的引用。
cr315 发表于 2025-7-28 18:53 | 显示全部楼层
更新ST-Link驱动和DfuSe工具至最新版本
classroom 发表于 2025-7-28 19:51 | 显示全部楼层
链接脚本不兼容?
jcky001 发表于 2025-7-28 19:52 | 显示全部楼层
Cube IDE基于Eclipse,可能使用不同版本的GCC或标准库。检查库是否依赖特定库版本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

54

帖子

0

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