Programming nRF52 with OpenOCD

Hi, I have a BMD-300 (nRF52) module that I'm attempting to program with OpenOCD and an ST-link from Linux (it worked great for nRF51 so I was trying to keep the same tools).

$OPENOCD/src/openocd -s $OPENOCD/tcl -f interface/stlink-v2.cfg -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf52 mass_erase" -c "program $FIRMWARE verify" -c reset -c exit

I'm using OpenOCD from here: github.com/.../openocd

And it says:

Open On-Chip Debugger 0.10.0-dev-00282-gbd6642f (2016-05-09-13:36)
Licensed under GNU GPL v2
For bug reports, read
	openocd.org/.../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 v14 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.787037
Info : nrf52.cpu: hardware has 0 breakpoints, 2 watchpoints
Error: timed out while waiting for target halted
TARGET: nrf52.cpu - Not halted
in procedure 'reset' 
in procedure 'ocd_bouncer'

It definitely knows the chip is connected and can read the chip ID off it, as it comes up with different errors with the chip connected and trying to flash with the nrf51 code returns:

Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x0bb11477

Do you have any ideas what the problem might be? Error: timed out while waiting for target halted seems like the issue, but I'm not sure how to fix it... As I say, this worked (connecting SWCLK, SWDIO, GND and using target power) on nRF51 just fine. Could it be to do with the BMD-300's existing bootloader?

Parents
  • Hello, I've applied patch manually for nrf52 as suggested by ubicore, I've applied patch to these following files src/flash/nor/Makefile.am 1 src/flash/nor/drivers.c 2 src/flash/nor/nrf52.c 1056 tcl/target/nrf52.cfg

    but still it is showing error

    [email protected]:~/openocd_new$ openocd -s /home/ac2/openocd_new/tools/scripts/ -f board_nrf52.cfg -c init -c "reset init" -c halt -c "nrf52 mass_erase" -c "program /home/ac2/test_nrf52/nRF5_SDK_12.1.0_0d23e2a/examples/peripheral/blinky/pca10031/blank/armgcc/_build/nrf51422_xxac.out verify" -c reset -c exit Open On-Chip Debugger 0.10.0-dev-00419-gbcaf775-dirty (2016-11-29-13:32) Licensed under GNU GPL v2 For bug reports, read openocd.org/.../bugs.html 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 v21 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.248372 Info : nrf52.cpu: hardware has 6 breakpoints, 4 watchpoints nrf52.cpu: target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x000008e4 msp: 0x20000400 invalid command name "nrf52"

    Can you help me figure out now which steps I am missing?

  • This problem has probably been solved already, but for those peaple who will stumble here while struggling with their own version of the same, don't forget to check whether the instance of "openocd" you are using is really the one you have patched and installed. "which openocd" might prove useful.

Reply Children
No Data
Related