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?

  • 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).

  • We have been looking into it, and we can not figure out the error from the logs. What seems to be clear is that there is an issue connecting after programming.

    As you are using a custom board, it is hard for us to debug. We have not been able to reproduce it on our hardware.

    We will continue to look into it, and will hopefully include a fix in a future release.

  • just FYI upgrading Segger JLink drivers to 6.32c solved the problems. Now it works on our custom boards without reset pin attached.

Comment Children