实际中断处理

中断处理

处理外界发出的信号。中断信号可能是关于数据读写操作的,也可能与外部设备控制有关。Intel处理器只有一个外部中断引脚INTR,为了使处理器能够同时接收多个硬件设备发送来的中断请求信号,特将锁有外部设备的中断请求汇总到中断控制器,再经由中断控制器的仲裁后,有选择性地将中断请求信号依次发往处理器的外部中断引脚INTR。

再多核处理器出现前,8269A PIC(Programmable Interrupt Controller,可编程中断处理器)是最普遍的中断控制器.

目前APIC(Advanced Programmable Interrupt Controller,高级可编程中断控制器)应用于多核处理器更为优秀。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fhn6ItsA-1636897178474)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211024211314670.png)]

在俩芯片级联的过程中,一个8259A芯片中断控制器作为主芯片,与CPU的INTR引脚相连;另一个8259A中断控制器作为从芯片,与主8259A芯片的IR2引脚相连。其他中断请求引脚IR将与外部硬件设备的中断请求引脚相连。

可编程:意味着必然拥有一系列可以配置的寄存器。

一个8259A芯片包含着两个寄存器组,分别是ICW(Initialization Command Word,初始化命令字)寄存器组和OCW(Operational Control Word,操作控制字 )寄存器组。其中ICW寄存器组用于初始化中断控制器,在8259A芯片正常工作前,必须对ICW寄存器组进行设置;OCW寄存器组用于操作中断控制器,在8259A芯片的工作过程中,读者可随时通过OCW寄存器设置和管理中断控制器的工作方式。

PC机采用I/O地址映射的方式,将8259A PIC寄存器映射到I/O端口地址空间,因此必须借助IN和OUT汇编指令才能访问8259A PIC。主8259A芯片的i/O端口地址是20h和21h,从8259A芯片的I/O端口是A0h和A1h。

通过IO端口可操作性中断控制器的ICW和OCW寄存器组,进而配置IRR、PR、ISR、IMR等寄存器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZfQEHL6-1636897178476)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211024214435570.png)]

  • IRR(Interrupte Request Register ,中断请求寄存器)用来保存IR0IR7引脚上接受的中断请求,该寄存器有8bit分别对应外部引脚的IR0IR7.
  • IMR(Interrupt Mask Register,中断屏蔽寄存器)用于记录屏蔽的外部引脚 ,该寄存器同样也有8位分别对应IRR寄存器中的每一位,当IMR中的某一位或某几位被置位时,相应的IR引脚的中断请求信号就会被屏蔽。
  • PR(Priority Resolver,优先级解析器) 将从IRR寄存器接受的中断请求中选取最高优先级者,将其发往ISR(In-Service Register,正在服务寄存器)

ISR中记录着正在处理的中断请求,同时8259A芯片还会向CPU发送一个INT信号,而CPU会在执行完一条指令后检测是否接收到中断请求信号。如果接收到中断请求信号,处理器将不再继续执行指令,转而向8259A芯片发送一个INTA来应答中断请求信号。芯片收到应答后,会将中断请求保存到ISR中,同时复位IRR寄存器。

随后,CPU还会向8259A芯片发出第二个INTA脉冲信号,其作用是通知8259A芯片发送中断向量号,此时8259A芯片会把中断向量号(8位数据)发送到数据总线上供CPU读取。当CPU接受到中断向量后,随机跳转至中断描述符表IDT检索向量号对应的门描述符,并执行门描述符中的处理程序。

​ 如果8259A芯片采用AEOI(Automatic End of Interrupt,自动结束 中断),那么它将会在第二个INTA脉冲信号的结尾处复位正在服务寄存器的对应位。如果8259A芯片采用非自动结束方式,那么CPU必须在中断处理程序的结尾处向8259A芯片发送一个EOI(End Of Interrupt 结束中断命令),来复位ISR的对应位。如果中断来自级联芯片,则必须向两个芯片都发送EOI命令。

此后,8259A继续判断下一个最高优先级的中断,并重复上述处理过程。

芯片初始化 ICW

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2pariKam-1636897178478)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025103151344.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3PUDK4hD-1636897178479)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025103219065.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-txabrChx-1636897178480)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025103539675.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99Vh9ZCS-1636897178481)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025103603088.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c1IroLMi-1636897178482)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025103619648.png)]

操作控制字OCW

OCW包含OCW1、OCW2、OCW3三个寄存器,他们用于控制和调整工作期间的中断控制器,这三个寄存器没有操作顺序之分。主8259A的OCW1寄存器映射到IO端口21h地址处,OCW2 OCW3寄存器映射到IO端口20h地址处;从8259A的OCW1映射到A1h地址处,OCW2,OCW3寄存器映射到IO端口A0h处。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0cSF5U2w-1636897178484)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025110250208.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yjLaKWRg-1636897178486)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025110601886.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vBDHVrmd-1636897178488)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025110629151.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJ7LbSHa-1636897178489)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20211025110716396.png)]

触发中断

外部硬件中断与处理器异常一样,他们都是用IDT来索引处理程序,不同之处在于异常是处理器产生的任务暂停,而中断是外部设备产生的任务暂停,因此中断和异常的处理工作都需要保存和还原任务现场。

任务保存代码

键盘驱动

如何使键盘产生的中断能被8259A芯片响应,得了解键盘的中断请求。键盘设备也是拥有控制芯片的,如果希望键盘可以持续接受到按键中断请求,则必须了解键盘控制芯片。

市面上的键盘控制器芯片大多采用Intel 8042以及兼容芯片,键盘控制器芯片通过PS/2接口或者一些USB接口与外部键盘设备连接。键盘设备通常会包含一个Intel 8048或兼容芯片,这个芯片时刻会扫描键盘设备的每个按键,并将扫描到的按键进行编码,每个按键的编码是唯一的

当8048键盘编码器扫描到按键被按下时,他会将键盘对应的编码值通过PS/2接口发送到8042

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值