uCOS-II移植模板为何要多用一个OSPendSV中断?<br />感觉没必要多用一个中断。<br /><br />因为CORTEX-M3 中断自动保护局部变量寄存器,<br />使得切换任务全部都是在C环境下,OSCtxSw与OSIntCtxSw也就可以完全一样。<br />切换任务都是C环境下调用OSCtxSw,不必保存局部变量寄存器。<br />(实际上就是C环境下调用汇编规则,汇编可以任意使用局部变量寄存器而不必保存)<br /><br />OSCtxSw(OSIntCtxSw):<br />R4-R11入栈(非局部变量寄存器入栈)<br />XPSR,PC,LR入栈<br />关中断<br />OSTCBCur->OSTCBStkPtr=SP<br />OSTaskSwHook<br />OSTCBCur=OSTCBHighRdy<br />OSPrioCur=OSPrioHighRdy<br />SP=OSTCBHighRdy->OSTCBStkPtr<br />恢复中断<br />R4-R11 出栈(非局部变量寄存器入栈)<br />XPSR,PC,LR出栈<br />函数返回<br /><br /><br /> |
|