使用openocd和jlink(SWD)无法连接到STM32F105RBT6

本文记录了使用OpenOCD时遇到的问题,主要是在尝试连接STM32F1x目标设备时,JTAG扫描链检查失败,且在尝试使用配置的扫描链时出现多个错误。文章探讨了可能的原因,包括JTAG接口设置、目标电源状态等,并提到了当前使用的JTAG接口为默认设置,而转换为SWD接口的方法尚未找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

allen@allen-To-be-filled-by-O-E-M:~$ openocd -f interface/jlink.cfg -f target/stm32f1x.cfg
Open On-Chip Debugger 0.9.0 (2018-01-24-01:05)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
Info : J-Link ARM V8 compiled Nov 28 2014 13:44:46
Info : J-Link caps 0xb9ff7bbf
Info : J-Link hw version 80000
Info : J-Link hw type J-Link
Info : J-Link max mem block 9224
Info : J-Link configuration
Info : USB-Address: 0x0
Info : Kickstart power on JTAG-pin 19: 0xffffffff
Info : Vref = 3.300 TCK = 1 TDI = 0 TDO = 0 TMS = 0 SRST = 1 TRST = 1
Info : J-Link JTAG Interface ready
Info : clock speed 1000 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: stm32f1x.cpu: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction
Warn : Invalid ACK 0 in JTAG-DP transaction

看提示好像是openocd默认的jtag接口,但是目前不知道怎么改成SWD接口。。。

### 如何配置使用 OpenOCD 配合 JLink 进行调试 #### 软件准备 为了实现 OpenOCD JLink 的协同工作,需要准备好以下工具并完成相应的安装: - **OpenOCD**: 可以通过官网下载最新版本的 OpenOCD 工具链[^1]。对于 Windows 用户,建议直接使用预编译好的二进制文件;而对于 Linux 或 macOS 用户,则可能需要自行编译。 - **Zadig**: 此工具用于更换 JLink 设备的驱动程序为 WinUSB 驱动,以便于 OpenOCD 访问硬件接口[^1]。 - **终端模拟器 (可选)**: 像 MobaXterm 或其他支持命令行操作的工具可以帮助更方便地运行 OpenOCD。 #### 安装依赖项 在某些操作系统下(尤其是 Linux),还需要额外安装一些库来支持 OpenOCD 功能正常运作。例如,在 Ubuntu 上可以通过下面这条指令安装必要的开发包: ```bash sudo apt-get install libusb-1.0-0-dev ``` 这一步骤确保了系统能够识别 USB 接口上的设备,并允许应用程序对其进行控制[^2]。 #### 修改驱动设置 针对 Windows 平台而言,原始安装的 Segger 提供的标准驱动并不完全兼容所有的第三方应用需求。因此推荐利用 Zadig 将其替换为通用型更强的 WinUSB 驱动方案。具体步骤如下: 1. 打开 Zadig 应用; 2. 选择连接着电脑端口中的 J-Link Debugger; 3. 替换成名为 `WinUSB` 的选项后保存更改即可生效[^1]。 #### 启动服务与加载目标板定义脚本 启动 OpenOCD 实际上就是执行一段预先编写好用来描述目标芯片特性的初始化脚本。通常情况下这些文件已经随发行版一起打包好了,只需指定路径调用对应型号的支持文档就可以了。比如如果要测试的是基于 STM32F4 系列微控制器的产品,那么可以尝试这样的一条基本命令: ```bash openocd -f interface/jlink.cfg -f target/stm32f4x.cfg ``` 这里 `-f` 参数后面接的就是具体的配置文件名位置说明。其中第一个参数指向适配器相关的设定部分,而第二个则是有关待测器件内部结构方面的细节介绍[^2]。 当成功建立通信之后,应该可以在输出窗口看到类似于“**target state: halted**”这样的提示信息表示当前状态良好处于暂停模式等待进一步指示。 --- ### 注意事项 在整个过程中可能会遇到各种各样的错误消息或者异常情况发生。此时可以根据报错内容仔细核对自己每一步的操作是否有误以及所使用的软硬件版本之间是否存在冲突等问题加以排查解决。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值