当前位置: 代码迷 >> 综合 >> 中断代理-8259A
  详细解决方案

中断代理-8259A

热度:15   发布时间:2023-11-24 01:52:07.0

问题

不同外设怎么向处理器发送中断信号?

当多个外设同时产生中断时,如何进行处理?

想象中的连接方式

处理器只有一个INTR引脚,超高速的处理器也没有必要和超低速的外设直接相连,所有就需要一个中间代理8259A 。

处理器的中断代理 (8259A)

8259A是处理器的中断功能模块,用于管理和裁决外部设备的中断请求。

8259A是专为处理器设计的中断管理芯片

可通过编程对8259A进行功能配置

屏蔽外设中断,对中断进行优先级裁决

向处理器提供中断向量

对8259A的编程控制是操作系统内核的重要工作

8259A芯片的内部结构

IMR中的位与引脚一一对应;被设置为1的位,其对应引脚的中断被屏蔽;被设置为0的位,其对应引脚的中断被放行。

IRR中的位与引脚一一对应;被设置为1的位,代表其对应引脚有中断请求。

ISR中的位与引脚一一对应;如果被置1,表明其对应引脚的中断正在被处理。

8259A关键组成简介

INT:选出优先级最高的中断请求后,发信号通知CPU

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

PR:优先级仲裁器,当多个中断同时发生时,找出优先级最高的中断

IMR:中断屏蔽寄存器,用来屏蔽某个外设的中断

ISR:中断服务寄存器,当某个中断正在被处理时,保存在此寄存器

IRR:中断请求寄存器,用来接收经过IMR寄存器过滤后的中断信号并锁存,此寄存器中全是等待处理的中断

中断响应流程

8259A工作方式

中断触发方式

边沿触发 (推荐)

  • 中断引脚电平变化的一瞬间认为中断申请到来 (上升沿触发)

电平触发

  • 中断引脚上的信号保持稳定电平一定时间后,认为中断申请到来

数据连接方式

非缓存方式

  • 将8259A直接与数据总线相连

缓存方式

  • 将8259A通过总线驱动器与数据总线相连

中断优先方式

固定优先级方式

  • 优先级由高到低的方式是:IR0,IR1,IR2,...,IR7

自动循环方式

  • 某一中断请求被响应后,该中断源自动成为最低

特殊循环方式

  • 通过编程指定某中断源优先级成为最低
  • 其他中断源优先级自动改变

中断嵌套方式

完全嵌套方式 (默认方式)

  • 执行中断服务程序期间,不响应本级中断和较低级中断

特殊完全嵌套方式

  • 执行中断服务程序期间,可响应本级中断,不响应较低级中断

中断屏蔽方式

普通屏蔽方式

  • 将IMR中的某一位或几位置为1,屏蔽相应级别的中断请求

特殊屏蔽方式

  • 未被屏蔽的中断源均可在每个中断服务程序中被响应,即低优先级中断可以打断正在服务的高优先级中断

中断结束方式

自动结束方式 (只适用于非多重中断的情况)

  • 8259A自动清除ISR中已置位的优先级最高的位

手动结束方式

  • 在中断服务程序的最后,向8259A发中断结束命令,将ISR中相应的位清除,表明中断服务程序已完成