[ZLG-MCU] 请教大家一个关于移植的困惑

[复制链接]
 楼主| ichb 发表于 2007-1-6 10:45 | 显示全部楼层 |阅读模式
我们在建立任务时都会给每个任务设定一个堆栈,发生任务切换时就会把当前cpu的寄存器保存至该任务堆栈中,然后把高优先级任务堆栈的内容放置到cpu寄存器中,完成任务切换。<br />但是zlgarm的移植代码当中,任务发生切换时,会把当前cpu寄存器保存到StackUsr中,而不是保存到任务的堆栈中,而高优先级的任务则从任务堆栈中恢复cpu的内容。是我理解代码错误,还是stackuar和任务堆栈有一定关系?<br />请教各位仁兄帮忙解惑。
 楼主| ichb 发表于 2007-1-6 16:48 | 显示全部楼层

原来这样

发现自己理解错了。<br />sp是什么指向指向任务的堆栈,我一直对此比较迷惑。<br />重新理了一遍代码,原来是这样子。<br />ucos-ii初始化过程中,用OSTaskCreate()创建一新任务,该任务所定义的堆栈位置就放到了该任务的tcb当中,然后调用OSStart(),启动多任务,该函数调用OSStartHighRdy()&nbsp;-〉__OSStartHighRdy()&nbsp;-&gt&nbsp;OSIntCtxSw_1,此时SP指针就指向该任务定义的堆栈了。再次发生任务切换时,就会调用OSIntCtxSw,任务寄存器就会保存在任务堆栈,然后在新任务堆栈中恢复cpu寄存器,实现了任务切换。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

12

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部