What’s the excepted programming sequence for setting the SAU.ALLNS to when you can start issuing NS transactions?
Assuming MY_BLOCK is Secure, this sequence actually writes the REGISTER:
SAU->CTRL = ALLNS_Mask;
MY_BLOCK_NS->REGISTER = 0xDEADBEEF;
This sequence doesn’t write the secure peripheral MY_BLOCK as expected:
__DMB();
Is using the DMB instruction the excepted practice to ensure that the SAU CTRL ALLNS bit is set before moving onto the next instruction?
Hiya,
The architecture requires a dsb and an isb to guarantee visibility of any changes made by writing to the System Control Space (eg updating an SAU register.)
Try:
__DSB();
__ISB();
MY_BLOCK_NS->REGISTER = 0xDEADBEEF