X86中断系统-中断源及PIC
来源:互联网 发布:java 遍历ftp文件夹 编辑:程序博客网 时间:2024/05/21 11:53
1、中断源
x86系统支持256个中断源,每个中断源使用0~255数字标识,该标识称作中断向量号(即CPU中断源的中断号,要与外部中断的中断号IRQ n相区别),CPU通过获取中断向量号识别中断源。256个中断源可以分为:
其中:
1)内部中断:由CPU内部事件及执行软中断指令产生,由除法中断、溢出中断、单步中断、断点中断、软件中断组成;
2)外部中断:x86 CPU为外部中断只提供了NMI、INTR两个引脚;其中外部不可屏蔽中断如总线错误、电源错误、内存错误等引起的中断,通过NMI引脚提供给CPU;外部可屏蔽中断通过INTR引脚向CPU传递中断。
2、中断控制器
目前常见的中断控制器分为PIC(programable interrupt controller)8259A和APIC(advanced programable interrupt controller);
2.1、8259A PIC
我们都知道计算机可以挂接上许多外部设备,比如键盘、磁盘驱动器、鼠标、声卡……等等一系列设备,而这些设备都可能在同一时刻向CPU发出
中断信号(也就是外部中断),那么CPU到底应当响应哪一个设备的中断信号呢?这都通过另外一个芯片来控制,在IBM PC机中,这个芯片常常被称作
:可编程中断控制器(PIC)8259A,说它可编程,是因为我们可以通过编程来改变它的功能。比如我可以通过编程设定CPU应当优先响应哪一个中断,
屏蔽哪些中断等等一系列事件。
1)引脚功能介绍
- D7~D0:双向、三态数据线,与系统数据总线相连。对i8259A编程时,命令字由此写入,在第二个中断响应总线周期中,中断类型码由此传给CPU。
- RD (上划线):读信号,输入,与系统控制总线IOR(上划线) 相连。RD (上划线)
=0时,CPU对i8259A进行读操作。 - WR(上划线) :写信号,输入,与系统控制总线IOW(上划线) 相连。当WR(上划线)=0时,CPU对i8259A进行写操作。
- A0:片内寄存器寻址信号,输入,用于对片内寄存器端口寻址。每片i8259A有两个寄存器端口,A0=0时,选中偶地址端口,A0=1时,选中奇地址端口。在与8088系统相连时,可将该引脚与地址总线的A0连接;与8086系统连接时,可将该引脚与地址总线的A1连接。
- CS (上划线):片选信号,输入。CS (上划线)
=0时,i8259A被选中。在与8088系统相连时,系统地址信号A15~A1经译码器译码后为i8259A产生片选信号。 - SP/EN(上划线) :双功能双向信号。当8259A工作在缓冲模式时,它作为输出,用于控制缓冲器的传送方向。当数据从CPU送往i8259A时,SP/EN(上划线)
输出为高电平;当数据从i8259A送往CPU时,SP/EN(上划线) 输出为低电平。当8259A工作在非缓冲模式时,它作为输入,用于指定8259A是主片还是从片(级联方式)。SP/EN(上划线) =1的8259A为主片,SP/EN(上划线) =0的8259A为从片。
备注:在Linux中, i8259A均工作在非缓冲模式下。
- INT:中断请求信号,输出,与CPU的中断请求信号线INT相连。在级联方式下,从片的INT与主片的IR7~IR0中的某一根连接在一起。
- INTA(上划线) :中断响应信号,输入,与CPU的中断响应信号线INTA(上划线) 相连。
- CAS2~CAS0:级联控制线,主片的CAS2~CAS0与从片的CAS2~CAS0对应相连。对于主片,CAS2~CAS0为输出信号;对于从片,CAS2~CAS0为输入信号。当从片发起的中断请求被响应时,主片通过CAS2~CAS0送出相应的编码给从片,告诉从片该中断请求被允许。
-
IR7~IR0:中断请求输入信号,由外设输入。上升沿(边沿触发方式)或高电平(电平触发方式)表示有中断请求到达。 - VCC:+5V电源输入信号。
- GND:电源地
1.IMR判断该中断是否被屏蔽掉(IMR中相应的位置1)了,如果被屏蔽掉了结束处理,否则跳转到第2步;
2.将收到的中断请求保存到IRR中(IRR中相应的位置1,IRR相当于一个缓存,用来保存等待CPU处理的中断信号),等待CPU当前指令执行结束后向8259A发送INTA信号,表示现在CPU可以处理中断请求了,此时IRR相应位被reset,然后跳转到第3步;
3.PR根据等待处理的中断信号对应的IRQ,选择最高优先级的中断信号进行处理,IRQ0优先级最高,接着是IRQ1、IRQ2……然后跳转到第4步;
4.CPU向8259A发送INTA信号,要求被告知IRQ对应的中断向量号(INT号),然后根据中断向量号到IDT(interrupt description table)中找到相应的中断向量,跳转到对应的中断处理子程序入口地址开始执行,此时中断向量号对应的ISR中位被set(IRR被reset和ISR被set的过程是对应的),如果此时有更高优先级的中断信号等待处理,跳转到第3步。
CPU中断向量
I/O ADDR
INT TYPE
FUNCTION
00 ~ 03
0
除法溢出中断
04 ~ 07
1
单步(用于DEBUG)
08 ~ 0B
2
非屏蔽中断(NMI)
0C ~ 0F
3
断点中断(用于DEBUG)
10 ~ 13
4
溢出中断
14 ~ 17
5
打印屏幕
18 ~ 1F
6,7
保留
8259中断向量
I/O ADDR
INT TYPE
FUNCTION
20 ~ 23
8
定时器(IRQ0)
24 ~ 27
9
键盘(IRQ1)
28 ~ 2B
A
彩色/图形(IRQ2)
2C ~ 2F
B
串行通信COM2 (IRQ3)
30 ~ 33
C
串行通信COM1 (IRQ4)
34 ~ 37
D
LPT2控制器中断(IRQ5)
38 ~ 3B
E
磁盘控制器中断(IRQ6)
3C ~ 3F
F
LPT1控制器中断(IRQ7)
BIOS中断向量
I/O ADDR
INT TYPE
FUNCTION
40 ~43
10
视频显示I/O
44 ~ 47
11
设备检验
48 ~ 4B
12
测定存储器容量
4C ~ 4F
13
磁盘I/O
50 ~ 53
14
RS-232 串行口I/O
54 ~ 57
15
系统描述表指针
58 ~ 5B
16
键盘I/O
5C ~ 5F
17
打印机I/O
60 ~ 63
18
ROM BASIC 入口代码
64 ~ 67
19
引导装入程序
68 ~ 6B
1A
日时钟
提供给用户的中断
I/O ADDR
INT TYPE
FUNCTION
6C ~ 6F
1B
Ctrl - Break控制的软中断
70 ~ 73
1C
定时器控制的软中断
参数表指针
I/O ADDR
INT TYPE
FUNCTION
74 ~ 77
1D
视频参数块
78 ~ 7B
1E
软盘参数块
7C ~ 7F
1F
图形字符扩展码
DOS中断向量
I/O ADDR
INT TYPE
FUNCTION
80 ~ 83
20
DOS中断返回
84 ~ 87
21
DOS系统功能调用
88 ~ 8B
22
程序中止时DOS返回地址(用户不能直接调用)
8C ~ 8F
23
Ctrl - Break 处理地址(用户不能直接调用)
90 ~ 93
24
严重错误处理(用户不能直接调用)
94 ~ 97
25
绝对磁盘读功能
98 ~ 9B
26
绝对磁盘写功能
9C ~ 9F
27
终止并驻留程序
A0 ~ A3
28
DOS安全使用
A4 ~ A7
29
快速写字符
A8 ~ AB
2A
Microsoft 网络接口
B8 ~ BB
2E
基本 SHELL程序装入
BC ~ BF
2F
多路服务中断
CC ~ CF
33
鼠标中断
104 ~ 107
41
硬盘参数块
118 ~ 11B
46
第二硬盘参数块
11C ~ 3FF
47 ~ FF
BASIC 中断
- X86中断系统-中断源及PIC
- PIC的中断系统
- PIC单片机入门_中断系统详解
- x86中断
- pic 中断4
- pic 中断3
- pic可编程中断器
- Linux中断 - PIC
- PIC的中断入口
- PIC单片机之中断
- PIC之中断
- 关于PIC中断
- PIC定时器中断
- 中断请求(IRQ)中断控制器(PIC)
- 中断请求(IRQ)中断控制器(PIC) .
- PIC - 8259A中断控制器
- PIC单片机的中断过程
- PIC单片机之中断程序
- Tomcat项目部署方式
- HDOJ 1596 find the safest road(最短路)
- Android服务概要
- win32和Ubuntu下安装pytesseract
- 数据结构示例之字符串替换
- X86中断系统-中断源及PIC
- Centos下安装、Nginx笔记(二) 简单负载均衡
- git用户信息配置
- 01分数规划问题初步
- JQuery中Ajax的操作
- linux部分命令笔记
- Tomcat介绍及配置
- 复习position定位
- Git学习之旅