我正在使用UCOS-II,我的项目的底层操作系统。现在,我遇到了一个对我来说非常困难的问题。我希望有人能给我一些建议。 我在 Cortex-M4 上运行它,下图让我感到困惑。
正如你所看到的,我在SRAM中找到了MSP堆栈的顶部,我发现整个MSP堆栈的1/2被EXC_RETURN覆盖,这让我很困惑。由于我的项目代码量相当大(我在测试过程中发现了这个问题),所以我不太确定应该贴出哪部分代码。我对UCOS-II代码几乎没有修改,全部来自官方Git仓库。
我花了很长时间才找到这个问题。我尝试解决并阅读了UCOS-II相关汇编代码,但没有顺利解决问题。
这个问题我已经解决了! ! ! 原因是我在自己的PendSV函数中进一步调用了UCOS的PendSV,这样会导致函数调用栈多了一层。当进入我的PendSV时,堆栈将切换到MSP,并且0xffffffffd将被推入MSP。 ,这会导致 MSP 堆栈被 0xffffffffd 填充