我在 pcb 上有一个定制的 nrf52 芯片,暴露了 swd 引脚。我已经从https://github.com/ntfreak/openocd克隆并安装了最新的 openocd 。最新版本包括 nrf52 芯片的所有最新路径,因此无需像许多较早的在线指南中建议的那样进行任何其他更改。我可以使用 ST-LinkV2 连接到芯片。连接后,我可以使用 mdw 和 mdb 读取和写入内存位置。我还可以运行一些基本的 openocd 命令,例如 dump_image 等,这可以确认设置是好的。但是停止和程序命令总是会导致错误,例如:
JTAG failure -4
JTAG failure -4
JTAG failure -4
JTAG failure -4
JTAG failure -4
JTAG failure -4
target halted due to debug-request, current mode: Thread
xPSR: 00000000 pc: 00000000 msp: 00000000
jtag status contains invalid mode value - communication failure
Polling target nrf52.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Previous state query failed, trying to reconnect
jtag status contains invalid mode value - communication failure
Polling target nrf52.cpu failed, trying to reexamine
如果我尝试使用 flash image_write 我得到错误,
JTAG failure
Error setting register
error starting target flash write algorithm
Failed to enable read-only operation
Failed to write to nrf52 flash
error writing to flash at address 0x00000000 at offset 0x00000000
in procedure 'dap'
jtag status contains invalid mode value - communication failure
Polling target nrf52.cpu failed, trying to reexamine
我已经在线阅读了不同的指南,其中一种可能的解决方案涉及 APPPROTECT 寄存器,必须禁用该寄存器才能启用对闪存的任何写入。 APP_PROTECT,但是应该帮助我们访问这个位的 dap 命令,
dap apreg 1 0x04 0x01
返回错误:
invalid subcommand apreg 1 0x04 0x01
拜托,我想知道是否有人用 stlink-v2 成功编程了一个新的空 nrf52 芯片以及必要的步骤,或者是否有人遇到过类似的问题。谢谢。
这是我的配置文件:
#nRF52832 Target
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/nrf52.cfg]
#reset_config srst_nogate connect_assert_srst