OpenOCD+GDB学习记录(1)

环境:

  • Windows10 + Windows Terminal + Powershell
  • Open On-Chip Debugger 0.11.0 (2021-06-25)
  • STlink v2
  • F103C8T6最小系统

问题描述

芯片的idcode与预设不匹配。

PS C:\Users\hyq> openocd -f E:\OpenOCD\share\openocd\scripts\interface\stlink-v2.cfg -f E:\OpenOCD\share\openocd\scripts\target\stm32f1x.cfg
Open On-Chip Debugger 0.11.0 (2021-06-25) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : DEPRECATED target event trace-config
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 1000 kHz
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.210533
Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x1ba01477

原因分析:

当OpenOCD初始化JTAG的过程中,会试图获取JTAG chain上的芯片的idcode (或CPUTAPID, 或Tap ID),与OpenOCD target config文件中的idcode对比,用来识别该芯片。

两种情况会导致这个过程出现错误:

  1. OpenOCD错误地读取了idcode。通常表现为idcode=0x000000000x000000ff
  2. 实际芯片idcode与所选择的OpenOCD target idcode不匹配。可能是.cfg文件信息过时/有误,或者芯片有问题。

解决方案:

根据提示,可以修改.cfg文件设置解决问题。

找到OpenOCD target config文件,这里位于

E:\OpenOCD\share\openocd\scripts\target\stm32f1x.cfg

找到内容

#jtag scan chain
if { [info exists CPUTAPID] } {
   set _CPUTAPID $CPUTAPID
} else {
   if { [using_jtag] } {
      # See STM Document RM0008 Section 26.6.3
      set _CPUTAPID 0x3ba00477
   } {
      # this is the SW-DP tap id not the jtag tap id
      set _CPUTAPID 0x1ba01477
   }
}

其中的 set _CPUTAPID 0x1ba01477 

改为   set _CPUTAPID 0x2ba01477 

保存。命令行再次输入

openocd -f E:\OpenOCD\share\openocd\scripts\interface\stlink-v2.cfg -f E:\OpenOCD\share\openocd\scripts\target\stm32f1x.cfg

结果

Open On-Chip Debugger 0.11.0 (2021-06-25) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2.cfg is deprecated, please switch to interface/stlink.cfg
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : DEPRECATED target event trace-config
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 1000 kHz
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.194733
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32f1x.cpu on 3333
Info : Listening on port 3333 for gdb connections

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值