关于STM32主堆栈指针(MSP)与进程堆栈指针(PSP)

2019-07-14 16:28发布

我正在阅读STM32编程手册和“ 第18页 ”的某处,我看到了这两种堆栈指针。我一直认为只有一个堆栈,因此只有一个堆栈指针存在于MCU中,现在我对这些指针的含义感到困惑,主题和每个指针之间的差异用于什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
723662364d
1楼-- · 2019-07-14 23:29
总是写自己的操作系统听起来很有挑战 我确实有一些我喜欢的操作系统,对于“最小但又名副其实的多任务RTOS”,我指的是ChibiOS。他去了Chromium EC,因为他需要一些东西来控制ARM SoC作为主处理器的嵌入式电路板中的电源,风扇和东西。这正是该操作系统的设计目的(仅适用于他的USRP E系列SDR设备,而不是用于“chromebook”笔记本电脑。
ZXH22770
2楼-- · 2019-07-15 02:26
你是正确的,在皮质m(你的stm32是,虽然我不能说哪个变体,除非你指定一个部分)有一个活动堆栈指针r13,但这可以是MSP或PSP。
两个原因是使用户能够轻松实现多任务“操作系统”。
我的想法是,PSP各个任务使用或进程堆栈指针,内核使用MSP。
发生异常时,堆栈帧被推送到当前活动的堆栈指针,然后切换为使用MSP异常处理程序。在多任务系统中,如果调度程序导致异常,则此时您将更改PSP指向下一个任务的堆栈指针的位置,并从异常返回。然后,新堆栈指针的卸载将执行返回到下一个任务。

一周热门 更多>