pynrfjprog: FICR and UICR register offsets

As far as I can tell, it is not currently possible to implement the following functionality in a simple way with pynrfjprog across the various device families.

* What is the connected device hardware ID?
* What is the memory address of the UICR CUSTOMER/OTP region?

With the upcoming deprecation of the HighLevel API (https://github.com/NordicSemiconductor/pynrfjprog/blob/master/pynrfjprog/HighLevel.py#L4), the functionality goes backwards in some respects, mostly due to the removal of `get_device_info`, which contained the base offsets of the FICR and UICR regions.

To answer these two simple questions I now need to iterate through the `read_memory_descriptors()` array to find the base addresses, and then create my own device_family->register_offset mapping, populated by reading through a number of datasheets.

Have I missed some simple method to answer these questions?

Parents
  • Hi!

    If you want something for across all the various device families, I recommend looking into nrfutil for this

  • From what I can tell, the only part of my problem that nrfutil helps with is determining the base UICR address, which is the one piece of information it is relatively easy to get from pynrfjprog.

    Neither "device list" or "device core-info" report the hardware ID, nor do they provide the UICR CUSTOMER/OTP memory address.

    I don't believe reading the hardware ID to identify the board and flashing some provisioning information to the memory region specifically intended for it is some crazy use case, it would be nice to get some exact commands that demonstrate how to do this.

Reply
  • From what I can tell, the only part of my problem that nrfutil helps with is determining the base UICR address, which is the one piece of information it is relatively easy to get from pynrfjprog.

    Neither "device list" or "device core-info" report the hardware ID, nor do they provide the UICR CUSTOMER/OTP memory address.

    I don't believe reading the hardware ID to identify the board and flashing some provisioning information to the memory region specifically intended for it is some crazy use case, it would be nice to get some exact commands that demonstrate how to do this.

Children
Related