---- 整理自狄泰软件唐佐林老师课程
查看所有文章链接:(更新中)深入浅出操作系统 - 目录
文章目录
1. 问题
- 不同外设如何向处理器发送中断信号?
- 当多个外设同时产生中断时,如何进行处理?
2. 想像中的连接
- 处理器有多少INTR引脚,能接入多少外设?
- 处理器有必要与外设直接相连吗?
3. 处理器的中断代理(8259A)
- 8259A 是处理器的中断功能模块,用于管理与裁决外部设备的中断请求。
3.1 8259A可编程中断控制器
- 8259A是专为处理器设计的中断管理芯片
- 可通过编程对8259A进行功能配置
- 屏蔽外设中断,对中断进行优先级判决
- 向处理器提供中断向量
- 对8259A的编程控制是操作系统内核的重要工作
3.2 8259A芯片的内部结构
- 中断屏蔽寄存器IMR 中的位与引脚一一对应:被设置为1的位,其对应引脚的中断被屏蔽;被设置为0的位,其对应引脚的中断被执行。
- 中断请求寄存器IRR 中的位与引脚一一对应:被设置为1的位,代表其对应引脚有中断请求。(可以理解为需要被处理器响应的中断队列)
- 优先级判别器PR:当多个中断同时发生时,找出优先级最高的中断
- INT:选出优先级最高的中断请求后,发消息通知CPU
- INTR:中断请求信号
- INTA:中断响应信号,接收来自CPU的INTA接口的中断响应信号
- 中断服务寄存器ISR 中的位与引脚一一对应:被设置为1的位,表明其对应的引脚的中断正在被处理。
3.3 中断响应流程
3.4 8259A工作方式
3.4.1 中断触发方式
- 边沿触发(推荐)
- 中断引脚电平变化的一瞬间认为中断申请过来(上升沿触发)
- 电平触发
- 中断引脚上的信号保持稳定电平一定时间后认为中断申请到来
3.4.2 数据连接方式
- 非缓冲方式
- 将8259A直接与数据总线相连
- 缓冲方式
- 将8259A通过总线驱动器和数据总线相连
3.4.3 中断优先方式
- 固定优先级方式
- 优先级由高到低的顺序是:IR0、IR1、IR2、……、IR7
- 自动循环方式
- 某一中断请求被响应后,该中断源优先级自动成为最低
- 特殊循环方式
- 通过编程指定某中断源优先级成为最低
- 其它中断源优先级自动改变
3.4.4 中断嵌套方式
- 完全嵌套方式(默认方式)
- 执行中断服务程序期间,不响应本级中断和较低级中断
- 特殊完全嵌套方式
- 执行中断服务程序期间,可响应本级中断,不响应较低级中断
3.4.5 中断屏蔽方式
- 普通屏蔽方式
- 将IMR中的某一位或几位置为1,屏蔽掉相应级别的中断请求
- 特殊屏蔽方式
- 未被屏蔽的中断源均可在某个中断服务程序中被响应,即低优先级中断可以打断正在服务的高优先级中断
3.4.6 中断结束方式
- 自动结束方式AEOI(只适用于非多重中断的情况)
- 8259A自动清除ISR中已置位的优先级最高的位
- 手动结束方式EOI
- 在中断服务程序的最后,向8259A发中断结束指令,将ISR中响应的位清除,表明中断服务程序已完成
3.5 思考
- 如何具体的设置和控制8259A?