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送出相应的编码给从片,告诉从片该中断请求被允许
  •  IR7IR0中断请求输入信号,由外设输入。上升沿(边沿触发方式)或高电平(电平触发方式)表示有中断请求到达。
  • VCC:+5V电源输入信号。   
  • GND:电源地
   2)内部组成

       从图中可以看到,一个8259A芯片的组成可以分为5个主要的逻辑控件:中断屏蔽寄存器(IMR)、中断请求寄存器(IRR)、优先级仲裁单元(Prioriry Resolver)、中断向量寄存器(ISR)和控制逻辑单元(Control Logic)。一个8259A芯片有IRQ0~IRQ7七个IRQ引脚,一个IRQ对应着一个中断号,一个中断号对应着一个中断向量,一个中断向量对应着一个中断处理子程序(ISR,注意这个ISR是Interrupt Service Routine的缩写)
   3)x86计算机PIC组成
   x86计算机PIC有2片8259A芯片级联组成,一颗称作master、一颗称作slave,可以接收15个中断源(一个8259A芯片的可以接最多8个中断源),两个8259A芯片级连如下图所示。
       8259A是可编程中断控制器,可以通过端口0x20(主芯片端口号)、0xA0(从芯片端口号),对两片PIC进行配置,BIOS程序可通过写该控制器控制IRQ中断线对应的中断向量号(INT 号,通过配置8259A中寄存器可设置IRQ0对应的中断向量号(INT值),IRQ1、IRQ2。。。IRQ7对应的中断向量号依次加1,IRQ8~IRQ15对应的中断向量号采用同样的方法。(虽然可以动态改变IRQ对应的中断号,但是约定俗成的是IRQ0对应中断向量号为0x08、IRQ1对应0x09。。。
4)中断响应过程
      也许你已经对硬件级的中断处理过程猜到个大概了,当一个IRQ接收到一个外部中断信号后处理的流程应该是以下几个步骤:

      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步。


      5)x86系统中断源及中断向量号(INT xx

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 中断







0 0
原创粉丝点击