You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenOCD仅能烧录STM32F103VG一半Flash的问题求助

问题原因及解决方案

你的问题核心是STM32F103VG的大容量Flash(双Bank)在OpenOCD下未能正确完成全片烧录,以下是针对性的排查和解决步骤:

1. 修正WORKAREASIZE参数(最可能的原因)

你的配置中错误设置了WORKAREASIZE 0x18000(96KB),但STM32F103VG的SRAM只有64KB(0x10000)。超出SRAM范围的工作区域会导致OpenOCD在编程后半段Flash时出现内存访问错误,进而失败。

修改my_mcu.cfg中的对应行:

# The chip has 64KB sram
set WORKAREASIZE 0x10000

2. 显式配置大容量Flash Bank

默认的stm32f1x.cfg可能未正确适配1MB Flash的双Bank结构,需要手动指定Flash bank的完整参数覆盖默认配置。在source [find target/stm32f1x.cfg]之前添加以下内容:

# 显式配置1MB Flash Bank
flash bank $_CHIPNAME.flash stm32f1x 0x08000000 0x100000 0 0 $_TARGETNAME

3. 降低SWD通信速度

树莓派的GPIO电平驱动能力有限,过高的SWD速度可能导致通信丢包,尤其是在烧录后半段Flash时。在source [find interface/stlink.cfg]之后添加:

# 降低SWD速度到1MHz
adapter speed 1000

4. 强制指定芯片TAP ID(可选)

如果OpenOCD未能正确识别STM32F103VG的大容量型号,可手动指定TAP ID:

set CPUTAPID 0x1ba01477

验证操作

修改配置后,重新执行烧录命令:

openocd -f my_mcu.cfg -c "program my_bin.srec reset exit"

如果问题仍存在,可尝试增加烧录时的验证步骤,确保数据正确写入:

openocd -f my_mcu.cfg -c "program my_bin.srec verify reset exit"

内容的提问来源于stack exchange,提问作者Antidot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:27:14