diff --git a/bsp/nrf/radio_nrf5340_app.c b/bsp/nrf/radio_nrf5340_app.c index f0405ebe..bd2b712b 100644 --- a/bsp/nrf/radio_nrf5340_app.c +++ b/bsp/nrf/radio_nrf5340_app.c @@ -57,6 +57,16 @@ void db_radio_init(radio_cb_t callback, db_radio_ble_mode_t mode) { db_hfclk_init(); + // VREQCTRL (address at 0x41004000 => periph ID is 4) + NRF_SPU_S->PERIPHID[4].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | + SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | + SPU_PERIPHID_PERM_PRESENT_IsPresent << SPU_PERIPHID_PERM_PRESENT_Pos); + + // POWER (address at 0x41005000 => periph ID is 5) + NRF_SPU_S->PERIPHID[5].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | + SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | + SPU_PERIPHID_PERM_PRESENT_IsPresent << SPU_PERIPHID_PERM_PRESENT_Pos); + // RADIO (address at 0x41008000 => periph ID is 8) NRF_SPU_S->PERIPHID[8].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | @@ -89,8 +99,8 @@ void db_radio_init(radio_cb_t callback, db_radio_ble_mode_t mode) { NVIC_SetPriority(IPC_IRQn, IPC_IRQ_PRIORITY); // Start the network core - if (NRF_RESET_S->NETWORK.FORCEOFF != 0) { - NRF_RESET_S->NETWORK.FORCEOFF = 0; + if (NRF_RESET_NS->NETWORK.FORCEOFF != 0) { + NRF_RESET_NS->NETWORK.FORCEOFF = 0; _network_call(DB_IPC_NONE, DB_IPC_NET_READY_ACK); } diff --git a/projects/03app_nrf5340_app/main.c b/projects/03app_nrf5340_app/main.c index bc52fcce..891177f2 100644 --- a/projects/03app_nrf5340_app/main.c +++ b/projects/03app_nrf5340_app/main.c @@ -20,6 +20,16 @@ int main(void) { // Mark peripherals required by the network as non secure + // VREQCTRL (address at 0x41004000 => periph ID is 4) + NRF_SPU_S->PERIPHID[4].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | + SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | + SPU_PERIPHID_PERM_PRESENT_IsPresent << SPU_PERIPHID_PERM_PRESENT_Pos); + + // POWER (address at 0x41005000 => periph ID is 5) + NRF_SPU_S->PERIPHID[5].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | + SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | + SPU_PERIPHID_PERM_PRESENT_IsPresent << SPU_PERIPHID_PERM_PRESENT_Pos); + // RADIO (address at 0x41008000 => periph ID is 8) NRF_SPU_S->PERIPHID[8].PERM = (SPU_PERIPHID_PERM_SECUREMAPPING_UserSelectable << SPU_PERIPHID_PERM_SECUREMAPPING_Pos | SPU_PERIPHID_PERM_SECATTR_NonSecure << SPU_PERIPHID_PERM_SECATTR_Pos | @@ -75,7 +85,7 @@ int main(void) { } // Start the network core - NRF_RESET_S->NETWORK.FORCEOFF = 0; + NRF_RESET_NS->NETWORK.FORCEOFF = 0; while (1) { __WFE();