




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第7章章 中断与异常中断与异常 27.1 概述概述3中断到来的时候,中断到来的时候,CPU暂停现行程序,转而处理随机暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执到来的事件,待处理完后再回到被暂停的程序继续执行。行。程序状态及程序断点地址程序状态及程序断点地址的进栈及出栈。的进栈及出栈。中断请求中断请求中断响应中断响应 中断服务中断服务中断结束中断结束中断处理中断处理4 支持多中断源和多种中断源。支持多中断源和多种中断源。 支持中断屏蔽处理。支持中断屏蔽处理。 支持中断嵌套处理。支持中断嵌套处理。 支持中断优先级修改。支持中断优先级修改。 支持中断结束方式选择。支
2、持中断结束方式选择。5为了处理异常和中断,每一个为了处理异常和中断,每一个IA-32/Intel 64体系定义体系定义的异常和每一个需要特殊处理的中断类型的异常和每一个需要特殊处理的中断类型都都被分配了被分配了唯一的识别号,该识别号称之为唯一的识别号,该识别号称之为。对每个异常或中断而言,处理器都有相应的中断处理对每个异常或中断而言,处理器都有相应的中断处理程序,而程序,而就是中断处理程序的入口地址。就是中断处理程序的入口地址。6 Pentium及以上的处理器外部中断通过处理器外部引及以上的处理器外部中断通过处理器外部引脚或者本地脚或者本地APIC获得获得外部中断又可分为可屏蔽中断和不可屏蔽中
3、断。外部中断又可分为可屏蔽中断和不可屏蔽中断。7 多个中断请求的排队和判优由中断控制器完多个中断请求的排队和判优由中断控制器完成,产生成,产生的中断请求信号的中断请求信号送到送到CPU的的INTR引脚引脚或本地或本地APIC 。通过数据总线送到通过数据总线送到CPU中。中。EFLAGS寄存器的寄存器的IF位影响位影响CPU对中断请求的响应。对中断请求的响应。处理器在处理器在启动中断识别启动中断识别INTA总线周期。总线周期。硬件、可屏硬件、可屏 蔽、向量。蔽、向量。SIO LPC47B27XIRQxPCHSERIRQ北桥北桥CPUINTR中断向量号中断向量号PIRQx8 中断请求的信号送到中断
4、请求的信号送到CPU的的NMI引脚引脚或或本地本地APIC 。固定为固定为2。 CPU不需要进行中断识别,直接处理中断。不需要进行中断识别,直接处理中断。 硬件、不可屏蔽、向量。硬件、不可屏蔽、向量。NMI由由0跳变到跳变到1以后要维持至少以后要维持至少4个连续的处理个连续的处理器时钟周期的高电平才被识别。器时钟周期的高电平才被识别。 NMI由由1跳变到跳变到0以后要维持至少以后要维持至少4个连续的处理个连续的处理器时钟周期的低电平,新的器时钟周期的低电平,新的NMI中断才能被识别。中断才能被识别。9 软件、不可屏蔽、向量。软件、不可屏蔽、向量。 INT n是使用非常广泛的软件中断指令是使用非
5、常广泛的软件中断指令。 INT n的的第二字节第二字节n给出指令指定的中给出指令指定的中断向量号断向量号 I/O设备控制、实用服务、特殊中断、专设备控制、实用服务、特殊中断、专用参数中断。用参数中断。 公开公开/未公开、可调用、系统功能。未公开、可调用、系统功能。 未定义未定义(20H3FH中未使用的中断中未使用的中断)。 CPU不需要进行中断识别,直接处理中断。不需要进行中断识别,直接处理中断。10 处理器检测到的程序错误产生的处理器检测到的程序错误产生的异常异常机器检测机器检测异常异常11 软件产生的软件产生的异常异常12 软件、不可屏蔽、向量。软件、不可屏蔽、向量。 指令执行中产生。指令
6、执行中产生。 CPU规定。规定。 ,错误指令的,错误指令的CS:EIP压栈。该指令会重做。压栈。该指令会重做。 ,错误指令下一指令的,错误指令下一指令的CS:EIP压栈。压栈。 不保存,重启机器。不保存,重启机器。 CPU不需要进行中断识别,直接处理中断。不需要进行中断识别,直接处理中断。137.2 Intel 8259A 接受外部的中断请求;接受外部的中断请求; 管理所有外部的中断请求管理所有外部的中断请求(排队、判优、屏蔽、嵌套排队、判优、屏蔽、嵌套); 向向CPU产生中断请求产生中断请求INTR信号及中断向量号;信号及中断向量号; 进行中断结束处理;进行中断结束处理; 接受接受CPU命令
7、及返回状态。命令及返回状态。14 DB0DB7; IR0IR7; CS#; RD#、WR#、A0; SP#/EN#、 CAS0CAS2。 INT、INTA#;15在在16 IRR、IMR、PR、ISR及控制电路。及控制电路。IR-INT。&INTISR编码编码中断请求优先级编码器中断请求优先级编码器中断请求寄存器中断请求寄存器IRRIR0IR7 &中断屏蔽寄存器中断屏蔽寄存器IMRD0D71比比较较器器 B0B1B2ABA0A1A2CPU接口、接口、I/O接口。接口。17 当前指令执行完毕;当前指令执行完毕; EFLAGS中中IF=1; INTR信号有效。信号有效。8259向向
8、CPU送中断向量号。送中断向量号。 第一个第一个INTA#,CPU封锁总线封锁总线(LOCK#有效有效),8259A最高优先级请求对应最高优先级请求对应ISR位置位,对应位置位,对应IRR复位。复位。 第二个第二个INTA#,总线解锁,总线解锁,ALE无效,无效,8259A将当前将当前中断服务程序对应中断向量号送到数据总线上。中断服务程序对应中断向量号送到数据总线上。 ISR的复位在自动结束的复位在自动结束/非自动结束时不一致。非自动结束时不一致。回回ICW318级联3级联1级联219 :正跳变向:正跳变向8259A请求中断。请求中断。:高电平向:高电平向8259A请求中断,响应请求中断,响应
9、中断后要及时清除高电平。中断后要及时清除高电平。外设向外设向8259A请求中断,并将请求状态保存请求中断,并将请求状态保存在状态寄存器中等待在状态寄存器中等待CPU来查询。来查询。20 小系统中,小系统中,8259A数据线直接连数据线直接连系统数据总线,不需要总线缓冲器,此时系统数据总线,不需要总线缓冲器,此时SP#/EN#表示级联时主表示级联时主/从关系。从关系。 SP#/EN#接高电平;接高电平;SP#/EN#接低电平。接低电平。大系统中,数据总线都具有总线大系统中,数据总线都具有总线缓冲器,此时缓冲器,此时SP#/EN#表示数据传送方向,级联表示数据传送方向,级联时主时主/从关系通过软件
10、设定从关系通过软件设定ICW4来决定。来决定。21 IMR中相应位置位;中相应位置位; 开放比自己优先级低的开放比自己优先级低的IR。 从从IR0IR7降序;降序; 刚被服务的刚被服务的IR的优先级降至最低;的优先级降至最低;指定的指定的IR的优先级降至最低。的优先级降至最低。22 禁止同优先级和低优先级请求发生;禁止同优先级和低优先级请求发生; 禁止低优先级请求发生。禁止低优先级请求发生。级联时主片特殊全嵌套,从片全嵌套。级联时主片特殊全嵌套,从片全嵌套。 中断响应后中断响应后ISR中最高优先级位自动复位;中最高优先级位自动复位; 中断服务程序返回前,需要处理程序中断服务程序返回前,需要处理
11、程序发出对发出对ISR中相应位复位的中断结束命令;中相应位复位的中断结束命令; ISR中最高优先级位复位;中最高优先级位复位; 命令中指定的命令中指定的ISR中相应位复位。中相应位复位。级联结构23 只提供二个端口只提供二个端口(使用使用A0区别区别); 初始化初始化-ICW1ICW4, 操操 作作-OCW1OCW3。IRR、ISR、IMR、查询字。、查询字。 特征位方法;特征位方法;时序方法、读时序方法、读/写区写区分法。分法。24PIC1PIC2操作操作内容内容特征位特征位时序时序D4D3D220H0A0H写写ICW11无无OCW200OCW30121H0A1H写写ICW2ICW4无无在初
12、始化期间,在初始化期间,ICW1之后之后ICW2ICW4OCW1非初始化期间非初始化期间20H0A0H读读IRR,ISR查询字查询字无无OCW3决定决定21H0A1H读读IMR无无无无ICWx只有在初始化过程中才会出现。只有在初始化过程中才会出现。25 D4=1; 初始化命令初始化命令ICW4主要设定嵌套、缓冲、结束方式,主要设定嵌套、缓冲、结束方式, 当当SNGL=0,需要初始化命令,需要初始化命令ICW3来设置级联项。来设置级联项。26ICW1 ICW2ICW3ICW4。 如果如果ICW2为为08H,则,则 IR3的中断向量号(的中断向量号(中断向量)为中断向量)为08H+03H=0BH。
13、27 主片:主片:S7S0分别对应相应的分别对应相应的IR号的引脚,号的引脚,为为1的位对应的引脚接有从片;的位对应的引脚接有从片; 从片:从片:ID2ID1的编号是该从片接到主片的的编号是该从片接到主片的IR引脚的引脚的IR号。号。 需要分别对主片和从片进行设置。需要分别对主片和从片进行设置。级联结构28主主 片:片:MOV AL, 14H OUT 21H,AL从片从片1:MOV AL, 04H OUT 0A1H,AL从片从片2:MOV AL, 02H OUT 0C1H,AL 主片请求:与非级联一致。主片请求:与非级联一致。 从片请求:与非级联一致,但其从片请求:与非级联一致,但其INT送到
14、主片,服送到主片,服从主片的请求规则。从主片的请求规则。 从片响应:通过从片响应:通过CAS线译码,选中时在收到第二个线译码,选中时在收到第二个INTA#后,返回中断向量号。后,返回中断向量号。非级联响应非级联响应级联结构 主片响应:收到第一个主片响应:收到第一个INTA#后,对从片的后,对从片的IR请求,请求,在第一个在第一个INTA#从从CAS线送出该线送出该IR编码;否则,编码;否则,在第二个在第二个INTA#返回中断向量号。返回中断向量号。29 用于用于8位位(0)/16位位(1)微机微机;PCH中该中该位始终为位始终为1 非中断自动结束非中断自动结束(0)/自动结束自动结束(1)方式
15、;方式; 缓冲方式缓冲方式(D3=1)时的主从片级联位置设置,时的主从片级联位置设置, 从片从片(0)/主片主片(1) ;非缓冲非缓冲(0)/缓冲缓冲(1)方式;方式;全嵌套全嵌套(0)/特殊全嵌套特殊全嵌套(1)方式。方式。30无,无,无。无。写中断屏蔽寄存器写中断屏蔽寄存器IMR实际上改变了中断优先级(屏蔽掉高优先级的实际上改变了中断优先级(屏蔽掉高优先级的中断请求)。中断请求)。对对IMR的读取在的读取在21H(主)、(主)、0A1H(从)端口(从)端口做读操作。做读操作。31 D4D3=00;结束方式和优先权轮转管理;结束方式和优先权轮转管理; D6D5=0,自动结束,硬件自动清除,自
16、动结束,硬件自动清除ISR的相应位;的相应位; D6D5=01,非自动结束,非自动结束命令不指定清命令不指定清ISR的哪一位的哪一位; D6D5=11,非自动结束,非自动结束命令指定清命令指定清ISR的哪一位的哪一位。 D7=0,优先权固定;,优先权固定;D7=1,优先权轮转。,优先权轮转。 D6的含义仍然有效的含义仍然有效32R 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 非自
17、动非自动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的含义?的含义?33 P RR RIS功能功能 应用应用 0 1 0读取读取IRR内容内容MOV AL,
18、0AHOUT 20H,ALIN AL,20H 0 1 1读取读取ISR内容内容MOV AL, 0BHOUT 20H,ALIN AL,20H 0 0 *不读取任何寄存器内容不读取任何寄存器内容 1 * *读取查询字信息读取查询字信息MOV AL, 0CHOUT 20H, ALIN AL, 20HD4D3=01;34 查询字格式:查询字格式:I=0,无中断请求;,无中断请求;I=1,有中断请求。,有中断请求。W2W0,正在申请中断的若干中断源中优先,正在申请中断的若干中断源中优先级最高的中断源的编码。级最高的中断源的编码。 35 ESMM SMM功能功能 0 *该操作对特殊屏蔽无效该操作对特殊屏蔽
19、无效 1 0取消特定屏蔽取消特定屏蔽 1 1设置特定屏蔽设置特定屏蔽 用用OCW1屏蔽部分屏蔽部分IR含自己含自己, 用用OCW3置置SMM即可。即可。 用用OCW3取消特定屏蔽,取消特定屏蔽, 用用OCW1取消被屏蔽的取消被屏蔽的IR。36out 20h(a0h), alout 21h(a1h), alout 21h(a1h), alout 21h(a1h), al37 不同不同8259A的的I/O端口地址不同;端口地址不同; 8259A级联时,每个级联时,每个8259A均必须有完整的均必须有完整的初始化过程初始化过程端口地址和部分参数不同而已端口地址和部分参数不同而已; 全嵌套方式时,初始
20、全嵌套方式时,初始IR优先级优先级IR0最高。最高。38 INTM00EQU 020H;8259A端口端口0INTM01EQU021H;8259A端口端口1MOVAL, 00010011B;ICW1:边沿触发,要:边沿触发,要ICW4; ;单片方式,不要单片方式,不要ICW3。OUTINTM00, ALJMPSHORT $+2;I/O端口延时端口延时MOVAL, 00001000B;ICW2:设置中断向量,起始的:设置中断向量,起始的;中断向量为中断向量为08H。OUTINTM01, ALJMPSHORT $+2MOVAL, 00000001B;ICW4:非缓冲,全嵌套,非自:非缓冲,全嵌套,
21、非自;动中断结束动中断结束(EOI)。OUTINTM01, ALJMPSHORT $+239思考题:思考题:MOV AL, 12HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, ALMOV AL, 13HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, AL40Y0#Y7#ABCG2BG2AG11514131211109712345674LS138A5A6A7A8A9AEN#8259ACS#DB7.0IR7.0INTA#A0A0INTINTA#INTRRD#WR#IOW#IOR#4
22、1 主、从区分;主、从区分; IRQ优先级;优先级; 请求与响应。请求与响应。42在在PCH中,中,ICW1的的D3位位LTIM位无效,中断请求的触发方式由位无效,中断请求的触发方式由下面两个寄存器决定。下面两个寄存器决定。 7 6 5 4 3 2 1 0 IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 0 0 0 7 6 5 4 3 2 1 0 IRQ15 IRQ14 0 IRQ12 IRQ11 IRQ10 IRQ9 0IRQx=0 :IRQx为边沿触发为边沿触发IRQx=1 :IRQx为电平触发为电平触发43INTM00EQU 020H;主主8259A端口端口0INTM01EQU021H
23、;主主8259A端口端口1MOVAL, 00010001B ;ICW1:边沿触发,要:边沿触发,要ICW4;级联方式,要级联方式,要ICW3。OUT INTM00, ALJMP SHORT $+2;I/O端口延时端口延时MOVAL, 00001000B ;ICW2:设置主片的中断向量,起始的中断向量为:设置主片的中断向量,起始的中断向量为08HOUT INTM01, ALJMP SHORT $+2MOVAL, 00000100B ;ICW3:表示从:表示从8259A的的INT输出是连接到主片的输出是连接到主片的IR2。OUT INTM01, ALJMP SHORT $+2MOVAL, 0001
24、0001B ;ICW4:非总线缓冲,特殊全嵌套,非自动:非总线缓冲,特殊全嵌套,非自动EOIOUT INTM01, ALJMP SHORT $+2MOV AL,00000000B ;ELCR1:全部边沿触发:全部边沿触发MOV DX,4D0HOUT DX,AL44INTS00EQU 0A0H;从从8259A端口端口0INTS01EQU0A1H;从从8259A端口端口1MOVAL, 00010001B ;ICW1边沿触发,要边沿触发,要ICW4;级联方式,要级联方式,要ICW3。OUT INTS00, ALJMP SHORT $+2MOVAL, 01110000B ;ICW2:设置从片的中断向量
25、,起始的中断向量为:设置从片的中断向量,起始的中断向量为70HOUT INTS01, ALJMP SHORT $+2MOVAL, 00000010B ;ICW3:设置从片的识别标志,指定对应主片的:设置从片的识别标志,指定对应主片的IR2。OUT INTS01, ALJMP SHORT $+2MOVAL, 00000001B ;ICW4:非总线缓冲,全嵌套,非自动中断结束。:非总线缓冲,全嵌套,非自动中断结束。OUT INTS01, ALJMP SHORT $+2MOV AL,00000000B ;ELCR2:全部边沿触发:全部边沿触发MOV DX,4D1HOUT DX,AL458259825
26、9输入输入 典型的中断源典型的中断源 被连接的引脚被连接的引脚/功能功能 主片主片0内部内部内部时钟内部时钟/计数器计数器0的输出的输出1键盘键盘通过通过SERIRQ来的来的IRQ12内部内部从控制器的级联引脚从控制器的级联引脚3串行端口串行端口2通过通过SERIRQ来的来的IRQ34串行端口串行端口1通过通过SERIRQ来的来的IRQ45并行端口并行端口/普通普通通过通过SERIRQ来的来的IRQ56软磁盘软磁盘通过通过SERIRQ来的来的IRQ67并行端口并行端口/普通普通通过通过SERIRQ来的来的IRQ7返回下页4682598259输入输入 典型的中断源典型的中断源 被连接的引脚被连接
27、的引脚/功能功能 从片从片0内部实时时钟内部实时时钟内部内部RTC1普通普通通过通过SERIRQ来的来的IRQ92普通普通通过通过SERIRQ来的来的IRQ103普通普通通过通过SERIRQ来的来的IRQ114PS/2鼠标鼠标通过通过SERIRQ来的来的IRQ125内部内部基于处理器基于处理器FERR#的状态机输出的状态机输出6基本基本SATA从输入信号来或通过从输入信号来或通过SERIRQ来的来的IRQ147第二第二SATA从输入信号来或通过从输入信号来或通过SERIRQ来的来的IRQ15SIO LPC47B27XIRQxPCHSERIRQCPUINTRIRQ14,15返回第65页转上页47
28、在当前指令结束后,可屏蔽中断根据在当前指令结束后,可屏蔽中断根据EFLAGS寄存器寄存器IF位决定是否响应;其他中断给予响应。位决定是否响应;其他中断给予响应。中断响应的步骤如下:中断响应的步骤如下:通过堆栈及相关硬件实现通过堆栈及相关硬件实现EFLAGS、CS、EIP的保护。的保护。并清除并清除IF和和TF。压栈的顺序是压栈的顺序是EFLAGS、CS、EIP对可屏蔽中断通过中断响应周期取得中断向量号。对可屏蔽中断通过中断响应周期取得中断向量号。7.3 现代微机中的中断处理现代微机中的中断处理48恢复断点(恢复断点(EIP、CS、EFLAG顺序出栈)继续执行主顺序出栈)继续执行主程序。程序。对
29、向量中断,通过中断向量号查中断向量表或中断描对向量中断,通过中断向量号查中断向量表或中断描述符表取得。述符表取得。从中断处理程序入口地址转到中断处理程序。执行对从中断处理程序入口地址转到中断处理程序。执行对中断的处理。中断的处理。49PCH北桥北桥PCI INTAINTA中断向量号中断向量号CPU总线总线INTR主主8259A从从8259AIRQ内部逻辑内部逻辑两个两个 INTA#CPU50在上面的过程中有几点注意:在上面的过程中有几点注意: 一个或多个一个或多个IRQ到来的时候,置中断请求寄存器到来的时候,置中断请求寄存器IRR的相应位的相应位 。如果中断没有被屏蔽,才可以发。如果中断没有被
30、屏蔽,才可以发INTR。 PCH内部内部产生两个周期产生两个周期INTA#后,后,有最高优先级的,有最高优先级的ISR的相应位被置上,而的相应位被置上,而IRR的相的相应位被复位。应位被复位。,主中断控制器利,主中断控制器利用内部用内部3根专用线根专用线CAS向从中断控制器发送从识别码向从中断控制器发送从识别码。,主或从识别码选中的从可编,主或从识别码选中的从可编程中断控制器返回中断向量。程中断控制器返回中断向量。 结束中断响应周期时,如果在自动中断结束(结束中断响应周期时,如果在自动中断结束(AEOI)模式下,则中断服务寄存器()模式下,则中断服务寄存器(ISR)的相应位在)的相应位在被复位
31、,否则被复位,否则ISR相应位保持相应位保持置位直到中断处理程序末尾发出置位直到中断处理程序末尾发出EOI命令。命令。 51 只有外部硬件中断需要进行识别,其余不需要识别。只有外部硬件中断需要进行识别,其余不需要识别。 中断识别由中断控制器完成。中断识别由中断控制器完成。 按机器故障、按机器故障、DMA、外围硬件、软件递减。、外围硬件、软件递减。异常异常DMA外围硬件外围硬件BIOSDOS自由。自由。 即基本按中断向量表排序。即基本按中断向量表排序。 外围硬件一般可由用户修改其优先权。外围硬件一般可由用户修改其优先权。525300000 类型类型0的的IP 类型类型0的的CS00004 类型类
32、型1的的IP 类型类型1的的CS4*N 类型类型N的的IP 类型类型N的的CS类型类型0的中断向量的中断向量类型类型1的中断向量的中断向量类型类型N的中断向量的中断向量54对对8088/8086固定在内存固定在内存0000 : 0000开始的开始的1KB范围内。范围内。按中断向量号顺序存放中断向量的存储区域。按中断向量号顺序存放中断向量的存储区域。指向存放中断向量地址第一字节的指针。指向存放中断向量地址第一字节的指针。软件中断中自由中断的中断向量需用户自己装入。软件中断中自由中断的中断向量需用户自己装入。每个中断向量占每个中断向量占4字节。字节。7.3.4 中断向量表和实地址模式下中断处理程序
33、的编写中断向量表和实地址模式下中断处理程序的编写 对对IA-32处理器处理器中断向量表的基地址和界限值放在中断向量表的基地址和界限值放在IDTR寄存器中,并可用寄存器中,并可用LIDT指令修改它们指令修改它们,为了兼,为了兼容,实地址模式基地址还是容,实地址模式基地址还是0,界限还是为,界限还是为3FFH55根据中断处理程序要完成的功能,选择好正确根据中断处理程序要完成的功能,选择好正确的中的中断向量号,断向量号,如:如:COM1串行通信用串行通信用0CH号中断,号中断,Ctrl+Break键控制中断号是键控制中断号是1BH,注意定时器中断一,注意定时器中断一般不使用般不使用08H号,而使用更
34、安全的号,而使用更安全的1CH号中断。号中断。 如果是自己定义的软中断,注意不要和如果是自己定义的软中断,注意不要和系统中断向系统中断向量号相量号相重合。重合。中断编程包括主程序部分和中断处理程序部分。中断编程包括主程序部分和中断处理程序部分。56有两种设置中断服务程序入口地址有两种设置中断服务程序入口地址(中断向量中断向量)的方法:的方法:1)直接写中断向量表)直接写中断向量表(假设中断向量号是假设中断向量号是0CH)CLI ; 关中断关中断MOV AX, 0MOV ES, AX ; ES指向指向0000H段段(中断向量表的段中断向量表的段)MOV SI, 0CH*4 ; 一个中断向量一个中
35、断向量4个字节个字节MOV AX, OFFSET SERVICE ; 中断入口偏移地址中断入口偏移地址MOV ES:SI, AXMOV AX, SEG SERVICE ; 中断入口的段地址中断入口的段地址MOV ES:SI+2, AXSTI ; 开中断开中断; 中断处理子程序中断处理子程序SERVICE PROC FAR2)使用)使用DOS功能调用中断功能调用中断MOV AX, SEG SERVICEMOV DS,AXMOV DX,OFFSET SERVICEMOV AX,250CH57DOS的重入容易引起系统瘫痪,所以在中断处理程的重入容易引起系统瘫痪,所以在中断处理程序中要避免调用序中要避
36、免调用DOS功能调用,如果是对外设或屏幕功能调用,如果是对外设或屏幕的操作,改用的操作,改用BIOS中断,如果是文件操作,要到中断中断,如果是文件操作,要到中断处理程序外的主程序中完成。处理程序外的主程序中完成。 中断处理程序执行时间要小于中断到来的周期或最短中断处理程序执行时间要小于中断到来的周期或最短间隔时间,中断处理程序里不要出现死循环、需要人间隔时间,中断处理程序里不要出现死循环、需要人工干预的人机交互和时间很长的循环语句。工干预的人机交互和时间很长的循环语句。由于中断随时到来,所以中断处理程序中一定要保护由于中断随时到来,所以中断处理程序中一定要保护好需要使用的寄存器。如果使用的寄存
37、器多,可以保好需要使用的寄存器。如果使用的寄存器多,可以保护所有寄存器,如果寄存器用的不多,可只将要用的护所有寄存器,如果寄存器用的不多,可只将要用的寄存器压栈。寄存器压栈。58中断响应的时候系统会自动将中断响应的时候系统会自动将IF清清0,如果希望中断,如果希望中断能有限嵌套(高级与本级中断能嵌套)则在现场保护能有限嵌套(高级与本级中断能嵌套)则在现场保护后,用后,用STI指令将中断屏蔽打开。指令将中断屏蔽打开。 a) 如果现场保护后,执行过如果现场保护后,执行过STI,这恢复现场前要执,这恢复现场前要执行行CLI关闭中断。关闭中断。 b) 如果是外部硬件中断,恢复现场前应该发中断结如果是外
38、部硬件中断,恢复现场前应该发中断结束命令(束命令(EOI)。)。 c) 恢复现场,使用和保护现场压栈顺序的逆序将寄存恢复现场,使用和保护现场压栈顺序的逆序将寄存器的值弹出器的值弹出 d) 使用使用IRET中断返回指令返回中断返回指令返回59; 主程序的相关部分主程序的相关部分 OLD0C DD?.CODE MOVAX, 350CH; 保存原来的保存原来的0CH中断向量中断向量 INT21H MOVWORD PTR OLD0C,BX MOVWORD PTR OLD0C+2,ES MOVAX, SEG SERVICE ; 写入新的写入新的0CH中断向量中断向量 MOVDS,AX MOVDX,OFF
39、SET SERVICE MOVAX,250CH INT21H ; 其它程序段其它程序段60; 中断处理子程序中断处理子程序SERVICE PROCFARPUSHA; 保护现场保护现场PUSH DSSTI; 打开中断打开中断; CLI; 关闭中断关闭中断MOV AL, 20HOUT 20H, AL ; 发中断结束命令发中断结束命令POP DS; 恢复现场恢复现场POPAIRETSERVICEENDP 61 8字节,每个表项对应一字节,每个表项对应一个中断向量号。个中断向量号。任务门、中断门、陷阱门。任务门、中断门、陷阱门。 通过特征位通过特征位(b40b44)区分不同类型。区分不同类型。7.3.
40、5 保护模式下中断与异常的处理保护模式下中断与异常的处理 628字节字节256=2KB。 由中断描述符表寄存器由中断描述符表寄存器(IDTR)指向。指向。 指向中断描述符表中的中断描述符的指针。指向中断描述符表中的中断描述符的指针。段选择符、属性和偏移量。段选择符、属性和偏移量。 通过中断门处理时通过中断门处理时EFLAG的的IF被清被清0,通过陷进门,通过陷进门处理处理IF不清不清0。 中断门的优先级比陷阱门高,是面向外部硬件中断中断门的优先级比陷阱门高,是面向外部硬件中断的门,后者面向优先级低的中断。的门,后者面向优先级低的中断。63偏移偏移属性属性选择符选择符中断门中断门/陷阱门陷阱门I
41、DTRIDT中断向量号中断向量号7 08边界边界属性属性基地址基地址段描段描述符述符CSGDT/LDT线性地址线性地址中断服务中断服务子程序子程序代码段代码段段基地址段基地址偏移偏移EIPCS段描述符缓冲器段描述符缓冲器64TSS选择符选择符任务任务门门IDTRIDT中断向量号中断向量号7 08属性属性段限段限基址基址TSS描描述符述符TRGDT线性地址线性地址TSS基址基址TR描述符缓存器描述符缓存器 TSS选择符与属性。选择符与属性。 中断任务和被中断任务完全隔离。中断任务和被中断任务完全隔离。中断响应过程耗时长。中断响应过程耗时长。65 、INTB#、INTC#、INTD#。PIRQA#
42、PIRQD#。通过映射到通过映射到ISA中断(中断(37,912,1415)来实现。)来实现。转第56页 当当PCI中断被映射到一个中断被映射到一个ISA的的IRQ后,该后,该IRQ不可不可再被再被ISA设备设备(通过通过SERIRQ的中断的中断)使用。使用。 PCI中断可与低电平有效的非中断可与低电平有效的非ISA中断共享同一中断共享同一IRQ。7.4 PCI中断中断66 设备设备31的的0号功能的号功能的60H63H、68H6BH的的PIRQ路由路由控制寄存器实现控制寄存器实现PIRQA#PIRQH#与与IRQ的映射关系。的映射关系。 PIRQ#路由控制寄存器路由控制寄存器8bit存放的是
43、存放的是IRQ编码。编码。 PCI中断请求必须为低电平触发方式。中断请求必须为低电平触发方式。 不同不同PIRQ#的优先级由的优先级由IRQ决定。决定。 同一同一PIRQ#不同设备不同设备INT*的优先级由安装次序决定。的优先级由安装次序决定。 多个多个PIRQ#信号线能连在同一个信号线能连在同一个IRQ上。上。PIRQA#PIRQB#PIRQC#PIRQD#3573IR0IR3IR5IR767 PCI中断响应为中断响应为响应。响应。 HOST-PCI桥自动将双中断响应周期转换成单中断响桥自动将双中断响应周期转换成单中断响应周期。应周期。 其他中断响应过程与其他中断响应过程与8259A同,中断
44、向量号通过同,中断向量号通过HOST-PCI桥再返回给处理器。桥再返回给处理器。 中断响应周期中可插入等待周期。中断响应周期中可插入等待周期。 中断服务程序入口地址由中断描述符表或中断向量表中断服务程序入口地址由中断描述符表或中断向量表管理。管理。68 PCI中断响应周期中断响应周期CLKFRAME#12345ADC/BE#IRDY#TRDY#无效无效向量向量0000BE#s(1110)DEVSEL #69 PCI中断请求信号为漏极开路的。中断请求信号为漏极开路的。 即:中断向量表中中断向量为同一即:中断向量表中中断向量为同一PIRQ#中最后安中最后安装的设备的中断服务程序入口地址。装的设备的
45、中断服务程序入口地址。 同一同一PIRQ#不同设备的优先级最后安装的最高。不同设备的优先级最后安装的最高。 PCI中断的状态位通过中断服务程序读取,并处理。中断的状态位通过中断服务程序读取,并处理。 采用链表式处理方法。采用链表式处理方法。 PNP配置时将同一配置时将同一PIRQ#的原中断向量存放到的原中断向量存放到其设备驱动的特定寄存器后才替换为新的中断向量。其设备驱动的特定寄存器后才替换为新的中断向量。中断向量中断向量(描述符)(描述符)中断处中断处理程序理程序设备设备2中断处中断处理程序理程序设备设备1PIRQA#70SIO LPC47B27XIRQxPCHSERIRQCPUINTRIR
46、Q14,15PIRQxPIRQxPCH串行中断串行中断驱动部件驱动部件SERIRQ串行中串行中断分离断分离部件部件2个个8259部件部件INTRIRQ14,157.5 串行中断串行中断71 SERIRQ线采用同步单线传输结构。线采用同步单线传输结构。遵循遵循PCI信号使用的三态协议。信号使用的三态协议。 SERIRQ包含包含IRQ0, 1, 315, PIRQA#PIRQD#, SMI#和和IOCHK#。但实际上并不支持。但实际上并不支持IRQ0、8、13中断。实际的中断。实际的IRQ14、IRQ15实际上也不从实际上也不从SERIRQ中传到南桥。中传到南桥。 SERIRQ上信息分帧传输。上信
47、息分帧传输。72 连续的连续的(PCH单独单独产生开始帧)产生开始帧) 静态的(一个串行静态的(一个串行IRQ设备来启动开始帧)设备来启动开始帧)4、6或或8个时钟宽度(设备个时钟宽度(设备31的的0号功能配置号功能配置空间的空间的64H处串行处串行IRQ控制寄存器位控制寄存器位1和位和位0决定决定). 2或或3个时钟宽度。个时钟宽度。(由由SERIRQ配置寄存器决定配置寄存器决定) 2SERIRQ设备触发下次开始帧;设备触发下次开始帧; 3PCH触发触发下次开始帧。下次开始帧。7321个时钟宽度。个时钟宽度。需请求中断的设备在自己的数据帧中将需请求中断的设备在自己的数据帧中将SERIRQ驱动
48、:驱动: IRQ015在在的时候将的时候将SERIRQ线驱动线驱动为低电平为低电平 PCI INTA:D#,SMI和和IOCHK#在在的时候将的时候将SERIRQ线驱动为低电平线驱动为低电平 否则都将否则都将SERIRQ线变为三态,由上拉电阻将他们线变为三态,由上拉电阻将他们驱动到高电平驱动到高电平 。所谓自己的数据帧是指在所谓自己的数据帧是指在21个时钟中数据帧号和本个时钟中数据帧号和本设备的设备的IRQ号码相等那一数据帧。外设要在号码相等那一数据帧。外设要在SERIRQ的上升沿开始计算帧。的上升沿开始计算帧。74返回下页 集成在处理器中的集成在处理器中的 集成在系统芯片组(如集成在系统芯片
49、组(如PCH)中的)中的 本地本地APIC和和I/O APIC之间的之间的7.6 APIC75返回下页 本地本地APIC I/O APIC 本地本地APIC和和I/O APIC之间的连线之间的连线76单单CPU系统系统中中APIC多处理器系统中的多处理器系统中的APIC771)本地连接的)本地连接的I/O设备设备2)外部连接的)外部连接的I/O设备设备3)处理器间的中断()处理器间的中断(IPI)4)APIC时钟产生的中断时钟产生的中断5)性能监视计数器中断)性能监视计数器中断6)热敏中断)热敏中断7)APIC内部错误中断内部错误中断781)本地向量表(本地向量表(LVT)本地向量表(本地向量
50、表(LVT)允许软件指定本地中断传递到处理器)允许软件指定本地中断传递到处理器核的方式。核的方式。2)差错状态寄存器(差错状态寄存器(ESR)本地本地APIC将中断处理当中检测到的错误记录在差错状态寄将中断处理当中检测到的错误记录在差错状态寄存器(存器(ESR)中。)中。另外,由于另外,由于本地和本地和I/O APIC只只支持支持16到到255这这240个作为有个作为有效中断效中断,所以,所以当当015号中断向量被本地号中断向量被本地APIC发送或接受,发送或接受,APIC将在它的错误状态寄存器中指明其为非法的向量。将在它的错误状态寄存器中指明其为非法的向量。3)除法配置寄存器(除法配置寄存器
51、(DCR)4)初始值寄存器和当前计数寄存器初始值寄存器和当前计数寄存器7980将将EAX寄存器赋值为寄存器赋值为1作为源操作数来执行作为源操作数来执行CPUID指指令。在返回的令。在返回的EDX寄存器中位寄存器中位9为为1说明该处理器存在说明该处理器存在片上本地片上本地APIC启动或禁止启动或禁止本地本地APIC方法:方法:1)将)将IA_APIC_BASE MSR寄存器的位寄存器的位11清清0,本地,本地APIC将被禁止;将将被禁止;将IA_APIC_BASE MSR寄存器的寄存器的位位11设置为设置为1就启用了本地就启用了本地APIC。2)使用本地)使用本地APIC的伪中断向量寄存器中的启
52、用的伪中断向量寄存器中的启用/禁止禁止APIC标识。标识。81 。中断在。中断在I/O APIC上是利用常规数上是利用常规数据通路的存储器写操作传送的,中断的处理也不需据通路的存储器写操作传送的,中断的处理也不需要处理器执行中断响应周期。要处理器执行中断响应周期。 。I/O APIC中的中断优先级独立于中断中的中断优先级独立于中断号,比如中断号,比如中断10可以比中断可以比中断3的优先级高。的优先级高。 。在。在PCH中的中的I/O APIC支持多达支持多达24个中个中断。断。 。I/O APIC中断传送协议中有一个仲中断传送协议中有一个仲裁阶段,它允许系统中的多个裁阶段,它允许系统中的多个I
53、/O APIC拥有自己的拥有自己的中断向量。中断向量。82可以读可以读/写的写的8位寄存器位寄存器。存放需要间接访问的寄存器的存放需要间接访问的寄存器的8位索引位索引编号值编号值可以读可以读/写的写的32位寄存器位寄存器。当对索引寄存器指定的间接寄存器进当对索引寄存器指定的间接寄存器进行读行读/写时,数据寄存器用来存放准备读写时,数据寄存器用来存放准备读/写的数据写的数据只能写不能读只能写不能读,在在APIC处于电平触发模式下可用,当得到处于电平触发模式下可用,当得到EOI消息时,该寄存器的低消息时,该寄存器的低8位(位(D7D0)被赋予一个中断向量号)被赋予一个中断向量号,I/O APIC将
54、这个中断向量号和重定向表寄存器中所有中断向将这个中断向量号和重定向表寄存器中所有中断向量号部分进行比较,凡是向量号相等的重定向寄存器的远程中量号部分进行比较,凡是向量号相等的重定向寄存器的远程中断返回位(断返回位(Remote_IRR)均被清零,表示中断结束。该寄存)均被清零,表示中断结束。该寄存器的其他位没用。器的其他位没用。83可读可读/写的写的32位寄存器。它的位寄存器。它的D27D24这这4位必须由软件在使位必须由软件在使用用APIC之前写入之前写入ID值,值,D15位是中间结果暂存位。位是中间结果暂存位。APIC的的ID作为作为APIC的物理名称,的物理名称,APIC总线对总线对AP
55、IC的仲裁的仲裁ID就来源就来源于于I/O APIC的的ID。只读的只读的32位寄存器。它的位寄存器。它的D7D0是是APIC的版本号。的版本号。D15位为位为1表示该版本的表示该版本的I/O APIC具有引脚声明寄存器。具有引脚声明寄存器。D23D16指定指定最大重定向表寄存器数,取值范围为最大重定向表寄存器数,取值范围为0239。PCH的的I/O APIC中有中有24个重定向寄存器(个重定向寄存器(RDR)形成的重定向)形成的重定向表,它们都是可读表,它们都是可读/写的写的64位寄存器。重定向寄存器的信息用来位寄存器。重定向寄存器的信息用来将相应中断引脚上的中断转换成一个将相应中断引脚上的
56、中断转换成一个APIC消息。消息。84 每个通过本地每个通过本地APIC传递到处理器的中断都有一个基于它传递到处理器的中断都有一个基于它的向量号的优先级。本地的向量号的优先级。本地APIC利用这个优先级来决定何利用这个优先级来决定何时为该优先级的中断服务。时为该优先级的中断服务。 每个中断向量都是一个每个中断向量都是一个8位的值,而中断向量号的高位的值,而中断向量号的高4位位形成中断优先级类。最低优先级类是形成中断优先级类。最低优先级类是1,最高是,最高是15。 每个中断优先级类包含每个中断优先级类包含16个向量,这个向量,这16个向量的相对优个向量的相对优先级由中断向量的低先级由中断向量的低4位决定。低位决定。低4位数值越大,优先级位数值越大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红色大气年终工作总结
- 六年级心理健康知识讲座课件
- 公司网络安全培训成效课件
- 《诗经-邶风》课件
- 月度行政工作总结
- 精装工程师年终总结演讲
- 事故后的安全培训计划课件
- 粉蓝渐变色汇报
- 事业单位负债
- 事业单位安全规程培训课件
- 2025文具用品采购合同范本格式
- 电气检修生产安全培训课件
- 《2025新版检验检测机构管理评审报告》
- 2025劳动教育考试试题及答案
- 江苏省南通市如皋市2025-2026学年高三上学期开学考试数学试卷
- GB/T 14486-2008塑料模塑件尺寸公差
- 《国际公法》全册配套完整课件
- 第三单元名著导读《朝花夕拾-二十四孝图》课件(15张PPT) 部编版语文七年级上册
- 特种设备管理台帐(5个台账)
- l领导干部心理健康知识讲座课件
- 经口鼻吸痰技术新版
评论
0/150
提交评论