Introducing experimental release of Programmer Application

nRF Connect for desktop has proven its flexibility by being cross platform and ability to install and update applications based on users need.

Motivation

Our initial goal was to modernize and cover all nRF5 series features as seen in our legacy tools for Windows – namely nRF Connect and nRFgo Studio.

One popular feature found in nRFgo Studio for nRF5 series devices has been to interact with flash from a GUI (erase/recover, write). This feature has been missing in nRF Connect for Desktop.

Not final

Today we are sharing an early release of the Programmer app with you, that let you do flash based operations to nRF5 kits as in nRFgo Studio. Even though it is not a final release, we have found it useful on our side, and think you should get to try as well. The application can easily be installed from the "Add/Remove apps"-feature in nRF Connect for Desktop.

As stated previously, this is an early release which is a bit rough around the edges. It will have bugs, and the GUI is not what we plan to have for the final release.

Some highlights

We hope that it is easy to get started with this application, but here are some hints that you may be aware of:

  • Drag and drop of hex files from file managers to application is supported
  • Both merged hex files and individual hex files for various regions (SoftDevice, Application, Bootloader etc) can be flashed
  • Hex files to be flashed are queued up in the “Files” section (right side in the GUI)

 

Feedback wanted

We are depending on your feedback to be able to release the v1.0 version of the application as quick, bug free and user friendly as possible. We therefore urge you to post comments, feedback and suggestions in the comment section below in this blog post.

 

Summary

We are constantly improving and adding applications to nRF Connect Desktop. With the Programmer app, you have a cross platform and flexible managed application that we hope you like. Keep in mind that this is not the final version, and we are depending on your feedback while working our way to the final v1.0 release.

Oh, and did you know that the SDK examples comes pre-compiled and, are ready to test for its relevant target? You may test by simply drag and drop the hex files to the Programmer app. They are found under the “hex”-folder for each example in the nRF5 SDK.

 

Some relevant links

  • Download latest release of nRF Connect for Desktop here
  • nRF Connect for Desktop documentation may be found here
  • nRF Connect for Desktop on GitHub can be found here
Parents
  • It works on nRF52-DK, however on custom JLink-OB board it fails:

    2018-05-02T11:45:53.359Z INFO Target device has the communication type of serial port
    2018-05-02T11:45:54.021Z INFO Segger serial:  760021540
    2018-05-02T11:45:54.022Z INFO Segger speed:  2000  kHz
    2018-05-02T11:45:54.022Z INFO Segger version:  J-Link OB-STM32F072-128KB-CortexM compiled May  4 2017 14:43:23
    2018-05-02T11:45:54.022Z INFO Probed: 760021540.
    2018-05-02T11:45:54.022Z INFO Model: NRF52832_xxAA_REV1.
    2018-05-02T11:45:54.022Z INFO RAM: 64KiB.
    2018-05-02T11:45:54.022Z INFO Flash: 512KiB in pages of 4KiB.
    2018-05-02T11:45:54.402Z DEBUG Device flash size is updated: 0x00080000
    2018-05-02T11:45:54.595Z ERROR Error when getting device info: Error: Error occured when open device long term. Errorcode: CouldNotOpenDevice (0x4)
    Lowlevel error: JLINKARM_DLL_ERROR (ffffff9a)
    
    

    Also it somehow puts JLink in a state where board needs to be power cycled before it can be programmed again.

  • Thanks for reporting. It is always a challenge to support custom boards due to variations from Nordic devkits. Have you tried, and does your board work correctly together with nrfjprog and nRFgo Studio?

  • Hi Keton,

    To be able to debug the issue further, it would be helpful for us to get a little bit more information. If you could do the following, we would appreciate it:

    1. Get the versions of nrfjprog and segger (simply run nrfjprog --version)
    2. Get an extended J-Link log. A recipe for how to turn this can be found on seggers wiki: wiki.segger.com/Enable_J-Link_log_file
  • ~ $ nrfjprog --version
    nrfjprog version: 9.7.2
    JLinkARM.dll version: 6.32a

    Segger log:

    SEGGER J-Link V6.32a Log File
    DLL Compiled: Apr 30 2018 15:44:54
    Logging started @ 2018-05-03 18:34
    
    T1CEC 000:000 JLINK_GetDLLVersion()  returns 63201 (0000ms, 0000ms total)
    T1CEC 000:000 JLINK_IsOpen()  returns 0x00 (0000ms, 0000ms total)
    T1CEC 000:000 JLINK_EMU_SelectByUSBSN(SerialNo = 760021540)  returns 0x00 (0001ms, 0001ms total)
    T1CEC 000:001 JLINK_IsOpen()  returns 0x00 (0000ms, 0001ms total)
    T1CEC 000:001 JLINK_EMU_GetNumDevices()  returns 0x01 (0000ms, 0001ms total)
    T1CEC 000:001 JLINK_OpenEx(...)
    Firmware: J-Link OB-STM32F072-128KB-CortexM compiled May  4 2017 14:43:23
    Hardware: V1.00
    S/N: 760021540
    TELNET listener socket opened on port 19021WEBSRV 
    Starting webserver (0022ms, 0023ms total)
    T1CEC 000:001 WEBSRV Webserver running on local port 19080 (0022ms, 0023ms total)
    T1CEC 000:001   returns O.K. (0022ms, 0023ms total)
    T1CEC 000:023 JLINK_GetHWStatus(...)  returns 0x00 (0000ms, 0023ms total)
    T1CEC 000:023 JLINK_ExecCommand("Device = NRF52832_xxAA", ...). XML file found at: C:\Program Files (x86)\SEGGER\JLink_V632a\JLinkDevices.xml (0080ms, 0103ms total)
    T1CEC 000:023 C:\Program Files (x86)\SEGGER\JLink_V632a\JLinkDevices.xml evaluated successfully.Device "NRF52832_XXAA" selected.  returns 0x00 (0113ms, 0136ms total)
    T1CEC 000:136 JLINK_ExecCommand("SetRestartOnClose = 0", ...).   returns 0x01 (0000ms, 0136ms total)
    T1CEC 000:136 JLINK_ExecCommand("DisableFlashDL", ...).   returns 0x00 (0000ms, 0136ms total)
    T1CEC 000:136 JLINK_ExecCommand("SetDbgPowerDownOnClose = 1", ...).   returns 0x01 (0000ms, 0136ms total)
    T1CEC 000:136 JLINK_ExecCommand("ExcludeFlashCacheRange 0x0-0xFFFFFFFF", ...).   returns 0x00 (0000ms, 0136ms total)
    T1CEC 000:136 JLINK_TIF_Select(JLINKARM_TIF_SWD)  returns 0x00 (0001ms, 0137ms total)
    T1CEC 000:137 JLINK_SetSpeed(2000) (0000ms, 0137ms total)
    T1CEC 000:137 JLINK_IsOpen()  returns 0x01 (0000ms, 0137ms total)
    T1CEC 000:137 JLINK_IsConnected()  returns FALSE (0000ms, 0137ms total)
    T1CEC 000:137 JLINK_CORESIGHT_Configure() >0x10B TIF> >0x10F TIF> >0x0D TIF> >0x0D TIF>  returns 0 (0002ms, 0139ms total)
    T1CEC 000:139 JLINK_CORESIGHT_WriteAPDPReg(DP reg 0x02, 0x00000000) >0x0D TIF>  returns -1 (0000ms, 0139ms total)
    T1CEC 000:139 JLINK_IsOpen()  returns 0x01 (0000ms, 0139ms total)
    T1CEC 000:139 JLINK_IsConnected()  returns FALSE (0000ms, 0139ms total)
    T1CEC 000:145 JLINK_Close() (0013ms, 0152ms total)
    T1CEC 000:145  (0014ms, 0153ms total)
    T1CEC 000:145 Closed (0014ms, 0153ms total)
    

    nRF Connect log:

    2018-05-03T16:33:57.162Z INFO Application data folder: C:\Users\keton\AppData\Roaming\nrfconnect\pc-nrfconnect-programmer
    2018-05-03T16:33:57.225Z DEBUG App pc-nrfconnect-programmer v1.0.0-experimental official
    2018-05-03T16:33:57.225Z DEBUG App path: C:\Users\keton\.nrfconnect-apps\node_modules\pc-nrfconnect-programmer
    2018-05-03T16:33:57.225Z DEBUG nRFConnect 2.3.0 is supported by the app (2.x)
    2018-05-03T16:33:57.225Z DEBUG nRFConnect path: C:\Users\keton\AppData\Local\Programs\nrfconnect\resources\app.asar
    2018-05-03T16:33:57.225Z DEBUG HomeDir: C:\Users\keton
    2018-05-03T16:33:57.225Z DEBUG TmpDir: C:\Users\keton\AppData\Local\Temp
    2018-05-03T16:33:59.262Z INFO Target device has the communication type of serial port
    2018-05-03T16:33:59.949Z INFO Segger serial:  760021540
    2018-05-03T16:33:59.949Z INFO Segger speed:  2000  kHz
    2018-05-03T16:33:59.949Z INFO Segger version:  J-Link OB-STM32F072-128KB-CortexM compiled May  4 2017 14:43:23
    2018-05-03T16:33:59.949Z INFO Probed: 760021540.
    2018-05-03T16:33:59.949Z INFO Model: NRF52832_xxAA_REV1.
    2018-05-03T16:33:59.949Z INFO RAM: 64KiB.
    2018-05-03T16:33:59.949Z INFO Flash: 512KiB in pages of 4KiB.
    2018-05-03T16:34:00.334Z DEBUG Device flash size is updated: 0x00080000
    2018-05-03T16:34:00.858Z INFO Reading device non-volatile memory. This may take a few seconds.
    2018-05-03T16:34:07.035Z INFO Non-volatile memory has been read. 3 non-empty memory blocks identified.
    2018-05-03T16:34:07.423Z INFO SoftDevice detected, id 0xA5 (S132 v5.1.0)
    2018-05-03T16:34:11.428Z INFO Check readback protection level
    2018-05-03T16:34:11.439Z INFO Read device info
    2018-05-03T16:34:11.757Z INFO Recover
    2018-05-03T16:34:12.064Z INFO Read device info
    2018-05-03T16:34:12.242Z INFO Reset
    2018-05-03T16:34:12.488Z INFO Recovery procedure finished
    2018-05-03T16:34:12.488Z INFO Target device has the communication type of serial port
    2018-05-03T16:34:13.176Z INFO Segger serial:  760021540
    2018-05-03T16:34:13.176Z INFO Segger speed:  2000  kHz
    2018-05-03T16:34:13.176Z INFO Segger version:  J-Link OB-STM32F072-128KB-CortexM compiled May  4 2017 14:43:23
    2018-05-03T16:34:13.176Z INFO Probed: 760021540.
    2018-05-03T16:34:13.177Z INFO Model: NRF52832_xxAA_REV1.
    2018-05-03T16:34:13.177Z INFO RAM: 64KiB.
    2018-05-03T16:34:13.177Z INFO Flash: 512KiB in pages of 4KiB.
    2018-05-03T16:34:13.571Z DEBUG Device flash size is updated: 0x00080000
    2018-05-03T16:34:14.097Z INFO Reading device non-volatile memory. This may take a few seconds.
    2018-05-03T16:34:20.285Z INFO Non-volatile memory has been read. 1 non-empty memory blocks identified.
    2018-05-03T16:34:23.251Z INFO Parsing .hex file:  C:\git\smablo\sm_drivers\external\nRF5_SDK\components\softdevice\s132\hex\s132_nrf52_5.1.0_softdevice.hex
    2018-05-03T16:34:23.253Z INFO File was last modified at  19.12.2017, 15:04:15
    2018-05-03T16:34:23.366Z INFO Data block: 0x00000000-0x00000968 (0x00000968  bytes long)
    2018-05-03T16:34:23.366Z INFO Data block: 0x00001000-0x0001F084 (0x0001E084  bytes long)
    2018-05-03T16:34:23.384Z INFO SoftDevice detected, id 0xA5 (S132 v5.1.0)
    2018-05-03T16:34:25.324Z INFO Check readback protection level
    2018-05-03T16:34:25.334Z INFO Read device info
    2018-05-03T16:34:25.675Z INFO Check readback protection level
    2018-05-03T16:34:25.929Z INFO Check hex file
    2018-05-03T16:34:25.929Z INFO Program flash
    2018-05-03T16:34:26.175Z INFO Verify QSPI memory is erased
    2018-05-03T16:34:26.176Z INFO Program flash
    2018-05-03T16:34:28.673Z INFO Program QSPI memory, this may take several minutes.
    2018-05-03T16:34:28.674Z INFO Program RAM
    2018-05-03T16:34:28.674Z INFO Verify
    2018-05-03T16:34:28.674Z INFO Verify flash
    2018-05-03T16:34:29.956Z INFO Verify QSPI memory
    2018-05-03T16:34:29.957Z INFO Verify RAM
    2018-05-03T16:34:29.957Z INFO Reset
    2018-05-03T16:34:30.196Z INFO Reset
    2018-05-03T16:34:30.221Z ERROR ===============================================
    2018-05-03T16:34:30.222Z ERROR Start of program
    2018-05-03T16:34:30.222Z ERROR ===============================================
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open: HIGHLEVELNRFJPROG_dll_open: default_jlink_path parameter is NULL, latest JLINKARM DLL will be looked for and used.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open: C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin\NRFJPROG.dll found.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open: nrfjprog.dll loaded successfully.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_dll_open: Use JLINKARM DLL at C:\Program Files (x86)\SEGGER\JLink_V632a\JLinkARM.dll as default.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init: HIGHLEVELNRFJPROG_probe_init: jlink_path parameter is NULL, using default JLINKARM DLL path given with or obtained in NRFJPROG_dll_open() function.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init: Using JLINKARM DLL at C:\Program Files (x86)\SEGGER\JLink_V632a\JLinkARM.dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes: HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes: nrfjprog DLL opened.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes: Closing nrfjprog DLL.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_get_connected_probes:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init: HIGHLEVELNRFJPROG_probe_init: Read the device's family.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.222Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_without_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: Device "NRF52832_XXAA" selected.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: read_device_family.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: read_device_family.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init: Check device protection.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: connect_to_emu_without_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: Device "NRF52832_XXAA" selected.
    2018-05-03T16:34:30.223Z ERROR | HIGHLEVELNRFJPROG_getReadbackProtectionStatus: | HIGHLEVELNRFJPROG_getReadbackProtectionStatus:   NRFJPROG: FUNCTION: readback_status.
    2018-05-03T16:34:30.223Z ERROR | HIGHLEVELNRFJPROG_getReadbackProtectionStatus:   NRFJPROG: FUNCTION: readback_status.
    2018-05-03T16:34:30.223Z ERROR HIGHLEVELNRFJPROG_probe_init: Read Device Info.
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo: | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: FUNCTION: read_device_version.
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: FUNCTION: read_device_version.
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: Found SW-DP with ID 0x2BA01477
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: Found SW-DP with ID 0x2BA01477
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: Scanning AP map to find all available APs
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: AP[2]: Stopped AP scan as end of AP map has been reached
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: AP[0]: AHB-AP (IDR: 0x24770011)
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: AP[1]: JTAG-AP (IDR: 0x02880000)
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: Iterating through AP map to find AHB-AP to use
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: AP[0]: Core found
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: AP[0]: AHB-AP ROM base: 0xE00FF000
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: CPUID register: 0x410FC241. Implementer code: 0x41 (ARM)
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: Found Cortex-M4 r0p1, Little endian.
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: FPUnit: 6 code (BP) slots and 2 literal slots
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: CoreSight components:
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0] @ E00FF000
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][4]: E0040000, CID: B105900D, PID: 000BB9A1 TPIU
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:   NRFJPROG: ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  DEVICE INFO:
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  =============================
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  device_type      = 0X9
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  device_family    = 0X1
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  code_address     = 0
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  code_page_size   = 0X1000
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  code_size        = 0X80000
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  uicr_address     = 0X10001000
    2018-05-03T16:34:30.224Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  info_page_size   = 0X1000
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  code_ram_present = 0X1
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  code_ram_address = 0X800000
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  data_ram_address = 0X20000000
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  ram_size         = 0X10000
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  qspi_present     = 0
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  xip_address      = 0
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  xip_size         = 0
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  pin_reset_pin    = 0X15
    2018-05-03T16:34:30.225Z ERROR | HIGHLEVELNRFJPROG_readDeviceInfo:  =============================
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_probe_init:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program: HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: connect_to_emu_without_snr.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Device "NRF52832_XXAA" selected.
    2018-05-03T16:34:30.226Z ERROR | HIGHLEVELNRFJPROG_getReadbackProtectionStatus: | HIGHLEVELNRFJPROG_getReadbackProtectionStatus:   NRFJPROG: FUNCTION: readback_status.
    2018-05-03T16:34:30.226Z ERROR | HIGHLEVELNRFJPROG_getReadbackProtectionStatus:   NRFJPROG: FUNCTION: readback_status.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program: HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: disable_bprot.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: disable_bprot.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Found SW-DP with ID 0x2BA01477
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Found SW-DP with ID 0x2BA01477
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Scanning AP map to find all available APs
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: AP[2]: Stopped AP scan as end of AP map has been reached
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: AP[0]: AHB-AP (IDR: 0x24770011)
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: AP[1]: JTAG-AP (IDR: 0x02880000)
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Iterating through AP map to find AHB-AP to use
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: AP[0]: Core found
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: AP[0]: AHB-AP ROM base: 0xE00FF000
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: CPUID register: 0x410FC241. Implementer code: 0x41 (ARM)
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Found Cortex-M4 r0p1, Little endian.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FPUnit: 6 code (BP) slots and 2 literal slots
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: CoreSight components:
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0] @ E00FF000
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][4]: E0040000, CID: B105900D, PID: 000BB9A1 TPIU
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Reset: Halt core after reset via DEMCR.VC_CORERESET.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: Reset: Reset device via AIRCR.SYSRESETREQ.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program: Allocate program buffers.
    2018-05-03T16:34:30.226Z ERROR HIGHLEVELNRFJPROG_program: Erase device.
    2018-05-03T16:34:30.226Z ERROR | HIGHLEVELNRFJPROG_erase: | | HIGHLEVELNRFJPROG_eraseSectors: | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: read_region_0_size_and_source.
    2018-05-03T16:34:30.226Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: read_region_0_size_and_source.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.227Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: erase_page.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors: Applying system reset.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: Reset: Halt core after reset via DEMCR.VC_CORERESET.
    2018-05-03T16:34:30.228Z ERROR | | HIGHLEVELNRFJPROG_eraseSectors:   NRFJPROG: Reset: Reset device via AIRCR.SYSRESETREQ.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program: Verify that QSPI is erased before programming.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verifyErasedQSPI: HIGHLEVELNRFJPROG_program: Programming...
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: read_region_0_size_and_source.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: read_region_0_size_and_source.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: write.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program:   NRFJPROG: FUNCTION: write.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_program: Done programming.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verify: | HIGHLEVELNRFJPROG_verify: Check memory ranges.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verify: Allocate program buffers.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verify: Verifying...
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verify:   NRFJPROG: FUNCTION: read.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_verify:   NRFJPROG: FUNCTION: read.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset: | HIGHLEVELNRFJPROG_reset: Perform system reset.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: Reset: Halt core after reset via DEMCR.VC_CORERESET.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: Reset: Reset device via AIRCR.SYSRESETREQ.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: go.
    2018-05-03T16:34:30.228Z ERROR | HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: go.
    2018-05-03T16:34:30.228Z ERROR   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.228Z ERROR   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_reset: HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.228Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: open_dll.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: connect_to_emu_with_snr.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: connect_to_emu_without_snr.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: enum_emu_snr.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: Device "NRF52832_XXAA" selected.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset: HIGHLEVELNRFJPROG_reset: Perform system reset.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: JLinkARM.dll CORESIGHT_WriteAPDPReg returned error -1.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: JLinkARM.dll CORESIGHT_WriteAPDPReg returned error -102.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset: Failed while performing system reset!
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset: Failed resetting the device.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.229Z ERROR HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: close_dll.
    2018-05-03T16:34:30.229Z ERROR 
    

  • I've had a look at those logs, and I think that the relevant part is the very last bit:

    HIGHLEVELNRFJPROG_reset: HIGHLEVELNRFJPROG_reset: Perform system reset.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: sys_reset.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: JLinkARM.dll CORESIGHT_WriteAPDPReg returned error -1.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: JLinkARM.dll CORESIGHT_WriteAPDPReg returned error -102.
    HIGHLEVELNRFJPROG_reset: Failed while performing system reset!
    HIGHLEVELNRFJPROG_reset: Failed resetting the device.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: close_dll.
    HIGHLEVELNRFJPROG_reset:   NRFJPROG: FUNCTION: close_dll.

    You mentioned that you're using your own board. Perhaps you have your reset pin configured differently than the nordic devkits, and this is confusing the jlink libraries when trying to reset the board? Can you perform a reset through the command-line tools, or does a similar error show up?

  • I can perform reset via DAP write. My boards aren't configured for reset by GPIO (relevant bit in UICR is not set).

Comment Children