Thread 中讨论的其他器件:SYSBIOS
您好!
我的软件遇到了一个问题、该问题导致它由于堆栈溢出问题而随机失败。 我刚开始使用一个包含大约10个任务的 RTOS。 当中断发生时、它主要位于其中一个中断的堆栈内。 为此、所有任务堆栈必须较大以适应各种中断的随机发生。 这不仅浪费了大量内存、而且我缓慢地达到了部件的内存极限。
我的问题是、如何仅针对中断将堆栈指针重定向到专用堆栈段。 另外、堆栈指针的重写如何与中断嵌套交互。 根据我的理解、ISR 的每个条目必须首先检查栈指针是否在其专用段内、如果不执行重写、则只需保持原样。 进行堆栈点重定位的最后一个 ISR 必须将其恢复为原始值。
在软件和链接器中实现此目标的正确方法是什么、是否有其他方法可以实现类似的目标。 重要中断的数量相当小(3个左右)、最好使用一个其它技术来为每个中断静态建立一个堆栈、而不是为所有中断共用一个堆栈。
提前感谢
托比亚斯