ucos源码阅读2——中断和时钟
中断
硬件怎么实现系统所要实现的嵌套功能
中断这儿有OSIntExitY,tcb成员变量,为什么任务调度里要定义局部变量?
中断嵌套和任务调度锁嵌套为零时,和任务调度一样,发生任务调度,这儿是中断级任务调度?两个汇编函数区别呢?
整个中断流程:
发生中断,转入中断矢量入口单元,然后有一条长跳转指令,中断服务子程序,先关中断,保存CPU寄存器的值给当前TCB的任务栈(嵌套的中断呢?),调用OSIntEnter()函数或直接给OSIntNesting加一,开中断,执行中断程序或进行中断嵌套,然后调用OSIntExit()函数,有可能切换到新任务,被中断的任务和被中断的中断,被中断的中断保存在哪儿?中断嵌套的汇编方法还不懂。后两者还要关中断恢复寄存器开中断,执行中断返回指令。
已经有三个关于任务切换的汇编了,区别是啥呢。。。
时钟(定时器中断)
时钟节拍中断服务子程序OSTickISR和上述中断过程一样,真正执行中断代码是调用OSTimeTick