Ubuntu更新后OpenOCD烧录STM32F103报需用-dap替代-chain-position错误
报错原因
- Ubuntu系统更新时将OpenOCD升级到了0.11.0-rc2版本,该版本对Cortex-M架构目标的配置语法做了不向下兼容的调整:旧版用于指定调试链位置的
-chain-position参数被废弃,要求使用-dap参数绑定预定义的调试访问端口(DAP)实例。 - 你当前使用的stm32f1x.cfg是适配旧版OpenOCD的配置文件,第74行仍然使用
-chain-position语法,和新版OpenOCD的要求冲突,直接触发报错。 - 额外出现的警告是因为
interface/stlink-v2-1.cfg在新版OpenOCD中也已被废弃,后续可统一改用interface/stlink.cfg适配全系列STLink调试器。
解决方案
提供两种可选修复方式,按需选择即可:
方案1:修改现有stm32f1x.cfg配置
仅需调整1行配置即可兼容新版OpenOCD:
找到stm32f1x.cfg的第74行,将原配置:
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
替换为:
target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_TARGETNAME
修改后保存即可正常执行烧录操作。
方案2:使用新版OpenOCD官方自带配置
无需自行维护旧版本配置文件,稳定性更高:
将你的black_pill.cfg中引用自定义stm32f1x.cfg的语句,替换为引用系统自带的官方配置source [find target/stm32f1x.cfg],同时将接口配置从source [find interface/stlink-v2-1.cfg]改为source [find interface/stlink.cfg]即可同时消除报错和警告。
内容的提问来源于stack exchange,提问作者Joel Imbergamo
相关产品推荐
相关产品推荐

