Hi!
I'm storing a key in the KMU for use by the ECB.
If I set the slot's destination address to an address in RAM, the KMU pushes the key there correctly, but if I instead set the destination address to &NRF_ECU00->KEY.VALUE[0], I can't push the key.
I run this code to push they key:
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (nrf_kmu_status_get(NRF_KMU) != NRF_KMU_STATUS_READY) {
printf("ERROR: KMU not ready\n");
return;
}
nrf_kmu_keyslot_set(NRF_KMU, slot_id);
nrf_kmu_event_clear(NRF_KMU, NRF_KMU_EVENT_KEYSLOT_PUSHED);
nrf_kmu_task_trigger(NRF_KMU, NRF_KMU_TASK_PUSH_KEYSLOT);
while (nrf_kmu_status_get(NRF_KMU) == NRF_KMU_STATUS_BUSY) {
/* Busy wait */
}
if (!nrf_kmu_event_check(NRF_KMU, NRF_KMU_EVENT_KEYSLOT_PUSHED)) {
printf("Failed to push key\n");
return;
}
I run this code in a mpsl timeslot handler.
I can write to the NRF_ECB00->KEY.VALUE[0] key registers there with the CPU.
Is there something more I have to do to be able to push they key directly to the ECB's KEY registers from the KMU?