[STM32F0] 如何防止调试会话尝试对外部存储器进行编程?

[复制链接]
封存into 发表于 2025-8-27 10:35 | 显示全部楼层 |阅读模式

在之前的项目中使用 System Workbench 时,并未遇到此问题。

当使用外部闪存(QSPI)时,运行调试会话会失败, STM32CubeIDE 会对外部闪存进行编程但失败。

在运行调试会话时,我只希望编程内部闪存。

我会提前一次性编程外部闪存,而不是直接将自定义的外部加载程序挂接到调试器中,并在每次调试会话时都对外部闪存进行编程。


公羊子丹 发表于 2025-8-28 07:18 | 显示全部楼层
你这种情况挺常见的,CubeIDE默认会把外部flash当成镜像的一部分去写。
周半梅 发表于 2025-8-28 07:19 | 显示全部楼层
在调试配置里检查下,可能勾选了External Loader,去掉就只烧内部flash了。
帛灿灿 发表于 2025-8-28 07:20 | 显示全部楼层
有时候IDE自动识别了linker script里的外部存储区,把它也当目标区,改下scatter文件可以解决。
童雨竹 发表于 2025-8-28 07:21 | 显示全部楼层
你可以把外部flash的段标记成NOLOAD,这样调试下载的时候不会去写它。
万图 发表于 2025-8-28 07:21 | 显示全部楼层
System Workbench可能默认没有附加外部loader,所以之前不会出问题。
Wordsworth 发表于 2025-8-28 07:22 | 显示全部楼层
也可以在Debug Configurations里,勾掉Verify和Download外部存储区的选项。
Bblythe 发表于 2025-8-28 07:23 | 显示全部楼层
如果你已经有一次性编程外部flash的方式,那就让调试器只处理0x08000000起的内部flash。
Pulitzer 发表于 2025-8-28 07:23 | 显示全部楼层
在.cproject或者.launch配置里,把QSPI段排除掉也能达到目的。
Uriah 发表于 2025-8-28 07:24 | 显示全部楼层
有时候STLink Utility的配置也会影响,建议确认只加载内部区域。
Clyde011 发表于 2025-8-28 07:25 | 显示全部楼层
总之思路就是:保持linker脚本正确,去掉外部loader,让IDE不要碰外部flash。
星辰大海不退缩 发表于 2025-8-28 23:49 | 显示全部楼层
CubeIDE默认会把外部flash当成镜像的一部分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

112

帖子

0

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