您好、欢迎来到现金彩票网!
当前位置:老k棋牌 > 栈控制 >

uCos-ii在进行任务切换时为什么SP(堆栈指针)不和其他寄存器一样

发布时间:2019-06-27 08:03 来源:未知 编辑:admin

  uCos-ii在进行任务切换时,为什么SP(堆栈指针)不和其他寄存器一样压栈?而是存放在TCB(任务控制块)中?

  uCos-ii在进行任务切换时,为什么SP(堆栈指针)不和其他寄存器一样压栈?而是存放在TCB(任务控制块)中?

  堆栈指针也完全可以像其他寄存器一样压栈啊,然后切换到自身的时候在从任务栈中压入CPU内部的SP中,这样不可以吗?...

  堆栈指针也完全可以像其他寄存器一样压栈啊,然后切换到自身的时候在从任务栈中压入CPU内部的SP中,这样不可以吗?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部uC/OS II的源码中,OS_TCB结构体的定义中并没有单独保存SP的成员,而是由结构体中的OSTCBStkPtr指针指向的任务堆栈保存着任务切换需要保存的CPU寄存器内容。uC/OS会给每个创建的任务分配一个TCB,TCB中包含了该任务的全部信息。追问你看一下邵贝贝的那本书,page 94, 有这么一段话:然后堆栈指针寄存器被保存在当前任务的OS_TCB中。这怎么理解?追答原话应该是:将当前任务的堆栈指针保存到当前任务的OS_TCB中。意思是说,将OSTCBStkPtr赋值为指向存放任务信息的的堆栈(注意是堆栈,而不是栈,堆栈的其本质只是保存变量内容的一块连续空间,并不用来作为栈使用,常用做法是声明一个数组来分配这块空间)指针,所以堆栈指针并不是SP;

  OSCtxSw是通过汇编实现的,函数功能是进行任务切换,其详细实现描述如下:

  这个系统首先要掌握的重点是在理解任务的创建及切换,所以要好好看这一部分,建议直接看源码,源码也没多少,邵贝贝的书几百页呢,好像也没完整的代码,很多关键部分用文字描述,虽然容易理解,但是语言的总是容易误解,而且会错过很多关键的细节,我也看过这本书某些章节,看完以后还是不能了解很多细节,还是懵懵懂懂,所以直接看源码了,在源码中发现不少巧妙的细节,而这些巧妙的地方文字是不好描述甚至不能准确描述的,所以本人认为看代码是不错的方法。

  μcos操作系统中,任务的之间的切换时候,sp指针是指在任...

http://theenigmaco.com/zhankongzhi/147.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有