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

I get a HardFault, when I call a Non-Secure function (Nucleo L552ZE-Q)

Hello everyone,

I am currently working on an OS that currently doesn't support TrustZone, where I want to do one simple task: Jump to a non-secure function and immediatly return to the secure function.

I modified the function pointer to the ns_function according to this link and configured the SAU according to this page and used the -mcmse flag, TZEN is also set. However, I get a forced Hard Fault, when I try to execute the non-secure code. Why does that happen? Is there something else I have to take into account?

I've only worked once with the Nucleo L552ZE-Q, which was the only time I ever worked with TrustZone. Furthermore, I cannot use the STM32CubeIDE, since the project was not developed with it. Also, the code for secure and non-secure should be in the same binary.

I am using version 11.2.1 of the toolchain from arm.

Thank you very much for any tips you can give me.

Parents
  • "working on an OS that currently doesn't support TrustZone" is a bit confusing statement. 
    The processor can support the Trustzone feature, but your OS cannot support Trustzone feature? 
    If that's the case, both your OS and application code actually run in the same world, which can either be non-secure world, or secure world. 
    You can not jump from one world to the other world except the OS can support the world switch?

Reply
  • "working on an OS that currently doesn't support TrustZone" is a bit confusing statement. 
    The processor can support the Trustzone feature, but your OS cannot support Trustzone feature? 
    If that's the case, both your OS and application code actually run in the same world, which can either be non-secure world, or secure world. 
    You can not jump from one world to the other world except the OS can support the world switch?

Children