keil+uC/OS,是怎么实现在任务的堆栈中操作局部变量的
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?
keil+uC/OS,是如何实现在任务的堆栈中操作局部变量的?
比如在程序中建立了一个任务TASK1,任务中定义了几个局部变量a,b,c,
在任务建立的时候,分配的堆栈是arrStask[500]。
那么程序执行到TASK1的时候,是如何保证把几个局部变量分配到对应的堆栈中的呢?
一直想不明白。
应该对于其他的OS和编译器,原理也差不多吧。
还希望能给个比较通俗的解释。
[解决办法]
局部变量在栈中的分配,其实就是在栈中保留位置,并通过栈指针进行访问.
至于在使用uC/OS-II那样的环境下,你只要在任务初始化的时候配置好它的栈,局部变量自然会分配到那个任务的栈中.
[解决办法]
[解决办法]首先开一段空间,如一个数组,这样就会产生一段被编译器保护起来的空间,作堆栈用,然后在TASK1运行前,将SP指那该空间的首地址,这样,以后申明的变量就会产生在这段被保护且空白的堆栈里了。
以后在任务切换时,再换到其它任务对应的堆栈。
[解决办法]