【发布时间】:2021-07-04 04:03:35
【问题描述】:
我使用的是 NXP S32K118 Cortex M0+ 处理器
我有一个用于调用不同任务的“调度程序”函数,我需要执行以下操作:
-
为这个“调度器”函数使用主堆栈指针(MSP)
-
将进程堆栈指针 (PSP) 用于从该调度程序函数调用的计划任务列表。
我在 ram 中定义了 3 个堆栈(主堆栈、辅助堆栈 1、辅助堆栈 2)。这个想法是调度程序函数使用主堆栈,从这里调用的计划任务使用辅助堆栈1或辅助堆栈2,所以我在调度程序中时需要从MSP切换到PSP,然后再调用相应的任务,并在相应的任务完成后从 PSP 切换回 MSP 并返回调度程序。
我知道如何切换这些指针写入 PSP/MSP/CONTROL 寄存器,但我遇到的问题是我不知道如何进行此上下文切换/除了简单地更改堆栈指针之外我还需要做什么为了保持所有堆栈正常工作,所以我在这里只是寻找任何帮助/提示,如果有人知道如何正确实现这一点。
【问题讨论】:
标签: assembly arm stack cortex-m context-switch