运行 UCOS-II RTOS 的 Cortex-M4 上的 MSP 堆栈溢出

问题描述 投票:0回答:1

我正在使用UCOS-II,我的项目的底层操作系统。现在,我遇到了一个对我来说非常困难的问题。我希望有人能给我一些建议。 我在 Cortex-M4 上运行它,下图让我感到困惑。

正如你所看到的,我在SRAM中找到了MSP堆栈的顶部,我发现整个MSP堆栈的1/2被EXC_RETURN覆盖,这让我很困惑。由于我的项目代码量相当大(我在测试过程中发现了这个问题),所以我不太确定应该贴出哪部分代码。我对UCOS-II代码几乎没有修改,全部来自官方Git仓库。

我花了很长时间才找到这个问题。我尝试解决并阅读了UCOS-II相关汇编代码,但没有顺利解决问题。

stack-overflow cortex-m rtos ucos
1个回答
0
投票

这个问题我已经解决了! ! ! 原因是我在自己的PendSV函数中进一步调用了UCOS的PendSV,这样会导致函数调用栈多了一层。当进入我的PendSV时,堆栈将切换到MSP,并且0xffffffffd将被推入MSP。 ,这会导致 MSP 堆栈被 0xffffffffd 填充

© www.soinside.com 2019 - 2024. All rights reserved.