This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Resetting device via python bindings

I am developing a tool that will be using the existing NRF51 dongle to run the S130 SD and it is being written in Python. There is no way to change any of these parameters since dev has been going for years on the tool chain via a different chip supplier for BLE. Even if I close the device I cannot reconnect to it since it's already running in a state that I cannot guess since I have multiple tools. If I just power through things I run afoul of already registered base UUIDs and other things that take resources.

Is there any way from python to clear out the state of the SD back to the one from a fresh boot. I saw a thread there a SD call can be made to reset the entire device (which would be fine with me) however in 0.5.0 python swig bindings I do not see it in there. Unless there is some way to get the JLINK serial number from the python bindings I cannot simply call the nrfjprog --reset command since I have multiple jlink pods/dongles on the system and I need to target the one that I have currently selected (which is done via the COMX port number)

-Jim

Parents
  • Hi Jim,

    Thanks for the clarification. Sorry that I wasn't sure you were using the BLE driver or the Master Emulator. But you were right, you mentioned v0.5.0 and python.

    On the BLE connectivity set-up we use an extra GPIO pin to do physical pin reset on the connectivity chip. We are actually working to implement the sd_nvic_SystemReset() in the future release of the serialization firmware.

    What you can do for now if you don't plan to wait for the release that has the soft reset API provided is either:

    • Implement your own soft reset API on both the connectivity firmware on the nRF51 and the python bindings.

    • Use nrfjprog --reset with the Jlink serial number match with the COM port that you are connected to. You can find the corresponding Jlink serial number for the COM port using Windows Registry. The solution is described here. The registry section you should look into is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB. You would need to use the ParentIdPrefix to match them.

  • Thanks for the response. I'll probably use nrfjprog as long as I can link the com port to the serial number via the registry. That was the part that was missing for me. I'll look forward to seeing the updated python bindings with the API exposed to do the reset as that would be the cleanest way for me to use. I have other questions that I will be posting about the com ports. Windows often renumerates USB serial devices and moves port numbers around while keeping power on the device. My old system would chase the port around and reconfigure the port to allow the retry manager to start working again. With moving over to the S130/Python stack the com port management is different and I want to know what Nordic is recommending as the correct way to keep chasing windows. Can I just setup the serial connection again while leaving the stack alone and will it keep working?

Reply
  • Thanks for the response. I'll probably use nrfjprog as long as I can link the com port to the serial number via the registry. That was the part that was missing for me. I'll look forward to seeing the updated python bindings with the API exposed to do the reset as that would be the cleanest way for me to use. I have other questions that I will be posting about the com ports. Windows often renumerates USB serial devices and moves port numbers around while keeping power on the device. My old system would chase the port around and reconfigure the port to allow the retry manager to start working again. With moving over to the S130/Python stack the com port management is different and I want to know what Nordic is recommending as the correct way to keep chasing windows. Can I just setup the serial connection again while leaving the stack alone and will it keep working?

Children
No Data
Related