First: THANKS for making this critical tool available!
I have tried several things, but can't see a way to specific the AC (larger RAM, FLASH) version of the part? I'm guessing that is why I'm seeing "Error: code" on the final programming step:
CWD: /var/folders/w7/3xbs40694mbgg7y657j4t28c0000gn/T/408B0AD8-0548-4B46-B6DB-DEE17A9AFD18
Command: /Applications/SEGGER/JLink/JLinkExe JLINK_GetEmuList.1 -if swd -device nrf51822
SEGGER J-Link Commander V5.02f ('?' for help)
Compiled Oct 2 2015 20:55:08
Script file read successfully.
Info: Device "NRF51822_XXAA" selected.
. . .
Sleep(100)
J-Link[0]: Connection: USB, Serial number: 609302209, ProductName: J-Link PLUS
Sleep(200)
Script processing completed.
Error: code
Is there a way to get it to use "NRF51822_XXAC"?
No there's no difference as far as the segger is concerned between the different versions, it just specifies nrf51 (if you look at the command line) and it just happens the JLink finds the first one and prints it, but they all are actually the same. In this case it's only trying to get the list of emulators anyway and that doesn't care about the chip at all, so you have a problem and I don't know what it is, but it's not related to the AA/AC designation.
If you installed the command line tools, try
nrfjprog -v list
that will do what that code is doing there, listing out emulators, it may be verbose enough to point out the issue.
Thanks for your rapid attention on my inquiry.
Hmmm - it seems to be able to identify the emulator just fine (and a previous wipe command succeeds):
nrfjprog -v list
CWD: /var/folders/w7/3xbs40694mbgg7y657j4t28c0000gn/T/0AF2BC7D-240D-4088-9CAA-D137630F7F97
Command: /usr/local/bin/JLinkExe JLINK_GetVersion.0 -if swd -device nrf51822
SEGGER J-Link Commander V5.02f ('?' for help)
Compiled Oct 2 2015 20:55:08
Script file read successfully.
Info: Device "NRF51822_XXAA" selected.
DLL version V5.02f, compiled Oct 2 2015 20:55:03
Firmware: J-Link V9 compiled Sep 18 2015 19:53:12
Hardware: V9.30
S/N: 609302209
Feature(s): RDI, FlashBP, FlashDL, JFlash, GDB
Emulator has Trace capability
VTarget = 1.780V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Info: CoreSight components:
Info: ROMTbl 0 @ F0000000
Info: ROMTbl 0 [0]: F00FF000, CID: B105100D, PID: 000BB471 ROM Table
Info: ROMTbl 1 @ E00FF000
Info: ROMTbl 1 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
Info: ROMTbl 1 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
Info: ROMTbl 1 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
Info: ROMTbl 0 [1]: 00002000, CID: B105900D, PID: 000BB9A3 ???
Cortex-M0 identified.
Target interface speed: 100 kHz
Processing script file...
Sleep(100)
Script processing completed.
CWD: /var/folders/w7/3xbs40694mbgg7y657j4t28c0000gn/T/0AF2BC7D-240D-4088-9CAA-D137630F7F97
Command: /usr/local/bin/JLinkExe JLINK_GetEmuList.1 -if swd -device nrf51822
SEGGER J-Link Commander V5.02f ('?' for help)
Compiled Oct 2 2015 20:55:08
Script file read successfully.
Info: Device "NRF51822_XXAA" selected.
DLL version V5.02f, compiled Oct 2 2015 20:55:03
Firmware: J-Link V9 compiled Sep 18 2015 19:53:12
Hardware: V9.30
S/N: 609302209
Feature(s): RDI, FlashBP, FlashDL, JFlash, GDB
Emulator has Trace capability
VTarget = 1.780V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Info: CoreSight components:
Info: ROMTbl 0 @ F0000000
Info: ROMTbl 0 [0]: F00FF000, CID: B105100D, PID: 000BB471 ROM Table
Info: ROMTbl 1 @ E00FF000
Info: ROMTbl 1 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
Info: ROMTbl 1 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
Info: ROMTbl 1 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
Info: ROMTbl 0 [1]: 00002000, CID: B105900D, PID: 000BB9A3 ???
Cortex-M0 identified.
Target interface speed: 100 kHz
Processing script file...
Sleep(100)
J-Link[0]: Connection: USB, Serial number: 609302209, ProductName: J-Link PLUS
Sleep(200)
Script processing completed.
Serial Numbers: 609302209
I'll see if I can identify a different issue of some sort.
Actually, here is the full trace from the nrfjprog --code command down (in case you see anything obvious):
nrfjprog --verbose program --code _build_debug/indigo_nrf51822_sdk810_sd800-combined.hex
CWD: /var/folders/w7/3xbs40694mbgg7y657j4t28c0000gn/T/E62F403A-32C9-455F-969B-27C2150CB050
Command: /usr/local/bin/JLinkExe JLINK_GetVersion.0 -if swd -device nrf51822
SEGGER J-Link Commander V5.02f ('?' for help)
Compiled Oct 2 2015 20:55:08
Script file read successfully.
Info: Device "NRF51822_XXAA" selected.
DLL version V5.02f, compiled Oct 2 2015 20:55:03
Firmware: J-Link V9 compiled Sep 18 2015 19:53:12
Hardware: V9.30
S/N: 609302209
Feature(s): RDI, FlashBP, FlashDL, JFlash, GDB
Emulator has Trace capability
VTarget = 1.782V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Info: CoreSight components:
Info: ROMTbl 0 @ F0000000
Info: ROMTbl 0 [0]: F00FF000, CID: B105100D, PID: 000BB471 ROM Table
Info: ROMTbl 1 @ E00FF000
Info: ROMTbl 1 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
Info: ROMTbl 1 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
Info: ROMTbl 1 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
Info: ROMTbl 0 [1]: 00002000, CID: B105900D, PID: 000BB9A3 ???
Cortex-M0 identified.
Target interface speed: 100 kHz
Processing script file...
Sleep(100)
Script processing completed.
CWD: /var/folders/w7/3xbs40694mbgg7y657j4t28c0000gn/T/E62F403A-32C9-455F-969B-27C2150CB050
Command: /usr/local/bin/JLinkExe JLINK_GetEmuList.1 -if swd -device nrf51822
SEGGER J-Link Commander V5.02f ('?' for help)
Compiled Oct 2 2015 20:55:08
Script file read successfully.
Info: Device "NRF51822_XXAA" selected.
DLL version V5.02f, compiled Oct 2 2015 20:55:03
Firmware: J-Link V9 compiled Sep 18 2015 19:53:12
Hardware: V9.30
S/N: 609302209
Feature(s): RDI, FlashBP, FlashDL, JFlash, GDB
Emulator has Trace capability
VTarget = 1.783V
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Info: CoreSight components:
Info: ROMTbl 0 @ F0000000
Info: ROMTbl 0 [0]: F00FF000, CID: B105100D, PID: 000BB471 ROM Table
Info: ROMTbl 1 @ E00FF000
Info: ROMTbl 1 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
Info: ROMTbl 1 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
Info: ROMTbl 1 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
Info: ROMTbl 0 [1]: 00002000, CID: B105900D, PID: 000BB9A3 ???
Cortex-M0 identified.
Target interface speed: 100 kHz
Processing script file...
Sleep(100)
J-Link[0]: Connection: USB, Serial number: 609302209, ProductName: J-Link PLUS
Sleep(200)
Script processing completed.
Error: code
I should mention: I'm building a combined image (soft device, app, bootloader) which has worked great under Windows, but have just set up the project under OSX--it wasn't entirely clear to me whether nrfjprog supported programming a combined image (since it has --code, --softdevice, and --bootloader flags which seem to suggest mutual exclusivity)?
ok so I assumed you were using the gui version to start with, you should try that, it may tell you something more useful about why it doesn't like your code file. Then again it may not. Either it can't read it, or it fails some internal tests and refuses to program it because it thinks the code layout doesn't make any sense. Certainly haven't tried with a monster-merged file before.
OK - I wasn't even aware there was a GUI version (but see it now). It appears that it doesn't support a combined image. When I load my combined image under 'code', then it requires either a soft device or bootloader (first clue that it can't grok a combined image). So I add a soft device image (the same one that is part of the combined image--but stand-alone) and then it shows the following error in red:
Error(s): Code must start at 0x00018000, not 0x00000000
So, again, it doesn't seem to handle a combined image. I guess I'll have to try breaking it up into a piecemeal series of steps.
Thanks for your help on this.
What's the actual error when you JUST specify the combined image and check the 'code' box and don't check either of the other boxes for softdevice or bootloader? It's quite possible to load on just code as long as the code starts at 0x00 (which yours does) and it can read it, which it appears it can. You should even be able to see the individual blocks in the hex file under the code.
For instance it's quite possible to put a simple no-softdevice blinky on at 0x00 just by specifying the code and nothing else, so I'm not quite sure what it doesn't like here.
Yep - so simple! That's the ticket. I just need to treat it as arbitrary code (no soft device or bootloader since they are already in my combined image). Makes me wonder sometimes how I've managed to do software development for 30+ years and still find I'm totally clueless some days!!
Thanks for your help - that worked just fine.
My favourite bug reports are those where I don't have to fire up Xcode to fix anything.