Keil C51红杏出墙记之精华-中断隐身,它用一个“中断隐身门”将
正常的中断服务程序分割为两个部分:
1.中断级的系统服务程序,如定时器的节拍中断处理程序。
2.低于中断级且高于用户级(如主循环)和其他任何中断的隐身程序。
当一个中断级的系统服务程序对应自己的多个中断隐身程序时,就可
自动构成天然的一主多从的协作式操作系统~~~
精华论述:
任何操作系统都有中断任务的能力,而任务可是低于当前中断优先级
或任何非中断程序。
操作系统都是固定间隔引发中断的,即节拍中断。一般在10mS左右。
若此节拍中断服务程序内有多个隐身程序时,并为其每个配发一个“隐身门”
当每次节拍中断时,打开某个隐身门后即可中断降级后运行某个隐身程序,
进入隐身程序时将其关闭!!!
每个隐身程序又由节拍程序配发一把“隐身锁”,开锁后隐身程序死循环自己
的任务处理程序,隐身程序不交权给节拍程序!!!即不返回。
故本次节拍中断出口"蒸发"了!!!
哈哈~~~这就是菜农“发明”的名词“中断隐身”一词的由来和出处!!!
那么节拍中断服务程序的RETI指令不是没法执行了???
不然,因为中断隐身函数_intjmp_()内实际是条lcall (reti)->task
哈哈~~~我们只需考虑隐身程序不交权时节拍中断的重入即堆栈平衡问题即可。
在Keil C51中,若ISR()若使用寄存器组即using X时,则中断程序只保护
PSW,ACC,B,DPH,DPL这几个寄存器。这是X应该>0,假设用户级为using 0
所以要将中断隐身升华为操作系统,则只需在进入隐身程序前恢复这几个
寄存器即可。
故裸奔式实时操作系统HotTask51原理要比普通的嵌入式实时操作系统原理简单
许多~~~
这就是菜农将HotTask51冠以“裸奔式”的由来~~~
也是不起名为HotOS51的由来和所在~~~
菜农HotPower@126.com 2009.2.10 作于雁塔菜地
|