This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

cpsid from non-secure triggers SecureFault

Hello,

I am using TrustZone together with Trusted Firmware-M and Zephyr on the AN521 board in QEMU. After setting SAU and MPC memory regions, during Zephyr setup, "cpsid i" is called using inline assembly. However, this call from non-secure code memory triggers a SecureFault with the Attribution unit violation flag, suggesting memory access to a secure address. I cannot understand how this instruction could cause the SecureFault and thus have no idea how to fix it. The SecureFault Address Register is set as valid and holds an address within the non-secure stack, which is part of the non-secure region defined by the SAU. Do you have any ideas or suggestions which might help me?

EDIT: The instruction was not the problem (see my response down below)

Martin

Parents
  • PM, bit [0]
    Exception mask register. Setting the Secure PRIMASK to one raises the execution priority to 0. Setting
    the Non-secure PRIMASK to one raises the execution priority to 0 if AIRCR.PRIS is clear, or 0x80 if
    AIRCR.PRIS is set.

    Could it be, that an interrupt with priority < 0x80 is active?

Reply
  • PM, bit [0]
    Exception mask register. Setting the Secure PRIMASK to one raises the execution priority to 0. Setting
    the Non-secure PRIMASK to one raises the execution priority to 0 if AIRCR.PRIS is clear, or 0x80 if
    AIRCR.PRIS is set.

    Could it be, that an interrupt with priority < 0x80 is active?

Children