We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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