http://qsyang.yeah.net
现代微机原理与接口技术
1
第 5章 中断技术
http://qsyang.yeah.net
现代微机原理与接口技术
2
5.1 中断基本概念
5.1.1 中断基本概念定义,CPU暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执行,这个过程就是中断。
中断过程:
中断处理的隐操作,程序状态及程序断点地址的进栈及出栈。
中断请求 中断响应 中断服务 中断结束中断处理
http://qsyang.yeah.net
现代微机原理与接口技术
3
中断系统其他功能:
支持多中断源和多种中断源。
支持中断屏蔽处理。
支持中断嵌套处理。
支持中断优先级修改。
支持中断结束方式选择。
http://qsyang.yeah.net
现代微机原理与接口技术
4
5.1.2 中断类型
1.外部硬件 (如键盘、鼠标,串口,并口打印机等)中断中断请求,多个中断请求的排队和判优由中断控制器完成,产生的有无中断请求的信号送到 CPU的 INTR引脚。
中断类型号,通过数据总线送到 CPU中。
EFLAGS寄存器的 IF位影响 CPU对中断请求的响应。
处理器在当前指令执行结束的时候启动中断识别 INTA
总线周期属性,硬件、可屏蔽、向量。
SIO
LPC47B27X
…IRQx
82801BASERIRQ 82815EP
PII/III CPUINTR
中断类型号
PIRQx
http://qsyang.yeah.net
现代微机原理与接口技术
5
2.不可屏蔽中断中断请求,中断请求的信号送到 CPU的 NMI引脚。
中断类型号,固定为 2。
CPU不需要进行中断识别,直接处理中断。
属性,硬件、不可屏蔽、向量。
NMI由 0跳变到 1以后要维持至少 4个连续的处理器时钟周期的高电平才被识别。
NMI由 1跳变到 0以后要维持至少 4个连续的处理器时钟周期的低电平,新的 NMI中断才能被识别。
http://qsyang.yeah.net
现代微机原理与接口技术
6
3.软件中断属性,软件、不可屏蔽、向量。
中断请求,指令执行中或程序调用产生。
中断类型号,CPU规定或指令给出。
CPU专用中断,溢出 (O)、单步 (1)、断点中断 (3)。
BIOS中断,I/O设备控制、实用服务、特殊中断、专用参数中断。
DOS中断,公开 /未公开、可调用、系统功能。
自由中断,未定义 (20H~3FH中未使用的中断 )。
CPU不需要进行中断识别,直接处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
7
常用的软件中断中断号 功 能 中断号 功 能
10H 视频服务中断 13H 软硬盘控制中断
14H 串行口中断 15H 各种 IO设备中断
16H 键盘中断 17H 并行打印口中断
20H 返回 DOS 21H DOS功能调用
23H Ctrl+Break处理 24H DOS严重错误
33H 鼠标中断 2FH
31H
DOS保护方式接口
BIOS,DOS、自由中断的汇编调用方式:
INT n ; n为中断向量号,如 INT 10H,INT 21H
http://qsyang.yeah.net
现代微机原理与接口技术
8
4.内部中断和异常属性,软件、不可屏蔽、向量。
中断请求,指令执行中产生。
中断类型号,CPU规定。
失效,错误在指令完成前,错误指令的 CS,EIP压栈。该指令会重做。
陷阱,错误在指令完成后,错误指令下一指令的 CS:
EIP压栈。
中止,不保存,重启机器。
CPU不需要进行中断识别,直接处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
9
5.1.3 中断识别及其优先级
1.中断识别只有外部硬件中断需要进行识别,其余不需要识别。
中断识别由中断控制器完成。
2.中断优先级原则,按机器故障,DMA、外围硬件、软件递减。
结果,CPU专用 >DMA>外围硬件 >BIOS>DOS>自由。
即基本按中断向量表排序。
外围硬件一般可由用户修改其优先权。
http://qsyang.yeah.net
现代微机原理与接口技术
10
5.1.4 中断响应在当前指令结束后,可屏蔽中断根据 EFLAGS寄存器
IF位决定是否响应;其他中断给予响应。
中断响应的步骤如下:
1.保护断点通过堆栈及相关硬件实现 EFLAGS,CS,EIP的保护。
并清除 IF和 TF。
压栈的顺序是 EFLAGS,CS,EIP
2.取得中断类型号对外部硬件中断通过中断响应周期取得中断类型号。
非外部硬件中断直接取得入口地址,无须第 2步
http://qsyang.yeah.net
现代微机原理与接口技术
11
4.转入中断处理程序
5.返回断点恢复断点( EIP,CS,EFLAG顺序出栈)继续执行主程序。
3.取得中断服务程序入口地址对向量中断,通过中断类型号查中断向量表或中断描述符表取得。
从中断处理程序入口地址转到中断处理程序。执行对中断的处理。
http://qsyang.yeah.net
现代微机原理与接口技术
12
5.1.5 PC机中断向量表 (IVT,用于实地址模式 )
2.中断向量表位于内存地址 0000,0000开始的 1KB范围内。
按中断类型号顺序存放中断向量。
3.中断向量指针指向存放中断向量地址第一字节的指针。
中断向量指针 =中断类型号 × 4。
软件中断中自由中断的中断向量需用户自己装入。
1.中断向量对应中断类型号的中断服务程序入口地址。
每个中断向量占 4字节。
http://qsyang.yeah.net
现代微机原理与接口技术
13
5.1.6 中断描述符表 (IDT,用于保护模式 )
1.中断描述符表 (IDT)
表项长度,8字节,每个表项对应一个中断类型号。
表项类型,任务门、中断门、陷阱门。
通过特征位 (b40~b44)区分不同类型。
http://qsyang.yeah.net
现代微机原理与接口技术
14
表的长度,8字节 × 256=2KB。
表的位置,由中断描述符表寄存器 (IDTR)指向。
2.中断描述符指针指向中断描述符表中的中断描述符的指针。
中断描述符指针 =IDT基地址 +中断类型号 × 8。
3.中断门 /陷阱门内容,段选择符、属性和偏移量。
中断门与陷阱门区别:
通过中断门处理时 EFLAG的 IF被清 0,通过陷进门处理 IF不清 0。
中断门的优先级比陷阱门高,是面向外部硬件中断的门,后者面向优先级低的中断。
http://qsyang.yeah.net
现代微机原理与接口技术
15
中断服务子程序入口地址取得:
偏移属性选择符中断门 /
陷阱门
IDTR
IDT
中断类型号
7 0
× 8
边界属性基地址段描述符
CS
GDT/LDT
线性地址中断服务子程序代码段段基地址偏移
EIP
CS段描述符缓冲器中断描述符段描述符
http://qsyang.yeah.net
现代微机原理与接口技术
16
TSS
选择符任务门
IDTR
IDT
中断类型号
7 0
× 8
属性段限基址
TSS描述符
TR
GDT
线性地址
TSS
基址
TR描述符缓存器
4.任务门内容,TSS选择符与属性。
TSS取得:
优点,中断任务和被中断任务完全隔离。
缺点,中断响应过程耗时长。
http://qsyang.yeah.net
现代微机原理与接口技术
17
5.2 Intel 8259A
5.2.1 8259A主要任务接受外部的中断请求;
管理所有外部的中断请求 (排队、判优、屏蔽、嵌套 );
向 CPU产生中断请求 INTR信号及中断类型号;
进行中断结束处理;
接受 CPU命令及返回状态。
http://qsyang.yeah.net
现代微机原理与接口技术
18
5.2.2 8259A引脚及内部结构
1.8259A引脚
CPU侧:
DB0~DB7;
外设侧:
IR0~IR7;
级联:
CS;
RD,WR,A0;
SP/EN,CAS0~CAS2。
INT,INTA;
http://qsyang.yeah.net
现代微机原理与接口技术
19
2.8259A内部结构
http://qsyang.yeah.net
现代微机原理与接口技术
20
内部逻辑,IRR,IMR,PR,ISR及控制电路。
中断请求过程,IR->INT。
&INT
ISR编码中断请求优先级编码器中断请求寄存器IR
R
IR0
IR7
…
…
&
&
&
&
&
&
&
&
中断屏蔽寄存器 IMR
D0 D7…
≥1
比较器
B0
B1
B2
A>B
A0
A1
A2
接口电路,CPU接口,I/O接口。
http://qsyang.yeah.net
现代微机原理与接口技术
21
CPU响应可屏蔽中断条件:
当前指令执行完毕;
EFLAGS中 IF=1;
INTR信号有效。
中断响应过程,8259向 CPU送中断类型号。
第一个 INTA,CPU封锁总线 (LOCK有效 ),8259A最高优先级请求对应 ISR位置位,对应 IRR复位。
第二个 INTA,总线解锁,ALE无效,8259A将当前中断服务程序对应中断类型号送到数据总线上。
ISR的复位在自动结束 /非自动结束时不一致。
DMA传送方式比中断方式速度快 (响应与传送 )。
回 ICW3
http://qsyang.yeah.net
现代微机原理与接口技术
22
级联方式结构:
级联 3级联 1 级联 2
http://qsyang.yeah.net
现代微机原理与接口技术
23
3.8259A工作方式中断请求方式:
边沿触发方式,正跳变向 8259A请求中断。
电平触发方式,高电平向 8259A请求中断,响应中断后要及时清除高电平。
查询中断方式,外设向 8259A请求中断,但
8259A不向 CPU发中断请求信号
INT。而是将请求状态保存等待
CPU来查询。
PC机初始化为边沿触发
http://qsyang.yeah.net
现代微机原理与接口技术
24
连接总线与级联方式,
非缓冲方式,小系统中,8259A数据线直接连系统数据总线,不需要总线缓冲器,此时 SP/EN
表示级联时主 /从关系。
主片,SP/EN接高电平;
从片,SP/EN接低电平。
缓冲方式,大系统中,数据总线都具有总线缓冲器,此时 SP/EN表示数据传送方向,级联时主 /从关系通过软件设定 ICW4来决定。
PC机初始化为非缓冲方式
http://qsyang.yeah.net
现代微机原理与接口技术
25
屏蔽方式:
缺省特性,自动屏蔽低于自己优先级的 IR。
正常屏蔽,IMR中相应位置位;
特定屏蔽,开放比自己优先级低的 IR。
优先级管理方式:
缺省特性,IR0~IR7的优先级为一循环队列。
固定优先权,从 IR0~IR7降序;
轮转优先权:
自动轮转,刚被服务的 IR的优先级降至最低;
指定轮转,指定的 IR的优先级降至最低。
PC机初始化为缺省屏蔽特性,固定优先权
http://qsyang.yeah.net
现代微机原理与接口技术
26
嵌套方式:
全嵌套,禁止同优先级和低优先级请求发生;
特殊全嵌套,禁止低优先级请求发生。
应用,级联时主片特殊全嵌套,从片全嵌套。
结束方式( ISR复位方式):
自动,中断响应后 ISR中最高优先级位自动复位;
非自动,中断服务程序返回前,需要处理程序发出对 ISR中相应位复位的中断结束命令;
不指定方式,ISR中最高优先级位复位;
指定方式,命令中指定的 ISR中相应位复位。
PC机初始化为全嵌套,非自动结束方式级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
27
4.8259A的操作功能及命令
I/O端口地址,只提供二个端口 (使用 A0区别 );
命令,初始化 --ICW1~ICW4,
操 作 --OCW1~OCW3。
状态,IRR,ISR,IMR、查询字。
I/O端口操作冲突时解决方法:
信息字节中有空闲位时,特征位方法;
信息字节中无空闲位时,时序方法。
http://qsyang.yeah.net
现代微机原理与接口技术
28
PIC1 PIC2 操作 内容 特征位 时序
D4D3D2
20H 0A0H 写 ICW1 1×× 无
OCW2 00×
OCW3 01×
21H 0A1H 写 ICW2~ICW4 无 ICW2→ICW4
OCW1 初始化后
20H 0A0H 读 IRR,ISR
查询字无 OCW3决定
21H 0A1H 读 IMR 无 无
8259A命令关系表(地址以 PC机中为例):
注,ICWx只有在初始化过程中才会出现。
http://qsyang.yeah.net
现代微机原理与接口技术
29
(1)初始化命令 ICW1
特征位,D4=1;
初始化命令 ICW4主要设定嵌套、缓冲、结束方式,
缺省值为全嵌套、非缓冲、非自动结束方式 。
当 SNGL=0,需要初始化命令 ICW3来设置级联项。
http://qsyang.yeah.net
现代微机原理与接口技术
30
(2)初始化命令 ICW2
时序,ICW1→ ICW2→[ICW3]→[ICW4] 。
IRi的中断类型号 = ICW2的高 5位 +i
例,如果 ICW2为 08H,则
IR3的中断类型号(中断向量)为 08H+03H=0BH。
http://qsyang.yeah.net
现代微机原理与接口技术
31
(3)初始化命令 ICW3
级联方式结构设置:
主片,S7~S0分别对应相应的 IR号的引脚,
为 1的位对应的引脚接有从片;
从片,ID2~ID1的编号是该从片接到主片的
IR引脚的 IR号。
需要分别对主片和从片进行设置。
级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
32
主 片,MOV AL,14H
OUT 21H,AL
从片 1,MOV AL,04H
OUT 0A1H,AL
从片 2,MOV AL,02H
OUT 0C1H,AL
级联方式中断请求及响应过程:
主片请求:与非级联一致。
从片请求:与非级联一致,但其 INT送到主片,服从主片的请求规则。
从片响应:通过 CAS线译码,选中时在收到第二个
INTA后,返回中断类型号。
非级联响应主片响应:收到第一个 INTA后,对从片的 IR请求,
在第一个 INTA下降沿 从 CAS线送出该 IR编码;否则,
在第二个 INTA返回中断类型号。
级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
33
(4)初始化命令 ICW4
D0,用于 8位 (0)/16位 (1)微机;
D1,非中断自动结束 (0)/自动结束 (1)方式;
D2,缓冲方式 (D3=1)时的主从片级联位置设置,
从片 (0)/主片 (1) ;
D3,非缓冲 (0)/缓冲 (1)方式;
D4,全嵌套 (0)/特殊全嵌套 (1)方式。
从片非自动结束时,主、从片均需发 EOI命令。
http://qsyang.yeah.net
现代微机原理与接口技术
34
(5)操作命令 OCW1
正常屏蔽:
特征位,无,时序,无。
实际上改变了中断优先级(屏蔽掉高优先级的中断请求)。
对 IMR的读取在 21H(主),0A1H(从)端口做读操作。
特殊屏蔽:
通过 OCW3设置。
http://qsyang.yeah.net
现代微机原理与接口技术
35
(6)操作命令 OCW2
特征位,D4D3=00;
功能,结束方式和优先权轮转管理;
结束方式管理:
D6D5=X0,自动结束,硬件自动清除 ISR的相应位;
D6D5=01,非自动结束 [命令不指定清 ISR的哪一位 ];
D6D5=11,非自动结束 [命令指定清 ISR的哪一位 ]。
优先权管理:
D7=0,优先权固定; D7=1,优先权轮转。
http://qsyang.yeah.net
现代微机原理与接口技术
36
R SL EOI 0 0 L2 L1 L0 功能
0 0 0 0 0 0 0 0 自动 EOI,优先权固定命令
0 0 1 0 0 0 0 0 非自动 EOI[不指定 ],优先权固定命令
0 1 1 0 0 L2 L1 L0 非自动 EOI[指定 ],优先权固定命令
1 0 0 0 0 0 0 0 自动 EOI,优先权自动轮转命令
1 0 1 0 0 0 0 0 非自动 EOI[不指定 ],优先权自动轮转命令
1 1 1 0 0 L2 L1 L0 非自动 EOI[指定 ],优先权指定轮转命令
1 1 0 0 0 L2 L1 L0 自动 EOI,优先权指定轮转命令例,MOV AL,20H
OUT 20H,AL的含义?
http://qsyang.yeah.net
现代微机原理与接口技术
37
(7)操作命令 OCW3
P RR RIS 功能 应用
0 1 0 读取 IRR内容 MOV AL,0AHOUT 20H,AL
IN AL,20H
0 1 1 读取 ISR内容 MOV AL,0BHOUT 20H,AL
IN AL,20H
0 0 * 不读取任何寄存器内容
1 * * 读取查询字信息 MOV AL,0CHOUT 20H,AL
IN AL,20H
特征位,D4D3=01;
http://qsyang.yeah.net
现代微机原理与接口技术
38
查询字格式:
I=0,无中断请求;
I=1,有中断请求。
W2~W0,正在申请中断的若干中断源中优先级最高的中断源的编码。
http://qsyang.yeah.net
现代微机原理与接口技术
39
特定屏蔽管理:
ESMM SMM 功能
0 * 该操作对特殊屏蔽无效
1 0 取消特定屏蔽
1 1 设置特定屏蔽设置方法:
用 OCW1屏蔽部分 IR[含自己 ],
用 OCW3置 SMM即可。
取消方法:
用 OCW3取消特定屏蔽,
用 OCW1取消被屏蔽的 IR。
http://qsyang.yeah.net
现代微机原理与接口技术
40
1.初始化编程步骤
5.2.3 8259A初始化编程 out 20h(a0h),al
out 21h(a1h),al
out 21h(a1h),al
out 21h(a1h),al
http://qsyang.yeah.net
现代微机原理与接口技术
41
2.初始化编程
不同 8259A的 I/O端口地址不同;
8259A级联时,每个 8259A均必须有完整的初始化过程 [端口地址和部分参数不同而已 ];
全嵌套方式时,初始 IR优先级 IR0最高。
注意点:
http://qsyang.yeah.net
现代微机原理与接口技术
42
例:
INTM00 EQU 020H ;8259A端口 0
INTM01 EQU 021H ;8259A端口 1
……
MOV AL,00010011B ;ICW1:边沿触发,要 ICW4;;单片方式,不要 ICW3。
OUT INTM00,AL
JMP SHORT $+2 ;I/O端口延时
MOV AL,00001000B ;ICW2:设置中断向量,起始的;中断向量为 08H。
OUT INTM01,AL
JMP SHORT $+2
MOV AL,00000001B ;ICW4:非缓冲,全嵌套,非自;动中断结束 (EOI)。
OUT INTM01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
43
思考题:
MOV AL,12H
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,02H
OUT 21H,AL
MOV AL,13H
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,02H
OUT 21H,AL
问:以上左右两段对 8259的访问程序中,最后一句分别是发的什么命令?
http://qsyang.yeah.net
现代微机原理与接口技术
44
5.2.4 微机中 8259A应用
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
A5
A6
A7
A8
A9
AEN
中断控制器 8259A的端口地址为 20H,21H
1.PC机系统板上 8259A的连接
8259A
CS
DB[7..0]
IR[7..0]
INTA
A0 A0
INT
INTA
INTR
RD
WR
IOW
IOR 接 8288
接 CPU
接中断源接数据线接地址线
http://qsyang.yeah.net
现代微机原理与接口技术
45
2.现代微机中 82801BA中 8259A级联注意:
主、从区分;
IRQ优先级;
请求与响应。
http://qsyang.yeah.net
现代微机原理与接口技术
46;对主片 8259A的初始化
INTM00 EQU 020H ;主 8259A端口 0
INTM01 EQU 021H ;主 8259A端口 1
……
MOVAL,00010001B ;ICW1:边沿触发,要 ICW4;级联方式,要 ICW3。
OUT INTM00,AL
JMP SHORT $+2 ;I/O端口延时
MOVAL,00001000B ;ICW2:设置主片的中断向量,起始的中断向量为 08H
OUT INTM01,AL
JMP SHORT $+2
MOVAL,00000100B ;ICW3:表示从 8259A的 INT输出是连接到主片的 IR2。
OUT INTM01,AL
JMP SHORT $+2
MOVAL,00010001B ;ICW4:非总线缓冲,特殊全嵌套,非自动 EOI
OUT INTM01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
47;对从片 8259A的初始化
INTS00 EQU 0A0H ;从 8259A端口 0
INTS01 EQU 0A1H ;从 8259A端口 1
……
MOVAL,00010001B ;ICW1边沿触发,要 ICW4;级联方式,要 ICW3。
OUT INTS00,AL
JMP SHORT $+2
MOVAL,01110000B ;ICW2:设置从片的中断向量,起始的中断向量为 70H
OUT INTS01,AL
JMP SHORT $+2
MOVAL,00000010B ;ICW3:设置从片的识别标志,指定对应主片的 IR2。
OUT INTS01,AL
JMP SHORT $+2
MOVAL,00000001B ;ICW4:非总线缓冲,全嵌套,非自动中断结束 。
OUT INTS01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
48
3.现代微机中断请求线连接
8259 8259输入 典型的中断源 被连接的引脚 /功能主片 0 内部 内部时钟 /计数器 0的输出
1 键盘 通过 SERIRQ来的 IRQ1
2 内部 从控制器的级联引脚
3 串行端口 2 通过 SERIRQ来的 IRQ3
4 串行端口 1 通过 SERIRQ来的 IRQ4
5 并行端口 /普通 通过 SERIRQ来的 IRQ5
6 软磁盘 通过 SERIRQ来的 IRQ6
7 并行端口 /普通 通过 SERIRQ来的 IRQ7
返回下页
http://qsyang.yeah.net
现代微机原理与接口技术
49
8259 8259输入 典型的中断源 被连接的引脚 /功能从片 0 内部实时时钟 内部 RTC
1 普通 通过 SERIRQ来的 IRQ9
2 普通 通过 SERIRQ来的 IRQ10
3 普通 通过 SERIRQ来的 IRQ11
4 PS/2鼠标 通过 SERIRQ来的 IRQ12
5 内部 基于处理器 FERR#的状态机输出
6 基本 IDE电缆 从输入信号来或通过 SERIRQ来的
IRQ14
7 第二 IDE电缆 从输入信号来或通过 SERIRQ来的
IRQ15
SIO
LPC47B27X
…IRQx
82801BASERIRQ CPU
INTR
IRQ14,15 返回第 53页转上页
http://qsyang.yeah.net
现代微机原理与接口技术
50
4.现代微机中断控制
82801BA
82815EP
PII/III
CPU
PCI INTA
INTA
中断类型号
CP
U
总线
INTR主 8259A从 8259A
IRQ
内部逻辑两个 INTA#
http://qsyang.yeah.net
现代微机原理与接口技术
51
在上面的过程中有几点注意:
一个或多个 IRQ到来的时候,置中断请求寄存器 IRR
的相应位 。如果中断没有被屏蔽,才可以发 INTR。
82801BA内部产生两个周期 INTA#后,第一个 INTA#
脉冲,有最高优先级的 ISR的相应位被置上,而 IRR
的相应位被复位。 第一个脉冲的下降沿,主中断控制器利用内部 3根专用线 CAS向从中断控制器发送从识别码。 第二个 INTA#脉冲后,主或从识别码选中的从可编程中断控制器返回中断向量。
结束中断响应周期时,如果在自动中断结束( AEOI
)模式下,则中断服务寄存器( ISR)的相应位在 第二个 INTA#脉冲的末尾 被复位,否则 ISR相应位保持置位直到中断处理程序末尾发出 EOI命令。
http://qsyang.yeah.net
现代微机原理与接口技术
52
5.3 实模式下中断编程
5.3.1 中断编程注意点
1.使用正确的中断号
2.中断服务程序入口的正确设置
3.避免中断程序中 DOS重入
4.中断程序执行时间的正确估计
5.中断的打开与关闭
6.中断结束处理及返回
http://qsyang.yeah.net
现代微机原理与接口技术
53
5.3.2 中断处理程序举例……
OLD0C DD?
……
CODE SEGMENT
……
MOV AX,350CH ; 保存原来的 0CH中断向量
INT 21H
MOV WORD PTR OLD0C,BX
MOV WORD PTR OLD0C+2,ES
MOV AX,CODE ; 写入新的 0CH中断向量
MOV DS,AX
MOV DX,OFFSET SERVICE
MOV AX,250CH
INT 21H
…… ; 其它程序段; 中断处理子程序
http://qsyang.yeah.net
现代微机原理与接口技术
54; 中断处理子程序
SERVICE PROC
PUSHA ; 保护现场
PUSH DS
STI ; 打开中断
……; 串口数据处理程序
……
CLI ; 关闭中断
MOV AL,20H
OUT 20H,AL ; 发中断结束命令
POP DS ; 恢复现场
POPA
IRET
SERVICE ENDP
http://qsyang.yeah.net
现代微机原理与接口技术
55
5.4 PCI中断
5.4.1 PCI中断请求
PCI中断线,INTA#,INTB#,INTC#,INTD#。
PCI中断源,PIRQA#~PIRQD#。
PCI中断源连接,通过映射到 ISA中断( 3~7,9~12,
14~15)来实现。
转第 47页特点:
当 PCI中断被映射到一个 ISA的 IRQ后,该 IRQ不可再被 ISA设备 (通过 SERIRQ的中断 )使用。
PCI中断可与低电平有效的非 ISA中断共享同一 IRQ。
http://qsyang.yeah.net
现代微机原理与接口技术
56
实现:
设备 31的 0号功能的 60H~63H,68H~6BH的 PIRQ路由控制寄存器实现 PIRQA#~PIRQH#与 IRQ的映射关系。
PIRQ#路由控制寄存器 [8bit]存放的是 IRQ编码。
PCI中断请求:
PCI中断请求必须为电平触发方式。
不同 PIRQ#的优先级由 IRQ决定。
同一 PIRQ#不同设备 INT*的优先级由安装次序决定。
多个 PIRQ#信号线能连在同一个 IRQ上。
PIRQA#
PIRQB#
PIRQC#
PIRQD#
3
5
7
3
60H~63H
8259A
IR0
IR3
IR5
IR7
http://qsyang.yeah.net
现代微机原理与接口技术
57
5.4.2 PCI中断响应
PCI中断响应为单周期响应。
HOST-PCI桥自动将双中断响应周期转换成单中断响应周期。
其他中断响应过程与 8259A同,中断类型号通过
HOST-PCI桥再返回给处理器。
中断响应周期中可插入等待周期。
中断服务程序入口地址由中断描述符表管理。
http://qsyang.yeah.net
现代微机原理与接口技术
58
图 5.14 PCI中断响应周期
CLK
FRAME#
1 2 3 4 5
AD
C/BE#
IRDY#
TRDY#
无效 向量
0000 BE#s( 1110)
DEVSEL #
http://qsyang.yeah.net
现代微机原理与接口技术
59
5.4.3 PCI中断共享
PCI中断请求信号为漏极开路的。
即:中断向量表中中断向量为同一 PIRQ#中最后安装的设备的中断服务程序入口地址。
同一 PIRQ#不同设备的优先级最后安装的最高。
PCI中断的状态位通过中断服务程序读取,并处理。
同一 PIRQ#中断服务实现方法:
采用链表式处理方法。
方法,PNP配置时将同一 PIRQ#的原中断向量存放到其设备驱动的特定寄存器后才替换为新的中断向量。
中断向量
(描述符)
中断处理程序设备 2
中断处理程序设备 1
^
PIRQA#
http://qsyang.yeah.net
现代微机原理与接口技术
60
5.5 APIC(自学)
5.5.1 APIC子系统组成
1.组成处理器核心
Local APIC
模块处理器核心
Local APIC模块
I/O APIC 模块
INTIN 23 INTIN 0
系统中断请求
APIC
时钟
PICD0
PICD1
PICCLK
LINT0/ INTR
LINT1/ NMI
处理器 0 处理器 1
LINT0/ INTR
LINT1/ NMI
返回下页
Local APIC,I/O APIC和 APIC总线。
http://qsyang.yeah.net
现代微机原理与接口技术
61
Local APIC:
包含了 8259A和 8254的功能。
转上页响应的中断:
I/O APIC送来的 系统中断请求 ;
经 APIC总线送来的 处理器间中断请求 ( IPI);
本地的中断请求 (定时、错误、计数、连线 )。
I/O APIC:
多达 24个中断;
中断优先级与中断号独立;
不需要中断响应周期。
可选择某个或一组处理器中的一个为 目标处理器 。
http://qsyang.yeah.net
现代微机原理与接口技术
62
APIC总线:
组成,APICD0,APICD1,APICCLK。
类型,串行同步总线。
串行时序,不同时钟先高位,后低位;同一时钟 D1
高位,D0低位。
内容,EOI命令和短消息。
应用,连接的每个模块均有自己的 ID(固定 );
每个模块均有自己的 仲裁 ID(可变,初值来自模块 ID)。
http://qsyang.yeah.net
现代微机原理与接口技术
63
2.APIC中断类型系统中断:
经 I/O APIC模块引脚送入的中断请求。
交中断请求指定的目标处理器处理。
本地中断:
定时、计数、错误,INTR及 NMI。
只能由本地处理器处理。
处理器间中断:
电平撤消初始化、初始化、启动、远程读,SMI、
NMI等。
交目标处理器处理。
http://qsyang.yeah.net
现代微机原理与接口技术
64
5.5.2 I/O APIC的寄存器
1.直接访问寄存器
INDR,[R/W]存放需访问的间接寄存器编号。
DATR,[R/W]间接访问寄存器访问结果。
IRQPAR,[W]存放置位方式产生的中断向量号。
EOIR,[W]存放正在服务 (将结束 )的中断向量号。
2.间接访问寄存器
IDR,[R/W32B]存放模块自己的固定的 ID。
VERR,[R32B]存放有无 IRQ声明和重定向寄存器数。
ARBIDR,[R32B]存放模块的仲裁 ID。
BOOT_CONFIGR,[R/W32B]存放中断传递方式。
http://qsyang.yeah.net
现代微机原理与接口技术
65
RDR,[R/W64B]索引编号 10H~3FH,
每个 RDR占两个号。
VectorDMDS DtMRIRRTMM目标 APICID L
中断向量传递模式
000— 固定式
001— 最低优先权式
100— NMI
111--ExtINT
目标模式
0— 物理方式
1— 逻辑方式递交状态
0— 空闲
1— 正在递交目标 APICID
逻辑模式 --8位物理模式 --低 4位屏蔽位
0— 允许 1— 屏蔽中断请求
0— 无 1— 中断未决引脚极性
0— 高电平激活
1— 低电平激活触发模式
0— 边沿 1— 电平
http://qsyang.yeah.net
现代微机原理与接口技术
66
5.5.3 APIC工作过程
1.中断请求产生并递交收到引脚信号有效改变时,置位 RDR的 RIRR位,争取总线使用权 后,向 APIC总线发送 短消息 。
目标处理器 (目标模式及传递模式 )已在 RDR中设定。
边沿 触发方式 时,消息传送后将 RDR的 RIRR位复位。
2.处理器接受中断请求产生并服务目标处理器 (可能多个 )的 Local APIC收到请求后,根据传递模式,确定本处理器是否命中 。
命中的目标处理器做相应中断处理,当处理器核心执行的代码优先级低于中断请求优先级时处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
67
3.中断结束阶段中断为电平触发方式时,发布 EOI命令通知 I/O APIC
做结束处理。
当前处理器的总线使用权降为最低。
http://qsyang.yeah.net
现代微机原理与接口技术
68
5.5.4 APIC总线仲裁结构,分布式仲裁。
空闲状态,D1D0=11(某消息结束后 )。
仲裁周期,5个时钟周期。
CLK D1 D0 解释
1 EOI 0 D1=1:常规,D1=0:EOI
2 NOT (ARBIDR[27]) 1 仲裁 ID,如果 82801BA
检测到的值和自己发送的值不一样就失去仲裁资格 。
3 NOT (ARBIDR[26]) 1
4 NOT (ARBIDR[25]) 1
5 NOT (ARBIDR[24]) 1
EOI传输优先级高于正常传输。
仲裁算法,轮转优先级算法。
仲裁得胜者置为 0,其余模块一律加 1。
http://qsyang.yeah.net
现代微机原理与接口技术
69
5.6 串行中断
5.6.1 串行中断结构
SIO
LPC47B27X
…IRQx 82801BASERIRQ CPUINTR
IRQ14,15PIRQx
PIRQx …
82801BA
串行中断驱动部件
SERIRQ 串行中断分离部件
2个 8259
部件
…
INTR
IRQ14,15
http://qsyang.yeah.net
现代微机原理与接口技术
70
SERIRQ线采用同步单线传输结构。
遵循 PCI信号使用的三态协议。
S-取样阶段 信号为低电平。
R-恢复阶段 信号为高电平。
T-翻转状态 信号被释放
SERIRQ支持 IRQ0,1,3~15,PIRQA#~PIRQD#,
SMI#和 IOCHK#。不支持 IRQ0,8,13中断。
SERIRQ上信息分帧传输。
http://qsyang.yeah.net
现代微机原理与接口技术
71
5.6.2 帧结构
1.开始帧操作模式:
连续的( 82801BA单独产生开始帧)
静态的(一个串行 IRQ设备来启动开始帧)
长度,4,6或 8个时钟宽度(设备 31的 0号功能配置空间的 64H处串行 IRQ控制寄存器位 1
和位 0决定 ).
http://qsyang.yeah.net
现代微机原理与接口技术
72
2.数据帧长度,21个时钟宽度。
3.停止帧长度,2或 3个时钟宽度。
含义,2— SERIRQ设备触发; 3— 82801BA触发。
驱动,需中断设备在自己的数据帧中将 SERIRQ驱动为低电平。所谓自己的数据帧是指在 21个时钟中数据帧号和本设备的 IRQ号码相等那一数据帧。外设要在
SERIRQ的上升沿开始计算帧。
http://qsyang.yeah.net
现代微机原理与接口技术
73
补充作业:
1,某系统需要最多 20个非共享的中断请求输入端,问下列 8259级联拓扑图哪个是正确的,不正确的请说明原因。
2,某系统使用一片 8259A作为中断控制器,希望该控制器采用电平触发,起始中断类型号是 16,总线缓冲方式
,全嵌套,正常 EOI。假如该芯片端口号是 50H和 51H
,请编写该 8259A的初始化程序。
3,用 8088汇编语言编写一个完整的程序处理 PC机的外部
IRQ5中断(含修改中断向量部分)。每当该中断到来将变量 come+ 1,当 come=100时恢复原中断向量。
AA
B
1 2
A
B C
B
C 3
现代微机原理与接口技术
1
第 5章 中断技术
http://qsyang.yeah.net
现代微机原理与接口技术
2
5.1 中断基本概念
5.1.1 中断基本概念定义,CPU暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执行,这个过程就是中断。
中断过程:
中断处理的隐操作,程序状态及程序断点地址的进栈及出栈。
中断请求 中断响应 中断服务 中断结束中断处理
http://qsyang.yeah.net
现代微机原理与接口技术
3
中断系统其他功能:
支持多中断源和多种中断源。
支持中断屏蔽处理。
支持中断嵌套处理。
支持中断优先级修改。
支持中断结束方式选择。
http://qsyang.yeah.net
现代微机原理与接口技术
4
5.1.2 中断类型
1.外部硬件 (如键盘、鼠标,串口,并口打印机等)中断中断请求,多个中断请求的排队和判优由中断控制器完成,产生的有无中断请求的信号送到 CPU的 INTR引脚。
中断类型号,通过数据总线送到 CPU中。
EFLAGS寄存器的 IF位影响 CPU对中断请求的响应。
处理器在当前指令执行结束的时候启动中断识别 INTA
总线周期属性,硬件、可屏蔽、向量。
SIO
LPC47B27X
…IRQx
82801BASERIRQ 82815EP
PII/III CPUINTR
中断类型号
PIRQx
http://qsyang.yeah.net
现代微机原理与接口技术
5
2.不可屏蔽中断中断请求,中断请求的信号送到 CPU的 NMI引脚。
中断类型号,固定为 2。
CPU不需要进行中断识别,直接处理中断。
属性,硬件、不可屏蔽、向量。
NMI由 0跳变到 1以后要维持至少 4个连续的处理器时钟周期的高电平才被识别。
NMI由 1跳变到 0以后要维持至少 4个连续的处理器时钟周期的低电平,新的 NMI中断才能被识别。
http://qsyang.yeah.net
现代微机原理与接口技术
6
3.软件中断属性,软件、不可屏蔽、向量。
中断请求,指令执行中或程序调用产生。
中断类型号,CPU规定或指令给出。
CPU专用中断,溢出 (O)、单步 (1)、断点中断 (3)。
BIOS中断,I/O设备控制、实用服务、特殊中断、专用参数中断。
DOS中断,公开 /未公开、可调用、系统功能。
自由中断,未定义 (20H~3FH中未使用的中断 )。
CPU不需要进行中断识别,直接处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
7
常用的软件中断中断号 功 能 中断号 功 能
10H 视频服务中断 13H 软硬盘控制中断
14H 串行口中断 15H 各种 IO设备中断
16H 键盘中断 17H 并行打印口中断
20H 返回 DOS 21H DOS功能调用
23H Ctrl+Break处理 24H DOS严重错误
33H 鼠标中断 2FH
31H
DOS保护方式接口
BIOS,DOS、自由中断的汇编调用方式:
INT n ; n为中断向量号,如 INT 10H,INT 21H
http://qsyang.yeah.net
现代微机原理与接口技术
8
4.内部中断和异常属性,软件、不可屏蔽、向量。
中断请求,指令执行中产生。
中断类型号,CPU规定。
失效,错误在指令完成前,错误指令的 CS,EIP压栈。该指令会重做。
陷阱,错误在指令完成后,错误指令下一指令的 CS:
EIP压栈。
中止,不保存,重启机器。
CPU不需要进行中断识别,直接处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
9
5.1.3 中断识别及其优先级
1.中断识别只有外部硬件中断需要进行识别,其余不需要识别。
中断识别由中断控制器完成。
2.中断优先级原则,按机器故障,DMA、外围硬件、软件递减。
结果,CPU专用 >DMA>外围硬件 >BIOS>DOS>自由。
即基本按中断向量表排序。
外围硬件一般可由用户修改其优先权。
http://qsyang.yeah.net
现代微机原理与接口技术
10
5.1.4 中断响应在当前指令结束后,可屏蔽中断根据 EFLAGS寄存器
IF位决定是否响应;其他中断给予响应。
中断响应的步骤如下:
1.保护断点通过堆栈及相关硬件实现 EFLAGS,CS,EIP的保护。
并清除 IF和 TF。
压栈的顺序是 EFLAGS,CS,EIP
2.取得中断类型号对外部硬件中断通过中断响应周期取得中断类型号。
非外部硬件中断直接取得入口地址,无须第 2步
http://qsyang.yeah.net
现代微机原理与接口技术
11
4.转入中断处理程序
5.返回断点恢复断点( EIP,CS,EFLAG顺序出栈)继续执行主程序。
3.取得中断服务程序入口地址对向量中断,通过中断类型号查中断向量表或中断描述符表取得。
从中断处理程序入口地址转到中断处理程序。执行对中断的处理。
http://qsyang.yeah.net
现代微机原理与接口技术
12
5.1.5 PC机中断向量表 (IVT,用于实地址模式 )
2.中断向量表位于内存地址 0000,0000开始的 1KB范围内。
按中断类型号顺序存放中断向量。
3.中断向量指针指向存放中断向量地址第一字节的指针。
中断向量指针 =中断类型号 × 4。
软件中断中自由中断的中断向量需用户自己装入。
1.中断向量对应中断类型号的中断服务程序入口地址。
每个中断向量占 4字节。
http://qsyang.yeah.net
现代微机原理与接口技术
13
5.1.6 中断描述符表 (IDT,用于保护模式 )
1.中断描述符表 (IDT)
表项长度,8字节,每个表项对应一个中断类型号。
表项类型,任务门、中断门、陷阱门。
通过特征位 (b40~b44)区分不同类型。
http://qsyang.yeah.net
现代微机原理与接口技术
14
表的长度,8字节 × 256=2KB。
表的位置,由中断描述符表寄存器 (IDTR)指向。
2.中断描述符指针指向中断描述符表中的中断描述符的指针。
中断描述符指针 =IDT基地址 +中断类型号 × 8。
3.中断门 /陷阱门内容,段选择符、属性和偏移量。
中断门与陷阱门区别:
通过中断门处理时 EFLAG的 IF被清 0,通过陷进门处理 IF不清 0。
中断门的优先级比陷阱门高,是面向外部硬件中断的门,后者面向优先级低的中断。
http://qsyang.yeah.net
现代微机原理与接口技术
15
中断服务子程序入口地址取得:
偏移属性选择符中断门 /
陷阱门
IDTR
IDT
中断类型号
7 0
× 8
边界属性基地址段描述符
CS
GDT/LDT
线性地址中断服务子程序代码段段基地址偏移
EIP
CS段描述符缓冲器中断描述符段描述符
http://qsyang.yeah.net
现代微机原理与接口技术
16
TSS
选择符任务门
IDTR
IDT
中断类型号
7 0
× 8
属性段限基址
TSS描述符
TR
GDT
线性地址
TSS
基址
TR描述符缓存器
4.任务门内容,TSS选择符与属性。
TSS取得:
优点,中断任务和被中断任务完全隔离。
缺点,中断响应过程耗时长。
http://qsyang.yeah.net
现代微机原理与接口技术
17
5.2 Intel 8259A
5.2.1 8259A主要任务接受外部的中断请求;
管理所有外部的中断请求 (排队、判优、屏蔽、嵌套 );
向 CPU产生中断请求 INTR信号及中断类型号;
进行中断结束处理;
接受 CPU命令及返回状态。
http://qsyang.yeah.net
现代微机原理与接口技术
18
5.2.2 8259A引脚及内部结构
1.8259A引脚
CPU侧:
DB0~DB7;
外设侧:
IR0~IR7;
级联:
CS;
RD,WR,A0;
SP/EN,CAS0~CAS2。
INT,INTA;
http://qsyang.yeah.net
现代微机原理与接口技术
19
2.8259A内部结构
http://qsyang.yeah.net
现代微机原理与接口技术
20
内部逻辑,IRR,IMR,PR,ISR及控制电路。
中断请求过程,IR->INT。
&INT
ISR编码中断请求优先级编码器中断请求寄存器IR
R
IR0
IR7
…
…
&
&
&
&
&
&
&
&
中断屏蔽寄存器 IMR
D0 D7…
≥1
比较器
B0
B1
B2
A>B
A0
A1
A2
接口电路,CPU接口,I/O接口。
http://qsyang.yeah.net
现代微机原理与接口技术
21
CPU响应可屏蔽中断条件:
当前指令执行完毕;
EFLAGS中 IF=1;
INTR信号有效。
中断响应过程,8259向 CPU送中断类型号。
第一个 INTA,CPU封锁总线 (LOCK有效 ),8259A最高优先级请求对应 ISR位置位,对应 IRR复位。
第二个 INTA,总线解锁,ALE无效,8259A将当前中断服务程序对应中断类型号送到数据总线上。
ISR的复位在自动结束 /非自动结束时不一致。
DMA传送方式比中断方式速度快 (响应与传送 )。
回 ICW3
http://qsyang.yeah.net
现代微机原理与接口技术
22
级联方式结构:
级联 3级联 1 级联 2
http://qsyang.yeah.net
现代微机原理与接口技术
23
3.8259A工作方式中断请求方式:
边沿触发方式,正跳变向 8259A请求中断。
电平触发方式,高电平向 8259A请求中断,响应中断后要及时清除高电平。
查询中断方式,外设向 8259A请求中断,但
8259A不向 CPU发中断请求信号
INT。而是将请求状态保存等待
CPU来查询。
PC机初始化为边沿触发
http://qsyang.yeah.net
现代微机原理与接口技术
24
连接总线与级联方式,
非缓冲方式,小系统中,8259A数据线直接连系统数据总线,不需要总线缓冲器,此时 SP/EN
表示级联时主 /从关系。
主片,SP/EN接高电平;
从片,SP/EN接低电平。
缓冲方式,大系统中,数据总线都具有总线缓冲器,此时 SP/EN表示数据传送方向,级联时主 /从关系通过软件设定 ICW4来决定。
PC机初始化为非缓冲方式
http://qsyang.yeah.net
现代微机原理与接口技术
25
屏蔽方式:
缺省特性,自动屏蔽低于自己优先级的 IR。
正常屏蔽,IMR中相应位置位;
特定屏蔽,开放比自己优先级低的 IR。
优先级管理方式:
缺省特性,IR0~IR7的优先级为一循环队列。
固定优先权,从 IR0~IR7降序;
轮转优先权:
自动轮转,刚被服务的 IR的优先级降至最低;
指定轮转,指定的 IR的优先级降至最低。
PC机初始化为缺省屏蔽特性,固定优先权
http://qsyang.yeah.net
现代微机原理与接口技术
26
嵌套方式:
全嵌套,禁止同优先级和低优先级请求发生;
特殊全嵌套,禁止低优先级请求发生。
应用,级联时主片特殊全嵌套,从片全嵌套。
结束方式( ISR复位方式):
自动,中断响应后 ISR中最高优先级位自动复位;
非自动,中断服务程序返回前,需要处理程序发出对 ISR中相应位复位的中断结束命令;
不指定方式,ISR中最高优先级位复位;
指定方式,命令中指定的 ISR中相应位复位。
PC机初始化为全嵌套,非自动结束方式级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
27
4.8259A的操作功能及命令
I/O端口地址,只提供二个端口 (使用 A0区别 );
命令,初始化 --ICW1~ICW4,
操 作 --OCW1~OCW3。
状态,IRR,ISR,IMR、查询字。
I/O端口操作冲突时解决方法:
信息字节中有空闲位时,特征位方法;
信息字节中无空闲位时,时序方法。
http://qsyang.yeah.net
现代微机原理与接口技术
28
PIC1 PIC2 操作 内容 特征位 时序
D4D3D2
20H 0A0H 写 ICW1 1×× 无
OCW2 00×
OCW3 01×
21H 0A1H 写 ICW2~ICW4 无 ICW2→ICW4
OCW1 初始化后
20H 0A0H 读 IRR,ISR
查询字无 OCW3决定
21H 0A1H 读 IMR 无 无
8259A命令关系表(地址以 PC机中为例):
注,ICWx只有在初始化过程中才会出现。
http://qsyang.yeah.net
现代微机原理与接口技术
29
(1)初始化命令 ICW1
特征位,D4=1;
初始化命令 ICW4主要设定嵌套、缓冲、结束方式,
缺省值为全嵌套、非缓冲、非自动结束方式 。
当 SNGL=0,需要初始化命令 ICW3来设置级联项。
http://qsyang.yeah.net
现代微机原理与接口技术
30
(2)初始化命令 ICW2
时序,ICW1→ ICW2→[ICW3]→[ICW4] 。
IRi的中断类型号 = ICW2的高 5位 +i
例,如果 ICW2为 08H,则
IR3的中断类型号(中断向量)为 08H+03H=0BH。
http://qsyang.yeah.net
现代微机原理与接口技术
31
(3)初始化命令 ICW3
级联方式结构设置:
主片,S7~S0分别对应相应的 IR号的引脚,
为 1的位对应的引脚接有从片;
从片,ID2~ID1的编号是该从片接到主片的
IR引脚的 IR号。
需要分别对主片和从片进行设置。
级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
32
主 片,MOV AL,14H
OUT 21H,AL
从片 1,MOV AL,04H
OUT 0A1H,AL
从片 2,MOV AL,02H
OUT 0C1H,AL
级联方式中断请求及响应过程:
主片请求:与非级联一致。
从片请求:与非级联一致,但其 INT送到主片,服从主片的请求规则。
从片响应:通过 CAS线译码,选中时在收到第二个
INTA后,返回中断类型号。
非级联响应主片响应:收到第一个 INTA后,对从片的 IR请求,
在第一个 INTA下降沿 从 CAS线送出该 IR编码;否则,
在第二个 INTA返回中断类型号。
级联结构
http://qsyang.yeah.net
现代微机原理与接口技术
33
(4)初始化命令 ICW4
D0,用于 8位 (0)/16位 (1)微机;
D1,非中断自动结束 (0)/自动结束 (1)方式;
D2,缓冲方式 (D3=1)时的主从片级联位置设置,
从片 (0)/主片 (1) ;
D3,非缓冲 (0)/缓冲 (1)方式;
D4,全嵌套 (0)/特殊全嵌套 (1)方式。
从片非自动结束时,主、从片均需发 EOI命令。
http://qsyang.yeah.net
现代微机原理与接口技术
34
(5)操作命令 OCW1
正常屏蔽:
特征位,无,时序,无。
实际上改变了中断优先级(屏蔽掉高优先级的中断请求)。
对 IMR的读取在 21H(主),0A1H(从)端口做读操作。
特殊屏蔽:
通过 OCW3设置。
http://qsyang.yeah.net
现代微机原理与接口技术
35
(6)操作命令 OCW2
特征位,D4D3=00;
功能,结束方式和优先权轮转管理;
结束方式管理:
D6D5=X0,自动结束,硬件自动清除 ISR的相应位;
D6D5=01,非自动结束 [命令不指定清 ISR的哪一位 ];
D6D5=11,非自动结束 [命令指定清 ISR的哪一位 ]。
优先权管理:
D7=0,优先权固定; D7=1,优先权轮转。
http://qsyang.yeah.net
现代微机原理与接口技术
36
R SL EOI 0 0 L2 L1 L0 功能
0 0 0 0 0 0 0 0 自动 EOI,优先权固定命令
0 0 1 0 0 0 0 0 非自动 EOI[不指定 ],优先权固定命令
0 1 1 0 0 L2 L1 L0 非自动 EOI[指定 ],优先权固定命令
1 0 0 0 0 0 0 0 自动 EOI,优先权自动轮转命令
1 0 1 0 0 0 0 0 非自动 EOI[不指定 ],优先权自动轮转命令
1 1 1 0 0 L2 L1 L0 非自动 EOI[指定 ],优先权指定轮转命令
1 1 0 0 0 L2 L1 L0 自动 EOI,优先权指定轮转命令例,MOV AL,20H
OUT 20H,AL的含义?
http://qsyang.yeah.net
现代微机原理与接口技术
37
(7)操作命令 OCW3
P RR RIS 功能 应用
0 1 0 读取 IRR内容 MOV AL,0AHOUT 20H,AL
IN AL,20H
0 1 1 读取 ISR内容 MOV AL,0BHOUT 20H,AL
IN AL,20H
0 0 * 不读取任何寄存器内容
1 * * 读取查询字信息 MOV AL,0CHOUT 20H,AL
IN AL,20H
特征位,D4D3=01;
http://qsyang.yeah.net
现代微机原理与接口技术
38
查询字格式:
I=0,无中断请求;
I=1,有中断请求。
W2~W0,正在申请中断的若干中断源中优先级最高的中断源的编码。
http://qsyang.yeah.net
现代微机原理与接口技术
39
特定屏蔽管理:
ESMM SMM 功能
0 * 该操作对特殊屏蔽无效
1 0 取消特定屏蔽
1 1 设置特定屏蔽设置方法:
用 OCW1屏蔽部分 IR[含自己 ],
用 OCW3置 SMM即可。
取消方法:
用 OCW3取消特定屏蔽,
用 OCW1取消被屏蔽的 IR。
http://qsyang.yeah.net
现代微机原理与接口技术
40
1.初始化编程步骤
5.2.3 8259A初始化编程 out 20h(a0h),al
out 21h(a1h),al
out 21h(a1h),al
out 21h(a1h),al
http://qsyang.yeah.net
现代微机原理与接口技术
41
2.初始化编程
不同 8259A的 I/O端口地址不同;
8259A级联时,每个 8259A均必须有完整的初始化过程 [端口地址和部分参数不同而已 ];
全嵌套方式时,初始 IR优先级 IR0最高。
注意点:
http://qsyang.yeah.net
现代微机原理与接口技术
42
例:
INTM00 EQU 020H ;8259A端口 0
INTM01 EQU 021H ;8259A端口 1
……
MOV AL,00010011B ;ICW1:边沿触发,要 ICW4;;单片方式,不要 ICW3。
OUT INTM00,AL
JMP SHORT $+2 ;I/O端口延时
MOV AL,00001000B ;ICW2:设置中断向量,起始的;中断向量为 08H。
OUT INTM01,AL
JMP SHORT $+2
MOV AL,00000001B ;ICW4:非缓冲,全嵌套,非自;动中断结束 (EOI)。
OUT INTM01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
43
思考题:
MOV AL,12H
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,02H
OUT 21H,AL
MOV AL,13H
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,02H
OUT 21H,AL
问:以上左右两段对 8259的访问程序中,最后一句分别是发的什么命令?
http://qsyang.yeah.net
现代微机原理与接口技术
44
5.2.4 微机中 8259A应用
Y0
Y7
A
B
C
G2B
G2A
G1
15
14
13
12
11
10
9
7
1
2
3
4
5
6
74LS138
A5
A6
A7
A8
A9
AEN
中断控制器 8259A的端口地址为 20H,21H
1.PC机系统板上 8259A的连接
8259A
CS
DB[7..0]
IR[7..0]
INTA
A0 A0
INT
INTA
INTR
RD
WR
IOW
IOR 接 8288
接 CPU
接中断源接数据线接地址线
http://qsyang.yeah.net
现代微机原理与接口技术
45
2.现代微机中 82801BA中 8259A级联注意:
主、从区分;
IRQ优先级;
请求与响应。
http://qsyang.yeah.net
现代微机原理与接口技术
46;对主片 8259A的初始化
INTM00 EQU 020H ;主 8259A端口 0
INTM01 EQU 021H ;主 8259A端口 1
……
MOVAL,00010001B ;ICW1:边沿触发,要 ICW4;级联方式,要 ICW3。
OUT INTM00,AL
JMP SHORT $+2 ;I/O端口延时
MOVAL,00001000B ;ICW2:设置主片的中断向量,起始的中断向量为 08H
OUT INTM01,AL
JMP SHORT $+2
MOVAL,00000100B ;ICW3:表示从 8259A的 INT输出是连接到主片的 IR2。
OUT INTM01,AL
JMP SHORT $+2
MOVAL,00010001B ;ICW4:非总线缓冲,特殊全嵌套,非自动 EOI
OUT INTM01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
47;对从片 8259A的初始化
INTS00 EQU 0A0H ;从 8259A端口 0
INTS01 EQU 0A1H ;从 8259A端口 1
……
MOVAL,00010001B ;ICW1边沿触发,要 ICW4;级联方式,要 ICW3。
OUT INTS00,AL
JMP SHORT $+2
MOVAL,01110000B ;ICW2:设置从片的中断向量,起始的中断向量为 70H
OUT INTS01,AL
JMP SHORT $+2
MOVAL,00000010B ;ICW3:设置从片的识别标志,指定对应主片的 IR2。
OUT INTS01,AL
JMP SHORT $+2
MOVAL,00000001B ;ICW4:非总线缓冲,全嵌套,非自动中断结束 。
OUT INTS01,AL
JMP SHORT $+2
……
http://qsyang.yeah.net
现代微机原理与接口技术
48
3.现代微机中断请求线连接
8259 8259输入 典型的中断源 被连接的引脚 /功能主片 0 内部 内部时钟 /计数器 0的输出
1 键盘 通过 SERIRQ来的 IRQ1
2 内部 从控制器的级联引脚
3 串行端口 2 通过 SERIRQ来的 IRQ3
4 串行端口 1 通过 SERIRQ来的 IRQ4
5 并行端口 /普通 通过 SERIRQ来的 IRQ5
6 软磁盘 通过 SERIRQ来的 IRQ6
7 并行端口 /普通 通过 SERIRQ来的 IRQ7
返回下页
http://qsyang.yeah.net
现代微机原理与接口技术
49
8259 8259输入 典型的中断源 被连接的引脚 /功能从片 0 内部实时时钟 内部 RTC
1 普通 通过 SERIRQ来的 IRQ9
2 普通 通过 SERIRQ来的 IRQ10
3 普通 通过 SERIRQ来的 IRQ11
4 PS/2鼠标 通过 SERIRQ来的 IRQ12
5 内部 基于处理器 FERR#的状态机输出
6 基本 IDE电缆 从输入信号来或通过 SERIRQ来的
IRQ14
7 第二 IDE电缆 从输入信号来或通过 SERIRQ来的
IRQ15
SIO
LPC47B27X
…IRQx
82801BASERIRQ CPU
INTR
IRQ14,15 返回第 53页转上页
http://qsyang.yeah.net
现代微机原理与接口技术
50
4.现代微机中断控制
82801BA
82815EP
PII/III
CPU
PCI INTA
INTA
中断类型号
CP
U
总线
INTR主 8259A从 8259A
IRQ
内部逻辑两个 INTA#
http://qsyang.yeah.net
现代微机原理与接口技术
51
在上面的过程中有几点注意:
一个或多个 IRQ到来的时候,置中断请求寄存器 IRR
的相应位 。如果中断没有被屏蔽,才可以发 INTR。
82801BA内部产生两个周期 INTA#后,第一个 INTA#
脉冲,有最高优先级的 ISR的相应位被置上,而 IRR
的相应位被复位。 第一个脉冲的下降沿,主中断控制器利用内部 3根专用线 CAS向从中断控制器发送从识别码。 第二个 INTA#脉冲后,主或从识别码选中的从可编程中断控制器返回中断向量。
结束中断响应周期时,如果在自动中断结束( AEOI
)模式下,则中断服务寄存器( ISR)的相应位在 第二个 INTA#脉冲的末尾 被复位,否则 ISR相应位保持置位直到中断处理程序末尾发出 EOI命令。
http://qsyang.yeah.net
现代微机原理与接口技术
52
5.3 实模式下中断编程
5.3.1 中断编程注意点
1.使用正确的中断号
2.中断服务程序入口的正确设置
3.避免中断程序中 DOS重入
4.中断程序执行时间的正确估计
5.中断的打开与关闭
6.中断结束处理及返回
http://qsyang.yeah.net
现代微机原理与接口技术
53
5.3.2 中断处理程序举例……
OLD0C DD?
……
CODE SEGMENT
……
MOV AX,350CH ; 保存原来的 0CH中断向量
INT 21H
MOV WORD PTR OLD0C,BX
MOV WORD PTR OLD0C+2,ES
MOV AX,CODE ; 写入新的 0CH中断向量
MOV DS,AX
MOV DX,OFFSET SERVICE
MOV AX,250CH
INT 21H
…… ; 其它程序段; 中断处理子程序
http://qsyang.yeah.net
现代微机原理与接口技术
54; 中断处理子程序
SERVICE PROC
PUSHA ; 保护现场
PUSH DS
STI ; 打开中断
……; 串口数据处理程序
……
CLI ; 关闭中断
MOV AL,20H
OUT 20H,AL ; 发中断结束命令
POP DS ; 恢复现场
POPA
IRET
SERVICE ENDP
http://qsyang.yeah.net
现代微机原理与接口技术
55
5.4 PCI中断
5.4.1 PCI中断请求
PCI中断线,INTA#,INTB#,INTC#,INTD#。
PCI中断源,PIRQA#~PIRQD#。
PCI中断源连接,通过映射到 ISA中断( 3~7,9~12,
14~15)来实现。
转第 47页特点:
当 PCI中断被映射到一个 ISA的 IRQ后,该 IRQ不可再被 ISA设备 (通过 SERIRQ的中断 )使用。
PCI中断可与低电平有效的非 ISA中断共享同一 IRQ。
http://qsyang.yeah.net
现代微机原理与接口技术
56
实现:
设备 31的 0号功能的 60H~63H,68H~6BH的 PIRQ路由控制寄存器实现 PIRQA#~PIRQH#与 IRQ的映射关系。
PIRQ#路由控制寄存器 [8bit]存放的是 IRQ编码。
PCI中断请求:
PCI中断请求必须为电平触发方式。
不同 PIRQ#的优先级由 IRQ决定。
同一 PIRQ#不同设备 INT*的优先级由安装次序决定。
多个 PIRQ#信号线能连在同一个 IRQ上。
PIRQA#
PIRQB#
PIRQC#
PIRQD#
3
5
7
3
60H~63H
8259A
IR0
IR3
IR5
IR7
http://qsyang.yeah.net
现代微机原理与接口技术
57
5.4.2 PCI中断响应
PCI中断响应为单周期响应。
HOST-PCI桥自动将双中断响应周期转换成单中断响应周期。
其他中断响应过程与 8259A同,中断类型号通过
HOST-PCI桥再返回给处理器。
中断响应周期中可插入等待周期。
中断服务程序入口地址由中断描述符表管理。
http://qsyang.yeah.net
现代微机原理与接口技术
58
图 5.14 PCI中断响应周期
CLK
FRAME#
1 2 3 4 5
AD
C/BE#
IRDY#
TRDY#
无效 向量
0000 BE#s( 1110)
DEVSEL #
http://qsyang.yeah.net
现代微机原理与接口技术
59
5.4.3 PCI中断共享
PCI中断请求信号为漏极开路的。
即:中断向量表中中断向量为同一 PIRQ#中最后安装的设备的中断服务程序入口地址。
同一 PIRQ#不同设备的优先级最后安装的最高。
PCI中断的状态位通过中断服务程序读取,并处理。
同一 PIRQ#中断服务实现方法:
采用链表式处理方法。
方法,PNP配置时将同一 PIRQ#的原中断向量存放到其设备驱动的特定寄存器后才替换为新的中断向量。
中断向量
(描述符)
中断处理程序设备 2
中断处理程序设备 1
^
PIRQA#
http://qsyang.yeah.net
现代微机原理与接口技术
60
5.5 APIC(自学)
5.5.1 APIC子系统组成
1.组成处理器核心
Local APIC
模块处理器核心
Local APIC模块
I/O APIC 模块
INTIN 23 INTIN 0
系统中断请求
APIC
时钟
PICD0
PICD1
PICCLK
LINT0/ INTR
LINT1/ NMI
处理器 0 处理器 1
LINT0/ INTR
LINT1/ NMI
返回下页
Local APIC,I/O APIC和 APIC总线。
http://qsyang.yeah.net
现代微机原理与接口技术
61
Local APIC:
包含了 8259A和 8254的功能。
转上页响应的中断:
I/O APIC送来的 系统中断请求 ;
经 APIC总线送来的 处理器间中断请求 ( IPI);
本地的中断请求 (定时、错误、计数、连线 )。
I/O APIC:
多达 24个中断;
中断优先级与中断号独立;
不需要中断响应周期。
可选择某个或一组处理器中的一个为 目标处理器 。
http://qsyang.yeah.net
现代微机原理与接口技术
62
APIC总线:
组成,APICD0,APICD1,APICCLK。
类型,串行同步总线。
串行时序,不同时钟先高位,后低位;同一时钟 D1
高位,D0低位。
内容,EOI命令和短消息。
应用,连接的每个模块均有自己的 ID(固定 );
每个模块均有自己的 仲裁 ID(可变,初值来自模块 ID)。
http://qsyang.yeah.net
现代微机原理与接口技术
63
2.APIC中断类型系统中断:
经 I/O APIC模块引脚送入的中断请求。
交中断请求指定的目标处理器处理。
本地中断:
定时、计数、错误,INTR及 NMI。
只能由本地处理器处理。
处理器间中断:
电平撤消初始化、初始化、启动、远程读,SMI、
NMI等。
交目标处理器处理。
http://qsyang.yeah.net
现代微机原理与接口技术
64
5.5.2 I/O APIC的寄存器
1.直接访问寄存器
INDR,[R/W]存放需访问的间接寄存器编号。
DATR,[R/W]间接访问寄存器访问结果。
IRQPAR,[W]存放置位方式产生的中断向量号。
EOIR,[W]存放正在服务 (将结束 )的中断向量号。
2.间接访问寄存器
IDR,[R/W32B]存放模块自己的固定的 ID。
VERR,[R32B]存放有无 IRQ声明和重定向寄存器数。
ARBIDR,[R32B]存放模块的仲裁 ID。
BOOT_CONFIGR,[R/W32B]存放中断传递方式。
http://qsyang.yeah.net
现代微机原理与接口技术
65
RDR,[R/W64B]索引编号 10H~3FH,
每个 RDR占两个号。
VectorDMDS DtMRIRRTMM目标 APICID L
中断向量传递模式
000— 固定式
001— 最低优先权式
100— NMI
111--ExtINT
目标模式
0— 物理方式
1— 逻辑方式递交状态
0— 空闲
1— 正在递交目标 APICID
逻辑模式 --8位物理模式 --低 4位屏蔽位
0— 允许 1— 屏蔽中断请求
0— 无 1— 中断未决引脚极性
0— 高电平激活
1— 低电平激活触发模式
0— 边沿 1— 电平
http://qsyang.yeah.net
现代微机原理与接口技术
66
5.5.3 APIC工作过程
1.中断请求产生并递交收到引脚信号有效改变时,置位 RDR的 RIRR位,争取总线使用权 后,向 APIC总线发送 短消息 。
目标处理器 (目标模式及传递模式 )已在 RDR中设定。
边沿 触发方式 时,消息传送后将 RDR的 RIRR位复位。
2.处理器接受中断请求产生并服务目标处理器 (可能多个 )的 Local APIC收到请求后,根据传递模式,确定本处理器是否命中 。
命中的目标处理器做相应中断处理,当处理器核心执行的代码优先级低于中断请求优先级时处理中断。
http://qsyang.yeah.net
现代微机原理与接口技术
67
3.中断结束阶段中断为电平触发方式时,发布 EOI命令通知 I/O APIC
做结束处理。
当前处理器的总线使用权降为最低。
http://qsyang.yeah.net
现代微机原理与接口技术
68
5.5.4 APIC总线仲裁结构,分布式仲裁。
空闲状态,D1D0=11(某消息结束后 )。
仲裁周期,5个时钟周期。
CLK D1 D0 解释
1 EOI 0 D1=1:常规,D1=0:EOI
2 NOT (ARBIDR[27]) 1 仲裁 ID,如果 82801BA
检测到的值和自己发送的值不一样就失去仲裁资格 。
3 NOT (ARBIDR[26]) 1
4 NOT (ARBIDR[25]) 1
5 NOT (ARBIDR[24]) 1
EOI传输优先级高于正常传输。
仲裁算法,轮转优先级算法。
仲裁得胜者置为 0,其余模块一律加 1。
http://qsyang.yeah.net
现代微机原理与接口技术
69
5.6 串行中断
5.6.1 串行中断结构
SIO
LPC47B27X
…IRQx 82801BASERIRQ CPUINTR
IRQ14,15PIRQx
PIRQx …
82801BA
串行中断驱动部件
SERIRQ 串行中断分离部件
2个 8259
部件
…
INTR
IRQ14,15
http://qsyang.yeah.net
现代微机原理与接口技术
70
SERIRQ线采用同步单线传输结构。
遵循 PCI信号使用的三态协议。
S-取样阶段 信号为低电平。
R-恢复阶段 信号为高电平。
T-翻转状态 信号被释放
SERIRQ支持 IRQ0,1,3~15,PIRQA#~PIRQD#,
SMI#和 IOCHK#。不支持 IRQ0,8,13中断。
SERIRQ上信息分帧传输。
http://qsyang.yeah.net
现代微机原理与接口技术
71
5.6.2 帧结构
1.开始帧操作模式:
连续的( 82801BA单独产生开始帧)
静态的(一个串行 IRQ设备来启动开始帧)
长度,4,6或 8个时钟宽度(设备 31的 0号功能配置空间的 64H处串行 IRQ控制寄存器位 1
和位 0决定 ).
http://qsyang.yeah.net
现代微机原理与接口技术
72
2.数据帧长度,21个时钟宽度。
3.停止帧长度,2或 3个时钟宽度。
含义,2— SERIRQ设备触发; 3— 82801BA触发。
驱动,需中断设备在自己的数据帧中将 SERIRQ驱动为低电平。所谓自己的数据帧是指在 21个时钟中数据帧号和本设备的 IRQ号码相等那一数据帧。外设要在
SERIRQ的上升沿开始计算帧。
http://qsyang.yeah.net
现代微机原理与接口技术
73
补充作业:
1,某系统需要最多 20个非共享的中断请求输入端,问下列 8259级联拓扑图哪个是正确的,不正确的请说明原因。
2,某系统使用一片 8259A作为中断控制器,希望该控制器采用电平触发,起始中断类型号是 16,总线缓冲方式
,全嵌套,正常 EOI。假如该芯片端口号是 50H和 51H
,请编写该 8259A的初始化程序。
3,用 8088汇编语言编写一个完整的程序处理 PC机的外部
IRQ5中断(含修改中断向量部分)。每当该中断到来将变量 come+ 1,当 come=100时恢复原中断向量。
AA
B
1 2
A
B C
B
C 3