我在使用 STLINKv2(来自 Nucleo 板)和使用 SWD 的 nRF52 目标设备刷新固件时遇到了一些问题。简而言之,我能够“连接”到 nRF52(我可以打开一个 telnet 会话),但是一旦我尝试一个Program
命令,我就会收到一个无用的错误(如下)。Hex 文件是使用 Arduino 的“export bin”文件选项编译的。(现在不能使用 SEGGER)
更多详情如下:
OSX 版本 10.14.6,OpenOCD 版本 0.10.0。
在终端中运行openocd -f interface/stlink-v2-1.cfg -f target/nrf52.cfg
返回:
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
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
adapter speed: 10000 kHz
Info : Unable to match requested speed 10000 kHz, using 4000 kHz
Info : Unable to match requested speed 10000 kHz, using 4000 kHz
Info : clock speed 4000 kHz
Info : STLINK v2 JTAG v28 API v2 SWIM v17 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 0.014192
Error: target voltage may be too low for reliable debugging
Info : nrf52.cpu: hardware has 6 breakpoints, 4 watchpoints
然后我可以使用 telnet telnet localhost 4444
:
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
在 telnet 中,我可以在 nRF52 上运行基本命令,当我执行时:program /full/path/to/hex/file.hex
我收到以下消息:
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
** Programming Started **
embedded:startup.tcl:476: Error: ** Programming Failed **
in procedure 'program'
in procedure 'program_error' called at file "embedded:startup.tcl", line 532
at file "embedded:startup.tcl", line 476
很想知道我做错了什么!
ETA:电压误差不相关;这是由于 Nucleo SWD 编程器硬件中的一个错误,必须将一根跳线从 VDD-TARGET 焊接到 R24 的外部引脚。(当您从 STLINK 板上断开 Nucleo 时,您断开了此链接)已完成此操作,但问题仍然存在。