UCOS任务中调用子函数,那么原函数的地址和局部变量保存在该任务堆栈中吗

另外,这个任务是如何确定当期堆栈的地址的啊... 另外,这个任务是如何确定当期堆栈的地址的啊 展开
 我来答
joyoustech
2013-06-04 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1310万
展开全部
任务中调用函数,调用处的地址和一些变量自然要保存在任务堆栈中,每个任务的堆栈地址和大小是用OS_STK变量定义的,堆栈中的内容是在任务初始化时一起初始化的,初始化函数是:
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, unsigned int opt);
这个函数是移植uCos时要自己完成的函数,也是整个移植过程中最难理解的函数,理解了这个函数,移植应该就没有问题了。
追问
那当任务挂起时,该任务的堆栈中只保存了CPU相关寄存器的值,而没有上面所说的函数调用时的须保存到堆栈的地址和变量?
追答
如果任务不是在子函数中挂起的,任务堆栈中是不会有子函数的返回地址。如果任务是在子函数中挂起的,应该能从任务堆栈中看到子函数返回的地址。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式