第 5 章 中断技术

83
1 微微微微微微 5 微 微微微微

Upload: roy

Post on 18-Mar-2016

80 views

Category:

Documents


6 download

DESCRIPTION

第 5 章 中断技术. 5.1 中断基本概念. 中断结束. 中断请求. 中断响应. 中断服务. 中断处理. 5.1.1 中断基本概念. 定义: CPU 暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执行,这个过程就是中断。. 中断过程:. 中断处理的隐操作: 程序状态及程序断点地址的进栈及出栈。. 中断系统其他功能:. 支持多中断源和多种中断源。. 支持中断屏蔽处理。. 支持中断嵌套处理。. 支持中断优先级修改。. 支持中断结束方式选择。. 5.1.2 中断类型. SIO LPC47B27X. SERIRQ. - PowerPoint PPT Presentation

TRANSCRIPT

1

微计算机系统

第 5 章 中断技术

2

微计算机系统5.1 中断基本概念5.1.1 5.1.1 中断基本概念中断基本概念定义:定义: CPU 暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执行,这个过程就是中断。中断过程:中断过程:

中断处理的隐操作:中断处理的隐操作:程序状态及程序断点地址的进栈及出栈。

中断请求 中断响应 中断服务 中断结束中断处理

3

微计算机系统 中断系统其他功能:中断系统其他功能: 支持多中断源和多种中断源。 支持中断屏蔽处理。 支持中断嵌套处理。 支持中断优先级修改。 支持中断结束方式选择。

4

微计算机系统5.1.2 5.1.2 中断类型中断类型1.1. 外部硬件外部硬件 (( 如键盘、鼠标,串口,并口打印机等)中如键盘、鼠标,串口,并口打印机等)中断断 中断请求:中断请求:多个中断请求的排队和判优由中断控制器完成,产生的有无中断请求的信号送到 CPU 的 INTR 引脚。 中断类型号:中断类型号:通过数据总线送到 CPU 中。

EFLAGS 寄存器的 IF 位影响 CPU 对中断请求的响应。处理器在当前指令执行结束的时候当前指令执行结束的时候启动中断识别 INTA总线周期。

属性:属性:硬件、可屏蔽、向量。

SIO LPC47B27X

…IRQx 82801BASERIRQ

82815EP

PII/III CPUINTR

中断类型号

PIRQx

5

微计算机系统2.2. 不可屏蔽中断不可屏蔽中断 中断请求:中断请求:中断请求的信号送到 CPU 的 NMI 引脚。 中断类型号:中断类型号:固定为 2 。 CPU 不需要进行中断识别,直接处理中断。

属性:属性:硬件、不可屏蔽、向量。

NMI 由 0 跳变到 1 以后要维持至少 4 个连续的处理器时钟周期的高电平才被识别。 NMI 由 1 跳变到 0 以后要维持至少 4 个连续的处理器时钟周期的低电平,新的 NMI 中断才能被识别。

6

微计算机系统3.3. 软件中断软件中断 属性:属性:软件、不可屏蔽、向量。 中断请求:中断请求:指令执行中或程序调用产生。 中断类型号:中断类型号: CPU 规定或指令给出。 CPUCPU 专用中断:专用中断:除 0 错 (0) 、单步 (1) 、断点中断 (3)、溢出 (O(4)) 、边界越界中断 (5) 。 BIOSBIOS 中断:中断: I/O 设备控制、实用服务、特殊中断、专用参数中断。 DOSDOS 中断:中断:公开 / 未公开、可调用、系统功能。 自由中断:自由中断:未定义 (20H~3FH 中未使用的中断 ) 。 CPU 不需要进行中断识别,直接处理中断。

7

微计算机系统常用的软件中断常用的软件中断中断号 功 能 中断号 功 能

10H10H 视频服务中断视频服务中断 13H13H 软硬盘控制中断软硬盘控制中断14H14H 串行口中断串行口中断 15H15H 各种各种 IOIO 设备中断设备中断16H16H 键盘中断键盘中断 17H17H 并行打印口中断并行打印口中断20H 返回 DOS 21H21H DOSDOS 功能调用功能调用23H Ctrl+Break 处理 24H DOS 严重错误33H 鼠标中断 2FH

31HDOS 保护方式接口

BIOS 、 DOS 、自由中断的汇编调用方式:INT n INT n ; ; nn 为中断向量号,如 为中断向量号,如 INT 10HINT 10H 、、 INT 21INT 21HH

8

微计算机系统常用的常用的 DOSDOS 系统功能调用系统功能调用功能号 功能 入口参数 出口参数 01H 01H 键盘输入 键盘输入 (AH)=1 (AL)=(AH)=1 (AL)= 输入字输入字符符02H 显示器输出 (AH)=2 无 (DL)= 欲输出字符 09H 09H 显示字符串 显示字符串 (AH)=9 (AH)=9 无无 (DS:DX)=(DS:DX)= 字符串首址字符串首址 字符串以‘字符串以‘ $’$’ 结束结束0AH 0AH 输入字符串 输入字符串 (AH)= 0AH (DS:DX)(AH)= 0AH (DS:DX) 所指所指 (DS:DX)=(DS:DX)= 输入缓 缓冲区中为输入缓 缓冲区中为 冲区首址 输入的字符串冲区首址 输入的字符串4CH 返回调用 (AH)=4CH 无 进程

9

微计算机系统软中断调用的基本方法如下: 11 、子功能号送、子功能号送 AHAH 寄存器; 寄存器; 22 、按要求设置所有入口参数; 、按要求设置所有入口参数; 33 、发送 、发送 INT n INT n 软中断指令。软中断指令。

BIOS 中断调用示例设置屏幕显示方式为 640×480 16 色图形方式 MOV AH, 0 ; 子功能号 MOV AL, 12H ; 调用参数 INT 10HINT 10H ; BIOS 的视频服务中断

10

微计算机系统BIOS 中断调用示例 欲打印字符‘ S’ ,相应的系统调用如下: MOV AH , 1 ;初始化打印机子功能号 MOV DX , 0 ;打印机号 INT 17HINT 17H ;初始化打印机 MOV AH, 0 ;打印机子功能号 MOV DX, 0 ;打印机号 MOV AL, 'S' ;欲打印的字符 INT 17H INT 17H ;打印‘ S’

11

微计算机系统单个字符输入示例 读入一个字符,若是‘ Y’ ,则 Z<--X+Y;否则 Z<--X-Y

MOV AH, 01H MOV AH, 01H ;输入字符;输入字符 INT 21HINT 21H ;; DOSDOS 功能调用功能调用 CMP AL, ‘Y’ ;比较 JZ ADDT MOV BX, X SUB BX, Y JMP NEXT ADDT: MOV BX, X ADD BX, Y NEXT: MOV Z, BX

12

微计算机系统

字符串输出示例 MOV AX, SEG MSG MOV DS, AX LEA DX, MSGLEA DX, MSG MOV AH,09HMOV AH,09H INT 21HINT 21H

单个字符输出示例 MSG DB ‘How are you!’,’$’ LEN EQU $-MSG$-MSG ; $ 表示本语句的有效地址 MOV CX, LEN ;序列长度 MOV SI, 0 MOV AH, 02H MOV AH, 02H ;输出一个字符;输出一个字符LP: MOV DL, MSG[SI] MOV DL, MSG[SI] INT 21HINT 21H INC SI ;修改指针 LOOP LP

如何输出的更简单?如何输出的更简单?

13

微计算机系统字符串输入示例 该子功能调用前,在数据段中必须定义一个缓冲区该子功能调用前,在数据段中必须定义一个缓冲区: N EQU 20 MAXLEN DB N ;缓冲区最大长度 ACTLEN DB ? ;缓冲区实际字符个数 STRING DB N DUP(?) ; N 个字符空间 …… MOV AH, 0AHMOV AH, 0AH LEA DX, MAXLENLEA DX, MAXLEN INT 21HINT 21H 说明: 1 )缓冲区可接受的字符个数为 1~255 2 )缓冲区的第 3 个字节开始存放输入的字符 , 前 2个字节位置分别放缓冲区长度和字符串实际字符数

14

微计算机系统4.4.内部中断和异常内部中断和异常 属性:属性:软件、不可屏蔽、向量。 中断请求:中断请求:指令执行中产生。 中断类型号:中断类型号: CPU 规定。 失效:失效:错误在指令完成前错误在指令完成前,错误指令的 CS : EIP压栈。该指令会重做。 陷阱:陷阱:错误在指令完成后错误在指令完成后,错误指令下一指令的 CS: EIP压栈。 中止:中止:不保存,重启机器。 CPU 不需要进行中断识别,直接处理中断。

15

微计算机系统5.1.3 5.1.3 中断识别及其优先级中断识别及其优先级1.1. 中断识别中断识别 只有外部硬件中断需要进行识别,其余不需要识别。 中断识别由中断控制器完成。2.2. 中断优先级中断优先级 原则:原则:按机器故障、 DMA 、外围硬件、软件递减。 结果:结果: CPU 专用 >DMA> 外围硬件 >BIOS>DOS> 自由。 即基本按中断向量表排序。 外围硬件一般可由用户修改其优先权。

16

微计算机系统5.1.4 5.1.4 中断响应中断响应在当前指令结束后,可屏蔽中断根据 EFLAGS 寄存器IF 位决定是否响应;其他中断给予响应。中断响应的步骤如下:1.1. 保护断点保护断点通过堆栈及相关硬件实现 EFLAGS 、 CS 、 EIP 的保护。并清除 IF 和 TF 。压栈的顺序是 EFLAGS 、 CS 、 EIP2.2.取得中断类型号取得中断类型号对外部硬件中断通过中断响应周期取得中断类型号。非外部硬件中断直接取得入口地址,无须第非外部硬件中断直接取得入口地址,无须第 22 步步

17

微计算机系统

4.4. 转入中断处理程序转入中断处理程序

5.5. 返回断点返回断点恢复断点( EIP 、 CS 、 EFLAG顺序出栈)继续执行主程序。

3.3.取得中断服务程序入口地址取得中断服务程序入口地址对向量中断,通过中断类型号查中断向量表或中断描述符表取得。从中断处理程序入口地址转到中断处理程序。执行对中断的处理。

18

微计算机系统5.1.5 PC5.1.5 PC 机中断向量表机中断向量表 (IVT(IVT ,用于实地址模式,用于实地址模式))

2.2. 中断向量表中断向量表位于内存地址 0000 : 0000 开始的 1KB范围内。按中断类型号顺序存放中断向量的存储区域。3.3. 中断向量指针中断向量指针指向存放中断向量地址第一字节的指针。中断向量指针中断向量指针 == 中断类型号中断类型号 ×4×4 。。软件中断中自由中断的中断向量需用户自己装入。

1.1. 中断向量中断向量对应中断类型号的中断服务程序入口地址。每个中断向量占 4 字节。

19

微计算机系统

00000 类型 0 的 IP 类型 0 的 CS00004 类型 1 的 IP 类型 1 的 CS

4*N 类型 N 的 IP 类型 N 的 CS

PentiumPentium 的中断向量表在存储区的最低的中断向量表在存储区的最低 1KB1KB 字节中字节中,对应,对应 256256 种中断种中断 ,,每个中断向量占每个中断向量占 44 个字节个字节类型 0 的中断向量类型 1 的中断向量

类型 N 的中断向量

20

微计算机系统5.1.6 5.1.6 中断描述符表中断描述符表 (IDT(IDT ,用于保护模,用于保护模式式 ))1.1. 中断描述符表中断描述符表 (IDT(IDT )) 表项长度:表项长度: 8 字节,每个表项对应一个中断类型号。 表项类型:表项类型:任务门、中断门、陷阱门。

通过特征位 (b40~b44) 区分不同类型。

21

微计算机系统 表的长度:表的长度: 8 字节 ×256=2KB 。 表的位置:表的位置:由中断描述符表寄存器 (IDTR) 指向。2.2. 中断描述符指针中断描述符指针 指向中断描述符表中的中断描述符的指针。 中断描述符指针中断描述符指针 =IDT=IDT 基地址基地址 ++ 中断类型号中断类型号 ×8×8 。。3.3. 中断门中断门 //陷阱门陷阱门 内容:内容:段选择符、属性和偏移量。 中断门与陷阱门区别:中断门与陷阱门区别: 通过中断门处理时 EFLAG 的 IF 被清 0 ,通过陷进门处理 IF 不清 0 。 中断门的优先级比陷阱门高,是面向外部硬件中断的门,后者面向优先级低的中断。

22

微计算机系统 中断服务子程序入口地址取得:中断服务子程序入口地址取得:

……

偏移属性选择符

中断门 /陷阱门IDTR

IDT中断类型号

7 0

×8

边界属性基地址段描述符

CS

GDT/LDT

线性地址

中断服务子程序

代码段段基地址偏移

EIP

CS段描述符缓冲器

中断描述符中断描述符

段描述符段描述符

……

23

微计算机系统

TSS选择符

任务门IDTR

IDT

中断类型号7 0

×8

属性段限基址

TSS描述符TR

GDT

线性地址

TSS

基址

TR描述符缓存器

4.4.任务门任务门 内容:内容: TSS 选择符与属性。 TSSTSS取得:取得:

优点:优点:中断任务和被中断任务完全隔离。缺点:缺点:中断响应过程耗时长。…

……

24

微计算机系统5.2 Intel 8259A5.2.1 8259A5.2.1 8259A 主要任务主要任务 接受外部的中断请求; 管理所有外部的中断请求 ( 排队、判优、屏蔽、嵌套 ); 向 CPU 产生中断请求 INTR 信号及中断类型号; 进行中断结束处理; 接受 CPU命令及返回状态。

25

微计算机系统5.2.2 8259A5.2.2 8259A 引脚及内部结构引脚及内部结构1.8259A1.8259A 引脚引脚

CPUCPU侧:侧: DB0~DB7 ;

外设侧:外设侧: IR0~IR7 ;级联:级联:

CS ; RD 、 WR 、 A0;

SP/EN 、 CAS0~CAS2 。

INT 、 INTA ;

26

微计算机系统2.8259A2.8259A内部结构内部结构

27

微计算机系统 内部逻辑:内部逻辑: IRR 、 IMR 、 PR 、 ISR 及控制电路。 中断请求过程:中断请求过程: IR->INT 。

&INT

ISR 编码

中断请求优先级编码器

中断请求寄存器IRR

IR0

IR7

……

&

&

&

&

&

&

&

&

中断屏蔽寄存器 IMR

D0 D7…

≥1

比较器 B0

B1

B2

A>BA0

A1

A2

接口电路:接口电路: CPU 接口、 I/O 接口。

28

微计算机系统 CPUCPU 响应可屏蔽中断条件:响应可屏蔽中断条件: 当前指令执行完毕; EFLAGS 中 IF=1 ; INTR 信号有效。 中断响应过程:中断响应过程: 8259 向 CPU 送中断类型号。 第一个 INTA , CPU封锁总线 (LOCK 有效 ) , 8259A最高优先级请求对应 ISR 位置位,对应 IRR复位。 第二个 INTA ,总线解锁, ALE 无效, 8259A将当前中断服务程序对应中断类型号送到数据总线上。 ISR 的复位在自动结束 /非自动结束时不一致。 DMADMA传送方式比中断方式速度快传送方式比中断方式速度快 (( 响应与传送响应与传送 )) 。。

回ICW3

29

微计算机系统 级联方式结构:级联方式结构:

级联3

级联 1 级联2

30

微计算机系统3.8259A3.8259A 工作方式工作方式 中断请求方式:中断请求方式:边沿触发方式边沿触发方式:正跳变向 8259A 请求中断。电平触发方式电平触发方式:高电平向 8259A 请求中断,响应中断后要及时清除高电平。查询中断方式查询中断方式:外设向 8259A 请求中断,但 82

59A 不向 CPU 发中断请求信号INT 。而是将请求状态保存等待 CPU 来查询。

PCPC 机初始化为边沿触发机初始化为边沿触发

31

微计算机系统 连接总线与级联方式:连接总线与级联方式: 非缓冲方式:非缓冲方式:小系统中, 8259A 数据线直接连系统数据总线,不需要总线缓冲器,此时 SP/EN 表示级联时主 /从关系。 主片:主片: SP/EN 接高电平; 从片:从片: SP/EN 接低电平。 缓冲方式:缓冲方式:大系统中,数据总线都具有总线缓冲器,此时 SP/EN 表示数据传送方向,级联时主 /从关系通过软件设定 ICW4 来决定。PCPC 机初始化为非缓冲方式机初始化为非缓冲方式

32

微计算机系统 屏蔽方式:屏蔽方式: 缺省特性:自动屏蔽低于自己优先级的缺省特性:自动屏蔽低于自己优先级的 IRIR 。。 正常屏蔽:正常屏蔽: IMR 中相应位置位; 特定屏蔽:特定屏蔽:开放比自己优先级低的 IR 。 优先级管理方式:优先级管理方式: 缺省特性:缺省特性: IRIR00~IR~IR77 的优先级为一循环队列的优先级为一循环队列。。 固定优先权:固定优先权:从 IR0~IR7降序; 轮转优先权:轮转优先权: 自动轮转:自动轮转:刚被服务的 IR 的优先级降至最低; 指定轮转:指定轮转:指定的 IR 的优先级降至最低。PCPC 机初始化为缺省屏蔽特性,固定优先权机初始化为缺省屏蔽特性,固定优先权

33

微计算机系统嵌套方式:嵌套方式: 全嵌套:全嵌套:禁止同优先级和低优先级请求发生; 特殊全嵌套:特殊全嵌套:禁止低优先级请求发生。 应用:应用:级联时主片特殊全嵌套,从片全嵌套。结束方式(结束方式( ISRISR 复位方式):复位方式): 自动:自动:中断响应后 ISR 中最高优先级位自动复位; 非自动:非自动:中断服务程序返回前,需要处理程序发出对 ISR 中相应位复位的中断结束命令; 不指定方式:不指定方式: ISR 中最高优先级位复位; 指定方式:指定方式:命令中指定的 ISR 中相应位复位。PCPC 机初始化为全嵌套,非自动结束方式机初始化为全嵌套,非自动结束方式

级联结构

34

微计算机系统4.8259A4.8259A 的操作功能及命令的操作功能及命令 I/OI/O 端口地址:端口地址:只提供二个端口 ( 使用 A0 区别) ; 命令:命令:初始化 --ICW1~ICW4 , 操 作 --OCW1~OCW3 。 状态:状态: IRR 、 ISR 、 IMR 、查询字。 I/OI/O 端口操作冲突时解决方法:端口操作冲突时解决方法: 信息字节中有空闲位时:信息字节中有空闲位时:特征位方法; 信息字节中无空闲位时:信息字节中无空闲位时:时序方法、读 /写区分法。

35

微计算机系统PIC1 PIC2 操作 内容 特征位 时序

D4D3D2

20H 0A0H 写 ICW1 1×× 无OCW2 00×OCW3 01×

21H 0A1H 写 ICW2~ICW4 无 在初始化期间,ICW1之后 ICW2→ICW4

OCW1 非初始化期间20H 0A0H 读 IRR , ISR

查询字无 OCW3决定

21H 0A1H 读 IMR 无 无

8259A8259A 命令关系表(地址以命令关系表(地址以 PCPC 机中为例):机中为例):

注:注: ICWx只有在初始化过程中才会出现。

36

微计算机系统 (1)(1) 初始化命令初始化命令 ICW1ICW1

特征位:特征位: D4=1 ; 初始化命令 ICW4主要设定嵌套、缓冲、结束方式,缺省值为全嵌套、非缓冲、非自动结束方式缺省值为全嵌套、非缓冲、非自动结束方式。。 当 SNGL=0 ,需要初始化命令 ICW3 来设置级联项。

37

微计算机系统 (2)(2) 初始化命令初始化命令 ICW2ICW2

时序: 时序: ICW1→ ICW2→[ICW3]→[ICW4] 。IRIRii 的中断类型号 的中断类型号 = ICW2= ICW2 的高的高 55 位位 +i+i 例:例:如果 ICW2 为 08H ,则

IR3 的中断类型号(中断向量)为 08H+03H=0BH。思考题:如果一个中断的类型号是思考题:如果一个中断的类型号是 16H16H ,请问该中断,请问该中断接在接在 IRIR几?该几?该 82598259 初始化的初始化的 ICW2ICW2 是多少?是多少?

38

微计算机系统 (3)(3) 初始化命令初始化命令 ICW3ICW3 级联方式结构设置:级联方式结构设置:

主片: S7~S0分别对应相应的 IR 号的引脚,为 1 的位对应的引脚接有从片; 从片: ID2~ID1 的编号是该从片接到主片的IR 引脚的 IR 号。

需要分别对主片和从片进行设置。

级联结构

39

微计算机系统主 片: 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 返回中断类型号。

40

微计算机系统 (4)(4) 初始化命令初始化命令 ICW4ICW4

DD00 ::用于 8 位 (0)/16 位 (1)微机; DD11 ::非中断自动结束 (0)/ 自动结束 (1) 方式; DD22 ::缓冲方式 (D3=1) 时的主从片级联位置设置, 从片 (0)/主片 (1) ; DD33 ::非缓冲 (0)/ 缓冲 (1) 方式; DD44 ::全嵌套 (0)/ 特殊全嵌套 (1) 方式。

从片非自动结束时,主、从片均需发从片非自动结束时,主、从片均需发 EOIEOI 命令。命令。

41

微计算机系统(5)(5) 操作命令操作命令 OCW1OCW1

特征位:特征位:无,时序:时序:无。功能:功能:写中断屏蔽寄存器 IMR实际上改变了中断优先级(屏蔽掉高优先级的中断请求)。对 IMR 的读取在 21H(主)、 0A1H(从)端口做读操作。

42

微计算机系统 (6)(6) 操作命令操作命令 OCW2OCW2

特征位:特征位: D4D3=00 ; 功能:功能:结束方式和优先权轮转管理; 结束方式管理:结束方式管理: D6D5=×0 ,自动结束,硬件自动清除 ISR 的相应位; D6D5=01 ,非自动结束 [命令不指定清 ISR 的哪一位] ; D6D5=11 ,非自动结束 [命令指定清 ISR 的哪一位 ]。 优先权管理:优先权管理: D7=0 ,优先权固定; D7=1 ,优先权轮转。 D6 的含义仍然有效

43

微计算机系统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 的含义?

44

微计算机系统 (7)(7) 操作命令操作命令 OCW3OCW3

P RR RIS 功能 应用 0 1 0 读取 IRR内容 MOV AL, 0AH

OUT 20H , ALIN AL , 20H

0 1 1 读取 ISR内容 MOV AL, 0BHOUT 20H , ALIN AL , 20H

0 0 * 不读取任何寄存器内容 1 * * 读取查询字信息 MOV AL, 0CH

OUT 20H, ALIN AL, 20H

特征位:特征位: D4D3=01 ;

45

微计算机系统

查询字格式:

I=0 ,无中断请求;I=1 ,有中断请求。W2~W0 ,正在申请中断的若干中断源中优先级最高的中断源的编码。

46

微计算机系统 特定屏蔽管理:特定屏蔽管理: ESMM SMM 功能 0 * 该操作对特殊屏蔽无效 1 0 取消特定屏蔽 1 1 设置特定屏蔽设置方法:设置方法: 用 OCW1 屏蔽部分 IR[含自己 ] , 用 OCW3 置 SMM即可。 取消方法:取消方法:

用 OCW3取消特定屏蔽, 用 OCW1取消被屏蔽的 IR 。

47

微计算机系统

1.1. 初始化编程步骤初始化编程步骤5.2.3 8259A5.2.3 8259A 初始化编初始化编程程

out 20h(a0h), al

out 21h(a1h), al

out 21h(a1h), al

out 21h(a1h), al

48

微计算机系统2.2. 初始化编程初始化编程• 不同 8259A 的 I/O端口地址不同;• 8259A 级联时,每个 8259A均必须有完整的初始化过程 [端口地址和部分参数不同而已

] ;• 全嵌套方式时,初始 IR 优先级 IR0最高。

注意点:注意点:

49

微计算机系统 例:例:INTM00 EQU 020H ;8259A端口 0INTM01 EQU 021H ;8259A端口 1

……MOV AL, 00010011B ;ICW1 :边沿触发,要 ICW4 ; ; 单片方式,不要 ICW3 。OUT INTM00, ALJMP SHORT $+2 ;I/O端口延时MOV AL, 00001000B ;ICW2 :设置中断向量,起始的

; 中断向量为 08H 。OUT INTM01, ALJMP SHORT $+2MOV AL, 00000001B ;ICW4 :非缓冲,全嵌套,非自

; 动中断结束 (EOI) 。OUT INTM01, ALJMP SHORT $+2……

50

微计算机系统思考题:MOV AL, 12HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, AL

MOV AL, 13HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, AL

问:以上左右两段对问:以上左右两段对 82598259 的访问程序中,的访问程序中,最后一句分别是发的什么命令?最后一句分别是发的什么命令?

51

微计算机系统5.2.4 5.2.4 微机中微机中 8259A8259A 应用应用Y0

Y7

ABC

G2B

G2A

G1

15141312111097

123

45

6

74LS138

A5

A6

A7

A8

A9

AEN

中断控制器中断控制器 8259A8259A 的端口地址为的端口地址为 20H20H 、、 221H1H

1.PC1.PC 机系统板上机系统板上 8259A8259A 的连接的连接

8259A

CS

DB[7..0]

IR[7..0]

INTA

A0 A0

INT

INTAINTR

RD

WR

IOW

IOR 接接 82888288

接接 CPUCPU

接中断源接中断源

接数据线接数据线接地址线接地址线

52

微计算机系统2.2. 现代微机中现代微机中 82801BA82801BA 中中 8259A8259A 级联级联

注意:注意: 主、从区分; IRQ 优先级; 请求与响应。

53

微计算机系统;; 对主片对主片 8259A8259A 的初始化的初始化INTM00 EQU 020H ;主 8259A端口 0INTM01 EQU 021H ;主 8259A端口 1

……MOVAL, 00010001B ;ICW1 :边沿触发,要 ICW4; 级联方式,要 ICW3 。OUT INTM00, ALJMP SHORT $+2 ;I/O端口延时MOVAL, 00001000B ;ICW2 :设置主片的中断向量,起始的中断向量为 08HOUT INTM01, ALJMP SHORT $+2MOVAL, 00000100B ;ICW3 :表示从 8259A 的 INT 输出是连接到主片的 IR

2 。OUT INTM01, ALJMP SHORT $+2MOVAL, 00010001B ;ICW4 :非总线缓冲,特殊全嵌套,非自动 EOIOUT INTM01, ALJMP SHORT $+2……

54

微计算机系统;; 对从片对从片 8259A8259A 的初始化的初始化INTS00 EQU 0A0H ;从 8259A端口 0INTS01 EQU 0A1H ;从 8259A端口 1

……MOVAL, 00010001B ;ICW1 边沿触发,要 ICW4; 级联方式,要 ICW3 。OUT INTS00, ALJMP SHORT $+2MOVAL, 01110000B ;ICW2 :设置从片的中断向量,起始的中断向量为 70HOUT INTS01, ALJMP SHORT $+2MOVAL, 00000010B ;ICW3 :设置从片的识别标志,指定对应主片的 IR2 。OUT INTS01, ALJMP SHORT $+2MOVAL, 00000001B ;ICW4 :非总线缓冲,全嵌套,非自动中断结束。OUT INTS01, ALJMP SHORT $+2……

55

微计算机系统3.3. 现代微机中断请求线连接现代微机中断请求线连接8259 8259 输入 典型的中断源 被连接的引脚 / 功能 主片 0 内部 内部时钟 / 计数器 0 的输出

1 键盘 通过 SERIRQ 来的 IRQ12 内部 从控制器的级联引脚3 串行端口 2 通过 SERIRQ 来的 IRQ34 串行端口 1 通过 SERIRQ 来的 IRQ45 并行端口 /普通 通过 SERIRQ 来的 IRQ56 软磁盘 通过 SERIRQ 来的 IRQ67 并行端口 /普通 通过 SERIRQ 来的 IRQ7

返回下页

56

微计算机系统8259 8259 输入 典型的中断源 被连接的引脚 / 功能 从片 0 内部实时时钟 内部 RTC

1 普通 通过 SERIRQ 来的 IRQ92 普通 通过 SERIRQ 来的 IRQ103 普通 通过 SERIRQ 来的 IRQ114 PS/2 鼠标 通过 SERIRQ 来的 IRQ125 内部 基于处理器 FERR# 的状态机输出6 基本 IDE 电缆 从输入信号来或通过 SERIRQ 来的 IR

Q147 第二 IDE 电缆 从输入信号来或通过 SERIRQ 来的 IR

Q15

SIO LPC47B27X

…IRQx 82801BASERIRQ

CPUINTR

IRQ14,15 返回第 65 页转上页

57

微计算机系统4.4. 现代微机中断控制现代微机中断控制82801BA

82815EP

PII/III CPU

PCI INTA

INTA

中断类型号

CPU

总线

INTR主8259A

从 8259A

IRQ

内部逻辑两个 INTA#

58

微计算机系统在上面的过程中有几点注意:• 一个或多个 IRQ 到来的时候,置中断请求寄存器 IR

R 的相应位 。如果中断没有被屏蔽,才可以发 INTR。• 82801BA内部产生两个周期 INTA# 后,第一个第一个 INTINT

A#A# 脉冲脉冲,有最高优先级的 ISR 的相应位被置上,而IRR 的相应位被复位。第一个脉冲的下降沿第一个脉冲的下降沿,主中断控制器利用内部 3根专用线 CAS 向从中断控制器发送从识别码。第二个第二个 INTA#INTA# 脉冲后脉冲后,主或从识别码选中的从可编程中断控制器返回中断向量。

• 结束中断响应周期时,如果在自动中断结束( AEOI)模式下,则中断服务寄存器( ISR )的相应位在第第二个二个 INTA#INTA# 脉冲的末尾脉冲的末尾被复位,否则 ISR 相应位保持置位直到中断处理程序末尾发出 EOI命令。

59

微计算机系统5.3 实模式下中断编程5.3.1 5.3.1 中断编程注意点中断编程注意点1.1. 使用正确的中断类型号使用正确的中断类型号 根据中断处理程序要完成的功能,选择好正确的中断类型号,如: COM1 串行通信用 0CH 号中断, Ctrl+Break 键控制中断号是 1BH ,注意定时器中断一般不使用 08H 号,而使用更安全的 1CH 号中断。 如果是自己定义的软中断,注意不要和系统中断类型号相重合。

中断编程包括主程序部分和中断处理程序部分。

60

微计算机系统2.2. 中断服务程序入口地址的正确设置(主程序中完成)中断服务程序入口地址的正确设置(主程序中完成) 有两种设置中断服务程序入口地址 ( 中断向量 ) 的方法:1 )直接写中断向量表 (假设中断向量号是 0CH)CLI ; 关中断MOV AX, 0MOV ES, AX ; ES 指向 0000H段 ( 中断向量表的段 )MOV SI, 0CH*4 ; 一个中断向量 4 个字节MOV AX, OFFSET SERVICE ; 中断入口偏移地址MOV ES:[SI], AXMOV AX, SEG SERVICE ; 中断入口的段地址MOV ES:[SI+2], AXSTI ; 开中断……; 中断处理子程序SERVICE PROC FAR……

2 )使用 DOS 功能调用中断MOV AX, SEG SERVICEMOV DS , AXMOV DX , OFFSET SERVICEMOV AX , 250CHINTINT 21H21H

61

微计算机系统

4.4.避免避免非软件中断非软件中断中断处理程序中中断处理程序中 DOSDOS 重入重入 DOS 的重入容易引起系统瘫痪,所以在中断处理程序中要避免调用 DOS 功能调用,如果是对外设或屏幕的操作,改用 BIOS 中断,如果是文件操作,要到中断处理程序外的主程序中完成。5.5. 中断程序执行时间的正确估计中断程序执行时间的正确估计 中断处理程序执行时间要小于中断到来的周期或最短间隔时间,中断处理程序里不要出现死循环、需要人工干预的人机交互和时间很长的循环语句。

3.3.适当地保护现场适当地保护现场 由于中断随时到来,所以中断处理程序中一定要保护好需要使用的寄存器。如果使用的寄存器多,可以保护所有寄存器,如果寄存器用的不多,可只将要用的寄存器压栈。

62

微计算机系统6.6. 中断的打开与关闭中断的打开与关闭 中断响应的时候系统会自动将 IF清 0 ,如果希望中断能有限嵌套(高级与本级中断能嵌套)则在现场保护后,用 STI 指令将中断屏蔽打开。7.7. 中断结束处理及返回中断结束处理及返回 a) 如果现场保护后,执行过 STI ,这恢复现场前要执行 CLI关闭中断。 b) 如果是外部硬件中断,恢复现场前应该发中断结束命令( EOI )。 MOV AL, 20HMOV AL, 20H OUT 20H, AL ; OUT 20H, AL ; 向主向主 82598259 发发 EOIEOI OUT 0A0H, AL ; OUT 0A0H, AL ; 向从向从 82598259 发发 EOIEOI c) 恢复现场,使用和保护现场压栈顺序的逆序将寄存器的值弹出 d) 使用 IRET 中断返回指令返回

63

微计算机系统5.3.2 5.3.2 中断处理程序举例(假设中断类型号是中断处理程序举例(假设中断类型号是 0CH0CH ))

; 主程序的相关部分…… OLD0C DD ?……CODE SEGMENT …… MOV AX, 350CH ; 保存原来的 0CH 中断向量 INT 21H MOV WORD PTR OLD0C , BX MOV WORD PTR OLD0C+2 , ES MOV AX, SEG SERVICE ; 写入新的 0CH 中断向量 MOV DS , AX MOV DX , OFFSET SERVICE MOV AX , 250CH INT 21H …… ; 其它程序段

64

微计算机系统; 中断处理子程序SERVICE PROC FAR

PUSHA ; 保护现场PUSH DSSTI ; 打开中断……; 中断处理程序主体中断处理程序主体……CLI ; 关闭中断MOV AL, 20HOUT 20H, AL ; 发中断结束命令POP DS ; 恢复现场POPAIRET

SERVICE ENDP 参见汇编教材 P190页上的程序

65

微计算机系统5.4 PCI 中断5.4.1 PCI5.4.1 PCI 中断请求中断请求 PCIPCI 中断线:中断线: INTA#INTA# 、 INTB# 、 INTC# 、 INTD#。 PCIPCI 中断源:中断源: PIRQA#~PIRQD# 。 PCIPCI 中断源连接:中断源连接:通过映射到 ISA 中断( 3~7 , 9~12 , 14~15 )来实现。

转第 56 页

特点:特点: 当 PCI 中断被映射到一个 ISA 的 IRQ 后,该 IRQ不可再被 ISA 设备 ( 通过 SERIRQ 的中断 ) 使用。 PCI 中断可与低电平有效的非 ISA 中断共享同一 IRQ。

66

微计算机系统 实现:实现: 设备 31 的 0 号功能的 60H~63H 、 68H~6BH 的 PIRQ路由控制寄存器实现 PIRQA#~PIRQH#与 IRQ 的映射关系。 PIRQ#路由控制寄存器 [8bit] 存放的是 IRQ 编码。

PCIPCI 中断请求:中断请求: PCI 中断请求必须为低电平触发方式。 不同 PIRQ# 的优先级由 IRQ决定。 同一 PIRQ# 不同设备 INT* 的优先级由安装次序决定。

多个 PIRQ# 信号线能连在同一个 IRQ上。

PIRQA#PIRQB#PIRQC#PIRQD#

3573

60H~63H60H~63H

8259A8259AIR0

IR3

IR5

IR7

67

微计算机系统5.4.2 PCI5.4.2 PCI 中断响应中断响应• PCI 中断响应为单周期单周期响应。• HOST-PCI桥自动将双中断响应周期转换成单中断响应周期。• 其他中断响应过程与 8259A同,中断类型号通过 H

OST-PCI桥再返回给处理器。• 中断响应周期中可插入等待周期。• 中断服务程序入口地址由中断描述符表或中断向来那个表管理。

68

微计算机系统

图 5.14 PCI 中断响应周期

CLK

FRAME#

1 2 3 4 5

AD

C/BE#

IRDY#

TRDY#

无效 向量0000 BE#s ( 1110)

DEVSEL #

地址期没有地址,隐含的目标设备是系统中断控制器。一般它地址期没有地址,隐含的目标设备是系统中断控制器。一般它负责驱动负责驱动 DEVSEL#DEVSEL# ,也可由,也可由 PCI-ISAPCI-ISA桥进行负向译码。桥进行负向译码。

69

微计算机系统5.4.3 PCI5.4.3 PCI 中断共享中断共享• PCI 中断请求信号为漏极开路的。 即:中断向量表中中断向量为同一 PIRQ# 中最后安装的设备的中断服务程序入口地址。• 同一 PIRQ# 不同设备的优先级最后安装的最高。

• PCI 中断的状态位通过中断服务程序读取,并处理。 同一同一 PIRQ#PIRQ# 中断服务实现方法:中断服务实现方法: 采用链表式处理方法。 方法:方法: PNP配置时将同一 PIRQ# 的原中断向量存放到其设备驱动的特定寄存器后才替换为新的中断向量。中断向量(描述符) 中断处理程序设备 2

中断处理程序设备 1^

PIRQA#

70

微计算机系统5.5 串行中断5.5.1 5.5.1 串行中断结构串行中断结构

SIO LPC47B27X

…IRQx 82801BASERIRQ CPUINTR

IRQ14,15PIRQx

PIRQx …

82801BA串行中断驱动部件

SERIRQ 串行中断分离部件2 个 8259部件

INTR

IRQ14,15

71

微计算机系统

SERIRQ 线采用同步单线传输结构。遵循 PCI 信号使用的三态协议。• S-S-取样阶段 信号为低电平。取样阶段 信号为低电平。• R-R-恢复阶段 信号为高电平。恢复阶段 信号为高电平。• T-T-翻转状态 信号被释放翻转状态 信号被释放

SERIRQ包含 IRQ0, 1, 3~15, PIRQA#~PIRQD#, SMI# 和 IOCHK# 。但实际上并不支持 IRQ0、 8 、 13 中断。实际的 IRQ14 、 IRQ15 实际上也不从 SERIRQ 中传到南桥。

SERIRQ上信息分帧传输。

72

微计算机系统5.5.2 5.5.2 帧结构帧结构1.1. 开始帧开始帧

操作模式:操作模式:• 连续的( 82801BA 单独产生开始帧)• 静态的(一个串行 IRQ 设备来启动开始帧)长度:长度: 4 、 6 或 8 个时钟宽度(设备 31 的 0 号功能配置空间的 64H 处串行 IRQ 控制寄存器位 1 和位 0决定 ).2.2. 停止帧停止帧 长度:长度: 2 或 3 个时钟宽度。 ( 由 SERIRQ配置寄存器决定 ) 含义:含义: 2—SERIRQ 设备触发下次开始帧; 3—82801BA触发下次开始帧。

73

微计算机系统3.3. 数据帧数据帧长度:长度: 21 个时钟宽度。驱动:驱动:需请求中断的设备在自己的数据帧中将 SERIRQ驱动:

• IRQ0~15 在没有中断请求没有中断请求的时候将 SERIRQ 线驱动为低电平• PCI INT[A:D]# , SMI#和 IOCHK# 在有中断请有中断请求求的时候将 SERIRQ 线驱动为低电平• 否则都将 SERIRQ 线变为三态,由上拉电阻将他们驱动到高电平 。所谓自己的数据帧是指在 21 个时钟中数据帧号和本设备的 IRQ 号码相等那一数据帧。外设要在 SERIRQ的上升沿开始计算帧。

74

微计算机系统5.6 APIC(自学)5.6.1 APIC5.6.1 APIC 子系统组成子系统组成1.1.组成组成

处理器核心Local APIC模块

处理器核心Local APIC模块

I/O APIC 模块INTIN 23 INTIN 0

系统中断请求

APIC时钟PICD0

PICD1PICCLK

LINT0/ INTRLINT1/ NMI

处理器 0 处理器 1

LINT0/ INTRLINT1/ NMI

返回下页

Local APIC 、 I/O APIC 和 APIC 总线。

75

微计算机系统 Local APICLocal APIC :: 包含了 8259A 和 8254 的功能。

转上页

响应的中断:响应的中断: I/O APIC 送来的系统中断请求系统中断请求; 经 APIC 总线送来的处理器间中断请求处理器间中断请求( IPI ); 本地的中断请求本地的中断请求 ( 定时、错误、计数、连线 ) 。 I/O APICI/O APIC :: 多达 24 个中断; 中断优先级与中断号独立; 不需要中断响应周期。 可选择某个或一组处理器中的一个为目标处理器目标处理器。

76

微计算机系统 APICAPIC 总线:总线: 组成:组成: APICD0 、 APICD1 、 APICCLK 。 类型:类型:串行同步总线。 串行时序:串行时序:不同时钟先高位,后低位;同一时钟 D1高位, D0 低位。 内容:内容: EOI命令和短消息。 应用:应用:连接的每个模块均有自己的 ID( 固定 ) ; 每个模块均有自己的仲裁仲裁 IDID( 可变,初值来自模块 ID) 。

77

微计算机系统2.APIC2.APIC 中断类型中断类型 系统中断:系统中断: 经 I/O APIC模块引脚送入的中断请求。 交中断请求指定的目标处理器处理。 本地中断:本地中断: 定时、计数、错误、 INTR 及 NMI 。 只能由本地处理器处理。 处理器间中断:处理器间中断: 电平撤消初始化、初始化、启动、远程读、 SMI 、NMI 等。 交目标处理器处理。

78

微计算机系统5.6.2 I/O APIC5.6.2 I/O APIC 的寄存器的寄存器1.1. 直接访问寄存器直接访问寄存器 INDR : [R/W] 存放需访问的间接寄存器编号。 DATR : [R/W]间接访问寄存器访问结果。 IRQPAR : [W] 存放置位方式产生的中断向量号。 EOIR : [W] 存放正在服务 (将结束 ) 的中断向量号。2.2.间接访问寄存器间接访问寄存器 IDR : [R/W32B] 存放模块自己的固定的 ID 。 VERR : [R32B] 存放有无 IRQ声明和重定向寄存器数。 ARBIDR : [R32B] 存放模块的仲裁 ID 。 BOOT_CONFIGR : [R/W32B] 存放中断传递方式。

79

微计算机系统 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— 电平

80

微计算机系统5.6.3 APIC5.6.3 APIC 工作过程工作过程1.1. 中断请求产生并递交中断请求产生并递交 收到引脚信号有效改变时,置位 RDR 的 RIRR 位,争取总线使用权争取总线使用权后,向 APIC 总线发送短消息短消息。 目标处理器 (目标模式及传递模式目标模式及传递模式 )已在 RDR 中设定。 边沿触发方式触发方式时,消息传送后将 RDR 的 RIRR 位复位。2.2. 处理器接受中断请求产生并服务处理器接受中断请求产生并服务 目标处理器 ( 可能多个 ) 的 Local APIC收到请求后,根据传递模式,确定本处理器是否命中确定本处理器是否命中。 命中的目标处理器做相应中断处理,当处理器核心执行的代码优先级低于中断请求优先级时处理中断。

81

微计算机系统3.3. 中断结束阶段中断结束阶段 中断为电平触发方式时,发布 EOI命令通知 I/O APIC做结束处理。 当前处理器的总线使用权降为最低。

82

微计算机系统5.6.4 APIC5.6.4 APIC 总线仲裁总线仲裁 结构:结构:分布式仲裁。 空闲状态:空闲状态: D1D0=11(某消息结束后 )。 仲裁周期:仲裁周期: 5 个时钟周期。

CLK D1 D0 解释1 EOI 0 D1=1: 常规, D1=0:EOI2 NOT (ARBIDR[27]) 1 仲裁 ID ,如果 82801B

A 检测到的值和自己发送的值不一样就失去仲裁资格。3 NOT (ARBIDR[26]) 14 NOT (ARBIDR[25]) 15 NOT (ARBIDR[24]) 1

EOIEOI 传输优先级高于正常传输。传输优先级高于正常传输。 仲裁算法:仲裁算法:轮转优先级算法。 仲裁得胜者置为 0 ,其余模块一律加 1 。

83

微计算机系统补充作业:1. 某系统需要最多 20 个非共享的中断请求输入端,问下列 8259 级联拓扑图哪个是正确的,不正确的请说明原因。

2. 某系统使用一片 8259A 作为中断控制器,希望该控制器采用电平触发,起始中断类型号是 16 ,总线缓冲方式,全嵌套,正常 EOI 。假如该芯片端口号是 50H 和51H ,请编写该 8259A 的初始化程序。

3. 用 8088 汇编语言编写一个完整的程序处理 PC 机的外部 IRQ5 中断(含修改中断向量部分)。每当该中断到来将变量 come+ 1 ,当 come=100 时恢复原中断向量。

AA

B1 2

A

B CB

C 3