Skip to content

Commit

Permalink
projects/03app_nrf5340_app: bsp/radio_nrf5340: enable non secure acce…
Browse files Browse the repository at this point in the history
…ss to POWER peripheral
  • Loading branch information
aabadie committed Apr 14, 2023
1 parent 92ae62c commit bab38c8
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
14 changes: 12 additions & 2 deletions bsp/nrf/radio_nrf5340_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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);
}

Expand Down
12 changes: 11 additions & 1 deletion projects/03app_nrf5340_app/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit bab38c8

Please sign in to comment.