gpt4 book ai didi

microcontroller - 使用 Openocd 烧写 nrf52 芯片的问题

转载 作者:行者123 更新时间:2023-12-04 00:30:18 26 4
gpt4 key购买 nike

我在 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

最佳答案

我以这种方式解决了“ protected nRF52”芯片问题,在 Windows 上,使用 Particle.io 调试器 https://store.particle.io/products/particle-debugger按照 https://www.forward.com.au/pfod/BLE/LowPower/index.html 中所述设置从 Arduino 对 nRF52 芯片进行编程

注意:这里描述的恢复过程不需要安装 Arduino

从以下位置下载 OpenOCD-20181130.7z 为 windows 预编译的 openocd http://gnutoolchains.com/arm-eabi/openocd/

最新版本的 openocd src 位于 https://github.com/ntfreak/openocd也应该可以工作,因为它在 target\arm_adi_v5.c 中包含 apreg cmd

解压,打开cmd提示解压目录,输入cmd

bin\openocd.exe -d2 -f interface/cmsis-dap.cfg -f target/nrf52.cfg 

回复

Info : auto-selecting first available session transport "swd". To override use '
transport select <transport>'.
adapter speed: 1000 kHz
cortex_m reset_config sysresetreq
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : CMSIS-DAP: SWD Supported
Info : CMSIS-DAP: FW Version = 1.10
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x2ba01477
Error: Could not find MEM-AP to control the core
Info : Listening on port 3333 for gdb connections

打开 telnet 程序,例如 teraTerm 并连接到 localhost 的 4444 端口,即 127.0.0.1 telnet 端口 4444

cmd窗口显示

Info : accepting 'telnet' connection on tcp/4444

在 telnet(即 teraTerm)中输入

nrf52.dap apreg 1 0x04

返回 0 <<< 芯片保护那么

nrf52.dap apreg 1 0x04 0x01

然后

nrf52.dap apreg 1 0x04

返回 1 <<芯片不 protected

然后重启电路板

现在可以使用 arduino ide 来刷写软设备和编码低功耗 BLE

关于microcontroller - 使用 Openocd 烧写 nrf52 芯片的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52308978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com