OpenOCD树莓派Bit Bang SWD无法连接DP报错求助
排查STM32F407 GPIO Bit Bang SWD连接失败的实用思路
排查SWD引脚复用冲突
开发USB驱动时,大概率误把SWDIO/SWCLK引脚配置成了USB相关复用功能(比如USB_DM/DP或其他外设引脚)。哪怕全擦除Flash,SRAM里残留的代码复位后可能还会重新配置引脚。试试这两种方法:- 按住MCU复位键,在OpenOCD启动连接的瞬间松开(冷启动连接)
- 切换到系统存储器启动模式(BOOT0=1,BOOT1=0)再连,此时芯片跑内置Bootloader,不会加载用户代码,能排除引脚复用的问题
调低Bit Bang的通信速率
STLink的SWD时序比GPIO Bit Bang稳定得多,USB开发后如果MCU时钟配置变了(比如开了更高的系统时钟),Bit Bang的时序可能跟不上。修改OpenOCD配置里的adapter speed,把速率降下来,比如:adapter speed 100000解决Wrong Parity Error的小技巧
这个错误基本和SWDIO信号稳定性有关:- 检查树莓派GPIO的上拉配置,SWDIO需要内部上拉,在OpenOCD配置里加一行
gpio swdio_pullup enable - USB电路是高频信号,容易干扰SWD线路,把SWD线尽量远离USB走线,或者给SWD线加个屏蔽
- 检查树莓派GPIO的上拉配置,SWDIO需要内部上拉,在OpenOCD配置里加一行
确认调试模式选项字节
别只看表面的选项字节正常,重点查DBG_STANDBY、DBG_STOP、DBG_SLEEP这几个调试模式位,确保没被禁用。用STLink读完整选项字节寄存器对比默认值:st-flash read option_bytes.bin 0x1FFF7800 8强制复位调试端口
有时候MCU的调试端口会进入异常状态,试试硬复位:- 断开MCU电源,等10秒再上电
- 用树莓派GPIO触发MCU的NRST引脚,保持复位3秒后释放,立刻启动OpenOCD连接
内容的提问来源于stack exchange,提问作者Sheikh Muhammad Junaid Aslam
相关产品推荐
相关产品推荐

