I am porting FreeRTOS with TrustZone on LPC5500, I put FreeRTOS in secure memory, and created several user tasks in non-secure memory, as shown below:
But so far, I have not successfully switched from a secure task to a non-secure task.
How to switch from a secure task to a non-secure task?
Hi Joseph
Do you know any way to set the PSP in a non-secure task?
Non-secure software cannot set Secure PSP. Given that in your arrangement your RTOS is in Secure side, when you create the task you can allocate the Secure stack for it at the same time.
The context switching code (in Secure privileged side) can set the PSP_S.
I understand what you said, I wiil try it.
Thanks a lot.
Regarding stack frame, sorry for not clear. I meant the stack frame you created in Non-secure stack for the exception return to take place. What is in that stack frame?
Sorry for delay. I must have missed the notification email (too many emails).
A task (assume Non-secure unprivileged) can update SP (R13), and if the current selected SP is PSP, then it is updating PSP_NS.
But normally in an RTOS environment, the initial value of PSP_NS is initialized by the OS (not by the task itself) before the Non-secure task starts.
regards,
Joseph