保护模式下8259A芯片编程及中断处理探究(上)【4】
2013-04-25 15:05
183 查看
EOI也是OCW2型命令中的一种,当EOI位被置1,这就是一个EOI消息。SL是指定级别位,如果SL被置位,则表明这是一个指定级别的EOI消息,这个消息可以指定将ISR中的哪一位清零,即告诉8259A应当清除哪一个IRQ信号。L2、L1、L0就用来指定IRQ的编号。而在实际运用中我们却将SL及L2、L1、L0全置零。
SL置零表示这是一个不指定级别的EOI消息,则8259A芯片自动将ISR中所有被置位的IRQ里优先级最高的清零,因为它是正在被处理及等待处理的中断中优先级最高的,也就一定是CPU正在处理的中断。
现在再来看看优先级控制命令。
当R为0时,表明这是一个固定优先权方式,IRQ0最高,IRQ7最低。
当R为1时,表明这是一个循环优先权,比如,如指定IRQ2最低,则优先级顺序就为:
IRQ2 < IRQ1 < IRQ0 < IRQ7 < IRQ6 < IRQ5 < IRQ4 < IRQ3
(编者注:可以将其记忆为“IRQ7<IRQ6<IRQ5<IRQ4<IRQ3<IRQ2<IRQ1<IRQ0”进行循环左移后的结果)
也即,如果IRQ( i )最低,那么IRQ( i + 1 )就最高。
所以,在这种方式下需要先行指定一个最低优先级。如果SL被清零,则表示使用自动选择方式,那么正在被处理的中断服务在下一次,就被自动指定为最低优先级。如果SL被置位,那么L2、L1、L0所指定的IRQ就被指定为最低优先级。
在指定优先级的时候,也可通过置位EOI,即可以将指定优先级命令与中断结束消息同时发送。
上面的描述看起来很复杂,其实对于一般的操作系统编写来说大多就使用一种形式:0010 0000,我也很乐意将其称为EOI消息。
还有一个OCW3命令字,可以指定特殊的屏蔽方式及读出IRR与ISR寄存器,不过一般在操作系统中并不需要这样的操作。在操作系统编写中一般只用到前面两个命令字的格式(至少pyos是这样:))由于本文并非硬件手册,只想为操作系统的编写提供一点帮助,因此,如果你想了解完整的OCW3命令字格式,请查阅相应的硬件手册,或本文的参考资料1。
五、上篇结束语
在这一篇中,较为详细的描述了对8259A中断控制器芯片编程所需具备的基础知识,在编写操作系统的过程中,我们就需要向相应端口发送相应的ICW或OCW,完成对8259A的操作,具体的代码将在下篇中描述。
在下篇中将更主要的描述操作系统对中断服务程序的处理及安排,并以开发中的pyos做为例子进行实验。
参考文献
1. 张昆藏. 《IBM PC/XT微型计算机接口技术》. 清华大学出版社. 1991.3.
[1] 谢煜波,哈尔滨工业大学计算机科学与技术学院硕士研究生,电子邮件:xieyubo@126.com
保护模式下的8259A芯片编程及中断处理探究(上)(Version0.02)
SL置零表示这是一个不指定级别的EOI消息,则8259A芯片自动将ISR中所有被置位的IRQ里优先级最高的清零,因为它是正在被处理及等待处理的中断中优先级最高的,也就一定是CPU正在处理的中断。
现在再来看看优先级控制命令。
当R为0时,表明这是一个固定优先权方式,IRQ0最高,IRQ7最低。
当R为1时,表明这是一个循环优先权,比如,如指定IRQ2最低,则优先级顺序就为:
IRQ2 < IRQ1 < IRQ0 < IRQ7 < IRQ6 < IRQ5 < IRQ4 < IRQ3
(编者注:可以将其记忆为“IRQ7<IRQ6<IRQ5<IRQ4<IRQ3<IRQ2<IRQ1<IRQ0”进行循环左移后的结果)
也即,如果IRQ( i )最低,那么IRQ( i + 1 )就最高。
所以,在这种方式下需要先行指定一个最低优先级。如果SL被清零,则表示使用自动选择方式,那么正在被处理的中断服务在下一次,就被自动指定为最低优先级。如果SL被置位,那么L2、L1、L0所指定的IRQ就被指定为最低优先级。
在指定优先级的时候,也可通过置位EOI,即可以将指定优先级命令与中断结束消息同时发送。
上面的描述看起来很复杂,其实对于一般的操作系统编写来说大多就使用一种形式:0010 0000,我也很乐意将其称为EOI消息。
还有一个OCW3命令字,可以指定特殊的屏蔽方式及读出IRR与ISR寄存器,不过一般在操作系统中并不需要这样的操作。在操作系统编写中一般只用到前面两个命令字的格式(至少pyos是这样:))由于本文并非硬件手册,只想为操作系统的编写提供一点帮助,因此,如果你想了解完整的OCW3命令字格式,请查阅相应的硬件手册,或本文的参考资料1。
五、上篇结束语
在这一篇中,较为详细的描述了对8259A中断控制器芯片编程所需具备的基础知识,在编写操作系统的过程中,我们就需要向相应端口发送相应的ICW或OCW,完成对8259A的操作,具体的代码将在下篇中描述。
在下篇中将更主要的描述操作系统对中断服务程序的处理及安排,并以开发中的pyos做为例子进行实验。
参考文献
1. 张昆藏. 《IBM PC/XT微型计算机接口技术》. 清华大学出版社. 1991.3.
[1] 谢煜波,哈尔滨工业大学计算机科学与技术学院硕士研究生,电子邮件:xieyubo@126.com
保护模式下的8259A芯片编程及中断处理探究(上)(Version0.02)
相关文章推荐
- 保护模式下8259A芯片编程及中断处理探究(下)【3】
- 保护模式下8259A芯片编程及中断处理探究(下)【4】
- 保护模式下的8259A芯片编程及中断处理探究(上)(Version 0.02)
- 保护模式下的8259A芯片编程及中断处理探究(下)(Version 0.02)
- 保护模式下 8259A芯片编程及中断处理探究(上)【1】
- 保护模式下8259A芯片编程及中断处理探究(上)【2】
- 保护模式下的8259A芯片编程及中断处理探究(上)(Version0.02)
- 保护模式下8259A芯片编程及中断处理探究(上)【3】
- 保护模式下8259A芯片编程及中断处理探究(下)【1】
- 保护模式下的8259A芯片编程及中断处理探究(下)
- 保护模式下8259A芯片编程及中断处理探究(下)【2】
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.6 中断和异常处理
- 保护模式下 中断处理程序的过程
- 保护模式及其编程——中断和异常处理
- 保护模式下 中断处理程序的过程
- 一篇保护模式下处理实模式中断的硬盘中断处理程序文章(转)
- 8259A芯片中断号与linux 系统中断号的对应关系
- 《linux 内核全然剖析》 chapter 4 80x86 保护模式极其编程
- 80x86保护模式及其编程之内存管理与保护
- 80386保护模式编程模型