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

Using customer registers to pass initialization data

Hello,

I have this scenario : I want each of my board to have a set of unique data, that I want to write along with the program, at the board initialization (this data will be uses the first time the board boots).
I have understood that I could use customer registers (in UICR) for that.

If I program my board (with "nrfjprog --program ..."), then try to write to customer registers, nrfjprog tells me they are protected, which I get.
So I tried the contrary : 
- erasing all
- writing to customer register
- program the board
- read from customer register from app

Unfortunately, I succeed writing to customer register, but they are overwritten after programming.

NRF52811
SD s112 7.0.1
SDK 16.0.0

$ nrfjprog --eraseall
    Erasing user available code and UICR flash areas.
    Applying system reset.
$ nrfjprog --memwr 0x80 --val 0x195B6635
    Parsing parameters.
    Writing.
$ nrfjprog --memrd 0x080 --n 8
    0x00000080: 195B6635 FFFFFFFF |5f[.....|
$ nrfjprog --program .my_app_bl_sd_app.hex --verify --chiperase (containing app+settings+bootloader+softdevice)
    Parsing hex file.
    Erasing user available code and UICR flash areas.
    Applying system reset.
    Checking that the area to write is not protected.
    Programming device.
    Verifying programming.
    Verified OK.
$ nrfjprog --memrd 0x080 --n 8
    0x00000080: 000007FB 00000805 |........|

What am I missing ? 
Thanks !