8259A基础

8259A功能:

  管理和控制可屏蔽中断(也就是外设中断),对它们进行优先级判决,向CPU提供向量号等功能

结构:

   INT:通知INTR选出了优先级最高的中断请求

   INTA:中断响应信号,接受来自CPU的中断响应信号

   IMR:中断屏蔽器,用于屏蔽某个中断

   IRR:中断请求器,接受IMR过滤后的中断并锁存

   PR:优先仲裁器,仲裁出优先级更高的中断

   ISR:中断服务寄存器,保留正在被处理的中断号

   注意:这里面的寄存器都是8位的,由于主片也是8个中断,所以用位图的形式表示对于主片IRQ接口

中断过程:

   中断到8259A后,首先通过IMR检查对应IRQ是否被屏蔽,如果没有进入IRR,把对应位置置1。然后在PR中,由于IRQ接口号越低优先级越大,所以基于此进行优先级仲裁。然后仲裁得到结果,通过INT进行CPU通知,CPU并返回INTA进行响应。然后8259A把对于ISR的bit置1,表示正在服务,同时把IRR位置0去掉中断。之后,CPU再发个INTA来获取对应中断向量号,这样完成上半场了。

   如果EOI是手动模式,那么在中断处理程序结束还有个发EOI的代码;如果是自动那么在第二次发INTA的时候就会自动把ISR对应位置0

  注意:在第二次INTA来,发送中断向量号之前时,如果有优先级更高的中断来了,那么现在的中断号是会被替换的

说明:

  一片8259A只可以管理8个中断,所以需要使用主片和从片级联的方法。只有一片主片,从片的中断先给主片,再到CPU

  外部设备的中断都接载IRQ(Interrupt ReQuest)上

  中断向量号 = 起始中断向量号+IRQ接口号(通过设置这个来确定)

posted @ 2021-06-13 23:02  重言  阅读(770)  评论(0)    收藏  举报