RRAMC ERASEALL dot not work with APPROTECT enabled

Having this simple func:

```

__ramfunc void erase_all() {
printk("Erasing all... ");
uint key = irq_lock();
nrfy_rramc_erase_all_set(NRF_RRAMC);
while (!nrfy_rramc_erase_all_check(NRF_RRAMC));
irq_unlock(key);
printk("done\n");
}

```

It perfectly works with these regs:

```

App: running at "nrf54l15/cpuapp", v1.0.0-testkey+0, Zephyr build: v4.1.0-2837-g4680590fda0d, confirmed

UICR.APPROTECT0: 0xffffffff, UICR.APPROTECT1: 0xffffffff
UICR.SECUREPROTECT0: 0xffffffff, UICR.SECUREPROTECT1: 0xffffffff
UICR.AUXAPPROTECT0: 0xffffffff, UICR.AUXAPPROTECT1: 0xffffffff
UICR.ERASEPROTECT0: 0xffffffff, UICR.ERASEPROTECT1: 0xffffffff
BOOTCONF: 0xffffffff
CTRLAP.ERASEPROTECT.LOCK|DISABLE: 0x0|0x0
TAMPC: DBGEN: 0x0|0x11, NIDEN: 0x0|0x11, SPIDEN: 0x0|0x11, SPNIDEN: 0x0|0x11, AP.DBGEN 0x0|0x11
TAMPC: STATUS: 0x0, AP.DBGEN: 0x0, ERASEPROTECT: 0x0|0x10

SW3 pressed at 959991
Erasing all... done

```

But just hangs when APPROTECT only is enabled:

```

App: running at "nrf54l15/cpuapp", v1.0.0-testkey+0, Zephyr build: v4.1.0-2837-g4680590fda0d, confirmed

UICR.APPROTECT0: 0x50fa50fa, UICR.APPROTECT1: 0x50fa50fa
UICR.SECUREPROTECT0: 0xffffffff, UICR.SECUREPROTECT1: 0xffffffff
UICR.AUXAPPROTECT0: 0xffffffff, UICR.AUXAPPROTECT1: 0xffffffff
UICR.ERASEPROTECT0: 0xffffffff, UICR.ERASEPROTECT1: 0xffffffff
BOOTCONF: 0xffffffff
CTRLAP.ERASEPROTECT.LOCK|DISABLE: 0x0|0x0
TAMPC: DBGEN: 0x0|0x12, NIDEN: 0x0|0x12, SPIDEN: 0x0|0x11, SPNIDEN: 0x0|0x11, AP.DBGEN 0x0|0x11
TAMPC: STATUS: 0x0, AP.DBGEN: 0x0, ERASEPROTECT: 0x0|0x10

SW3 pressed at 1788502
Erasing all...

```

The sad thing is that nrfy_rramc_erase_all_set() do nothing when APPROTECT enabled - no erase performed at all. The fw can be started again after reset. What can be the problem ?

HW is nrf54l15dk, PCA10156 v0.9.1

Related