Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf52840.svd from nRF5 SDK 15.2.0 does not let SES show register arrays

Hi,

I am running Segger Embedded Studio (4.10a) to get used to the Nordic DK for the nRF52840. Now I have found, that the register display seems not to be able to show some of the SFRs. For example, if I activate the UICR group, I get the following registers: UNUSED0, UNUSED1, UNUSED2, UNUSED3, APPROTECT, NFCPINS, DEBUGCTRL and REGOUT0. But there are a lot more registers according the the manual, all missing registers are arrays:
NRFFW[0]-NRFFW[14], NRFHW[0]-NRFHW[11], CUSTOMER[0]-CUSTOMER[31] and PSELRESET[0]-PSELRESET[1]. The same applies to other SFR groups.
I have checked for the missing registers in the nrf52840.svd file which is part of the SDK 15.2.0, and found for example this entry:
<register>
<dim>0xF</dim>
<dimIncrement>0x4</dimIncrement>
<name>NRFFW[%s]</name>
<description>Description collection[n]: Reserved for Nordic firmware design</description>
<addressOffset>0x014</addressOffset>
<access>read-write</access>
<resetValue>0xFFFFFFFF</resetValue>
<fields>
<field>
<name>NRFFW</name>
<description>Reserved for Nordic firmware design</description>
<lsb>0</lsb>
<msb>31</msb>
</field>
</fields>
</register>

I have stated this question already in the Segger forum, but got a redirect to ask here. I have no idea, if the SVD file is wrong or the Segger Embedded Studio has a bug.

Regards
Dirk

  • Hi,

    Thank you for reporting this.

    This looks like a bug in Segger Embedded studio. Maybe they can't read hex numbers in dim* tags. The dim* tags are defined as containing a scaled non negative integer, defined as:

    <!-- scaledNonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimar format -->
      <xs:simpleType name="scaledNonNegativeInteger">
        <xs:restriction base="xs:string">
          <xs:pattern value="[+]?(0x|0X|#)?[0-9a-fA-F]+[kmgtKMGT]?"/>
        </xs:restriction>
      </xs:simpleType>

    If segger embedded studio can read svd files, it should be able to read all numerical elements as hex as well as decimal.

    We will also report this to Segger.

  • Hi Sigurd,

    thank you, your guess is right. I have replaced the hex values in the <dim> and <dimIncrement> elements by decimal values and now the register arrays appear.

    Btw. I had tried that before without success, After modification of the svd file it seems not to be enough if you close and re-open the Segger Embedded Studio, you have also to unselect and then select again the appropriate register group in the "Group" window in order to get a correct register array display.

    Regards

    Dirk

Related