如果没有操作系统的话,那么,函数调用都在普通的堆栈上。如果有操作系统的话,那么,会为每个任务单独分配一个任务堆栈,任务里的函数调用都在任务堆栈中。
在有操作系统的系统中,最开始首先使用普通堆栈,任务起来以后开始使用任务堆栈,具体过程是怎么样的呢?
还有如何检测堆栈溢出呢?
FreeRTOS检测堆栈溢出方法有两种:
https://www.freertos.org/Stacks-and-stack-overflow-checking.html
1,在某任务退出运行态后,检测任务堆栈指针是否超范围
2,将堆栈填充特征码字,在某任务退出运行态后,检测后16字节数据特征码字是否被破坏。