将静态库添加到项目中后,不会退出dfu模式。
大家好,我之前在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的项目是否不适用于库的集成?
感觉像是库里有初始化或者中断没对上,DFU 跳不到 APP 去了。 之前在 TrueStudio 用的链接脚本和 CubeIDE 的一样吗?地址要对齐才行。 看下你库里有没有用到 vector table,可能覆盖了 boot 跳转逻辑。 有时候库里带了自己的启动文件,会把原来的 boot code 覆盖掉。 试试把库去掉再编译,确认是库引起的还是 CubeIDE 配置问题。 Boot 和 APP 的对接要用 attribute((section)) 固定入口地址,不然会跑飞。 也可能是 DFU 完写完后复位跳转地址没设置对。 建议先用裸代码链接,确认 APP 单独烧写能正常跑。 库里要是有系统初始化函数,要小心和主工程里的重复。 有结果记得分享下哈,我也准备把老工程搬到 CubeIDE,正担心这块呢! 中断向量表配置或引导加载程序与应用程序的交互逻辑有关。 静态库的编译选项与主项目不一致? 重新生成库。 检查链接顺序和脚本有无冲突。 清理并重新构建静态库,避免旧编译产物干扰。 链接器按顺序解析符号,顺序错误可能导致未解析的引用。 更新ST-Link驱动和DfuSe工具至最新版本 链接脚本不兼容? Cube IDE基于Eclipse,可能使用不同版本的GCC或标准库。检查库是否依赖特定库版本。
页:
[1]