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

Silicon revision register documentation

Is there documentation on the silicon revision registers/memory locations? Different versions of the SDK seem to look at different memory locations for revision information when determining which errata to apply.

For example, in the SDK we are using in our firmware, errata 187 is looking at memory 0xF0000FE8 to see if it has 0x20 in the upper nibble. In the latest SDK (17.2), errata 187 is checking if 0x10000134 is equal to 1, 2, 3 or anything that isn't 0.

On our hardware, the register 0xF0000FE8 has 0x30 in the upper nibble, so the errata doesn't get applied, but we are having USB enumeration issues unless the USB cable is unplugged and plugged back in.

We don't want to switch SDKs at this point in our development, so I was trying to modify the errata check to include what appears to be a newer hardware revision that changed after the SDK we are using was released.

Given that I can't find documentation on either of the "silicon revision registers", I'm not sure if my patch is a good idea or not.

  • Hi,

    These registers are not documented publicly, but 0x10000134 essentially contains information about the HW revision, so the handling of this in MDK 8.35.0 which is part of SDK 17.0.2 is correct. Here you also see that the default behavior is to return true, so the errata workaround will be applied in case of a newer IC revision than what the MDK was built for. That was not the case before, which is what you are seeing.

    You can migrate to a newer MDK version without updating the SDK, but that will require some porting on your side (not too much). Alternatively if you want to avoid any potential side effects of work, you can go through the MDK you have and modify the relevant functions to always enable the errata workaround (so for instance ensure nrf52_errata_187() always returns true.).

Related