I've just started using Segger with a Nordic nRF51822 on a PCA1000 dev board. Many of the features work (enough so that I'm sure the hardware is at least functional) and I can flash code using the Windows nRFGo application. However, my development environment (gcc, gdb, gnu-binutils) is on a Debian Linux box.
JLinkExe-4.8.2 (and JLinkGDBServer) on Linux work somewhat, but I can't get JLinkExe to flash code, or even to load a binary file into RAM. It can change RAM locations one at a time, and I got it to do a complete Flash erase by poking values into the NVMC, but when I issue a loadbin command, it doesn't do it:
dhm@aluminum-debian$ JLinkExe -if SWD -device nRF51822 -speed 1000
SEGGER J-Link Commander V4.82 ('?' for help)
Compiled Mar 10 2014 19:08:40
Info: Device "NRF51822_XXAA" selected (257 KB flash, 16 KB RAM).
DLL version V4.82, compiled Mar 10 2014 19:08:37
Firmware: J-Link OB-SAM3U128 V1 compiled Dec 11 2013 20:20:11
Hardware: V1.00
S/N: xxxxxxxxx
VTarget = 3.300V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Found 1 JTAG device, Total IRLen = 4:
Cortex-M0 identified.
Target interface speed: 1000 kHz
J-Link>mem 20000400 20
20000400 = 06 20 FF 4B C6 C0 B9 F9 80 20 AD BF 03 12 FD 7D
20000410 = F7 ED 92 D0 FB FF 00 00 FB FF 01 C0 FF 7F C8 40
J-Link>loadbin blink.bin 20000400
Downloading file... [blink.bin]
J-Link>mem 20000400 20
20000400 = 06 20 FF 4B C6 C0 B9 F9 80 20 AD BF 03 12 FD 7D
20000410 = F7 ED 92 D0 FB FF 00 00 FB FF 01 C0 FF 7F C8 40
J-Link>q
Display More
I ran strace to see what was going on, and JLinkExe never even attempts to open the binary file. Am I using the loadbin command wrong? Is it broken in this version of the Linux software?
Thanks for any help!