使用Rust开发操作系统(可编程中断控制器(PIC)8259A)

可编程中断控制器(PIC)

中断的产生有两种原因,一个是外部中断(由硬件产生的中断),另一个是由指令int n产生的中断,指令int n中n位向量号(IDT中定义),外部中断有些复杂些,因为需要建立硬件中断和向量号之间的对应关系,外部中断分为不可屏蔽中断(NMI)和可屏蔽中断两种,分别由CPU的两根引脚NMIINTR来接受,Intel处理器只有一个外部中断引脚INTR,为了处理器能够同时接收多个硬件设备发送来的中断请求信号,因此将所有外部设备的中断请求汇总到中断控制器,由中断控制器处理后,由选择性的将中断请求一次发往外部中断引脚INTR

在多核处理器之前,8259A(PIC Programmable Interrupt Controller)是PC中最普遍的中断控制器,自多核处理器之后,8259A对多核的支持越来越差,随后出现APIC(Advanced Programmable Interrupt Controller,高级可编程中断寄存器),以及x2APIC(x2apic为Intel提供的xAPIC增强版,针对中断寻址、APIC寄存器访问进行改进优化)在本节中我们介绍PIC和APIC并编写PIC对应的结构(APIC会出一篇单独文章)

8259A PIC

通常情况下PC都会采用两片8259A芯片级联(级联指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率),将外部硬件设备的中断请求与处理器的中断接收引脚关联起来
NMI&INTR

在两个8259A芯片级联过程中,一个8259A作为主芯片(主片),与CPU的INTR引脚相连,另一个8259A作为从芯片(从片)与主8259A的IR2引脚相连,其他中断请求引脚IR将外部设备的中断请求引脚相连,每个8259A有8根中断信号线,两片级联总共可以挂接15个不同的外部设备,我们可以通过对8259A的设置使得设备发出的中断请求与中断向量对应起来。
对8259A的设置主要是通过相应的端口写入特定的ICW(Initialization Command Word,初始化命令字)来实现的,主片对应的端口地址位0x20和0x21从片对应的端口地址为0xA0和0xA1

8259A编程

8259A可接受两种命令字:

  • ICW(初始化命令字):在执行普通操作之前,系统中的每个8259A必须通过2到4个字节的WR定时脉冲序列到达起始点
  • OCW(控制命令字):这些命令字完成8259A不同的模式切换,这些模式为
    • 完全嵌套模式(Fully nested mode)
    • 轮换优先模式(Rotating priority mode)
    • 特殊掩码模式(Special mask mode)
    • 轮询模式(Polled mode)
      OCW可以在初始化后的任意时间写入

8259A初始化

8259A的初始化过程如下
在这里插入图片描述
总结一下初始化过程就是这样的:

  1. 往主片(0x20)或从片(0xA0)写入ICW1
  2. 往主片(0x21)或从片(0xA1)写入ICW2
  3. 往主片(0x21)或从片(0xA1)写入ICW3
  4. 往主片(0x21)或从片(0xA1)写入ICW4

这4步不能颠倒的
ICW1-ICW4的结构如下

ICW1

ICW1
8259A的ICW1都固定化为0001_0001B(0x11)

ICW2

ICW2

主片的中断向量号设置为0x20(IRQ0)具体对应关系如下
IRQ中断对应的向量号如下

IRQn 中断号
IRQ0 0x20
IRQ1 0x21
IRQ2 0x22
IRQ3 0x23
IRQ4 0x24
IRQ5 0x25
IRQ6 0x26
IRQ7 0x27
IRQ8 0x28
IRQ9 0x29
IRQ10 0x2A
IRQ11 0x2B
IRQ12 0x2C
IRQ13 0x2D
IRQ14 0x2E
IRQ15 0x2F
ICW3

ICW3从片
ICW3

主片的ICW3用于记录各IR引脚与从片的级联状态,从片的ICW3用于记录与主片的级联状态,主片的ICW3的值应该设置为0x04从片的ICW3的值被设置为0x02

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值