首页 > 编程语言 >可编程中断控制器

可编程中断控制器

时间:2022-12-11 18:56:07浏览次数:55  
标签:控制器 优先级 中断 IRQ EOI 寄存器 可编程 8259A

可编程中断控制器

在x86中,外部设备产生的中断信号并不会直接通过INTR发给CPU,而是先发送给可编程中断控制器(PIC Programmable Interrupt Controller),再由中断控制器发送给CPU。

8259A

可编程中断控制器(PIC)一般由2个8259A芯片级联组成,靠近CPU的叫主中断控制器(master),第2个叫从中断控制器(slave)。通过这种级联的方式可以分辨出15种不同的中断请求(IRQ Interrupt Request)。

8259A芯片的IRQ序号越小,中断优先级越高。级联的从中断控制器的IRQ继承了IRQ2的优先级。所以最后的优先级顺序就是IRQ0>IRQ1>IRQ8>...>IRQ15>IRQ3>...>IRQ7。

IRQ有默认的配置,这些默认的配置都是些常用设备,一般的默认配置如下。

IRQ序号 说明
IRQ0 Timer计时器
IRQ1 键盘
IRQ2 与8259A芯片级联,不做他用
IRQ3 COM2或COM4,第2个或第4个串行端口
IRQ4 COM1或COM3,第1个或第3个串行端口
IRQ5 LPT2,并口2
IRQ6 软盘
IRQ7 LPT1,并口1
IRQ8 Real-time clock实时时钟
IRQ9 重定向IRQ2
IRQ10 保留,建议给网卡
IRQ11 保留,建议给显卡
IRQ12 PS/2 鼠标
IRQ13 FPU 浮点协处理器中断
IRQ14 硬盘
IRQ15 保留

8259A内部寄存器

主要分为初始化命令和操作命令寄存器。

  • 初始化命令寄存器组ICW1~ICW4,用来保存初始化命令字。
  • 操作命令寄存器组OCW1~OCW3,保存操作命令字。

CPU通过0x20(偶)和0x21(奇)端口来操作主8259A,通过0xA0(偶)和0xA1(奇)端口来操作从8259A。

ICW1和OCW2,OCW3需要操作偶数端口,ICW2,ICW3,ICW4和OCW1需要操作奇数端口。

为了区分传的到底是什么数据,对于操作偶数端口的ICW1和OCW2,OCW3通过指定特定位为特定值作为标志码区别。然后再规定ICW1后面必须按顺序执行ICW2,ICW3,ICW4命令,这样就可以正确识别了。

ICW1寄存器

ICW1用来初始化8259A的连接方式(单片工作还是多片级联)以及中断信号的触发方式(电平触发还是边沿触发)。

ICW1的结构如下。

  • IC4:表示是否写入ICW4,1为要写入,0为不需要。
  • SNGL:1表示单片,0表示级联。
  • ADI:用来设置8085的调用时间间隔,x86不需要。
  • LTIM:用来设置中断检测方式,0表示边沿触发,1表示电平触发。
  • 第4位:固定为1,ICW1的标识码。
  • 第5~7位:8085专用,x86不用,直接置为0。

ICW2寄存器

ICW2是用来设置中断起始偏移量的,IR0IR7是逻辑上的向量号(07),实际的向量号=设置的中断起始偏移量+逻辑上的向量号。

x86中,0-31的中断号Intel保留,不分配给IRQ,为异常。所以一般需要设置起始偏移量为32。

  • 低3位:由8259A自动导入,IRQ0为000,IRQ1为001,依次类推。
  • 高5位:中断起始向量号。

ICW3寄存器

ICW3只有在8259A级联工作的时候才有效,从片连在主片哪个IRQ端口上。

对于主片来说ICW3的结构如下。

  • 对于主片来说,S0~S7的bit为1则表示作为连接从片的IRQ端口。

对于从片来说ICW3的结构如下。

  • 对于从片来说,高5位无效,低3位的值表示自己连接的主片的哪个IRQ端口。

ICW4寄存器

ICW4用来设置其工作模式。结构如下。

  • uPM:0表示处理器为8080或8085,1表示x86处理器。
  • AEOI:0表示中断需要手动结束,需要中断处理程序结束时向芯片的主从片发送EOI信号,1表示自动结束中断。
  • M/S:当多个芯片级联工作时,如果工作在缓冲模式下,M/S为1表示是主片,0表示为从片,如果工作在非缓冲模式下,M/S无效。
  • BUF:0表示采用非缓冲模式工作,1表示采用缓冲工作模式。
  • SNFM:0表示全嵌套模式,1表示特殊嵌套模式。
  • 第5~7位:无意义,置0就可以。

OCW1寄存器

OCW1用来设置屏蔽中断信号,结构如下。

  • 哪一位置1就表示屏蔽该IRQ端口。

OCW2寄存器

OCW2结构如下。

  • L0~L2:用来确定优先级的编码,用于EOI时,表示被中断的优先级别;用于优先级循环时,指定起始最低的优先级别。
  • 第3~4位:固定为00,作为OCW2的标识码。
  • EOI:中断结束命令位,该bit位为1时,会自动将ISR寄存器中对应的位清0。
  • SL:表示是否指定优先级,等级是用低3位来指定的,SL为1时低3位有效,SL为0低3位无效。
  • R:表示是否按照循环方式设置中断优先级,1表示优先级自动循环,0表示优先级固定。

OCW2设置的模式如下表。

R SL EOI 描述
0 0 1 普通EOI结束方式:当中断处理完成后,向8259A发送EOI命令,8259A会将ISR中当前优先级最高的位置0
0 1 1 特殊EOI结束方式:当中断处理完成后,向8259A发送EOI命令,8259A会将ISR中由L0~L2指定的位置0
1 0 1 普通EOI循环命令:当中断处理完成后,向8259A发送EOI命令,8259A会将ISR中当前优先级最高的位置0,并将此位的优先级变为最低,使之前第2高的变为最高优先级,以此类推
1 1 1 特殊EOI循环方式:当中断处理完成后,向8259A发送EOI命令,8259A会将ISR中由L0~L2指定的位置0,并将此位的优先级变为最低,使之前第2高的变为最高优先级,以此类推
0 0 0 自动EOI结束方式
1 0 0 自动EOI循环命令:8259A自动将当前处理的中断位清0,并将此位的优先级变为最低,使之前第2高的变为最高优先级,以此类推
1 1 0 设置优先级命令:将L0~L2指定的IRQ(i)为最低优先级,IRQ(i+1)为最高优先级,以此类推
0 1 0 无操作

OCW3寄存器

OCW3结构如下。

  • RIS:读取中断寄存器选择位,如果为1,表示读取ISR寄存器,如果为0,表示读取IRR寄存器。
  • RR:读取寄存器指令,和RIS配合使用,只有RR为1时,才可以读取寄存器。
  • P:当P为1时,设置8259A为中断查询方式,这样便可以读取寄存器,查看中断的处理情况。
  • 第3~4位:固定为01,作为OCW3的标识码。
  • ESMM和SMM:组合使用用来启用或禁用特殊屏蔽模式。ESSM为0,SMM无效,ESMM为1,SMM为1表示工作在特殊屏蔽模式。
  • 第7位:无效位。

参考资料

标签:控制器,优先级,中断,IRQ,EOI,寄存器,可编程,8259A
From: https://www.cnblogs.com/HachikoT/p/16974158.html

相关文章

  • 【ASP.NET Core】MVC控制器的各种自定义:IActionHttpMethodProvider 接口
    IActionHttpMethodProvider接口的结构很简单,实现该接口只要实现一个属性即可——HttpMethods。该属性是一个字符串序列。这啥意思呢?这个字符串序列代表的就是受支持的HT......
  • 中断和异常
    ①中断的概念和作用当中断发生时,CPU立即进入核心态当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理对于不同的中断信号,会进行不同的处理发......
  • 自动配料系统控制器PLC如何实现远程监控和维护
    自动配料系统是集成输送、计量、配料、定量、混合等功能于一体的自动化生产线,在建材、化工、冶金、矿山、电力、食品、饲料加工等行业中得到广泛应用。随着行业扩展与科学技......
  • 《安富莱嵌入式周报》第294期:将C/C++代码转换为各种高级语言,超炫渲染着色器,VS2022新闻
    往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104更新视频教程:USB应用实战视频教程第5期:手把手玩转USBHID免驱方式......
  • web.xml中配置dispatcherServlet(控制器)
    <!--配置DispatcherServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-cl......
  • KSZ8895RQXI(接口控制器)TPS61170QDRVRQ1、LM53602AQPWPRQ1开关稳压器
    概述:1、KSZ8895RQX是一种高度集成的,第二层管理的五端口交换机,具有众多功能,旨在降低系统成本。它适用于成本敏感的10/100Mbps五端口交换系统,具有低功耗、片上终端和内部核心......
  • 什么是软中断?
    前面我们也提到了,中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响,而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未......
  • 中断是什么?
    先来看看什么是中断?在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。这样......
  • 305-基于XC7Z020的AI 人工智能 可编程相机
     基于XC7Z020的AI人工智能可编程相机   一、产品概述   本产品为一款基于FPGAsoc的支持二次开发的智能相机平台,基于大量已有的图形......
  • 每天一点基础K8S--K8S中的控制器replicaset
    1、replicaset基础前面都是通过yaml文件创建自主式pod,如果pod中的服务都是通过单纯的重启策略restartPolicy(always、OnFailure、never)来重启pod,但是如果pod运行的node异......