下冰雹 · 2023年08月01日

万字长文玩转中断:从硬件看中断之8259A

前言

前面是借助8088这个基础的中断控制器,让我们对中断的硬件电路有了基础的认知,这里我们来看两个当下非常常用和流行的中断。

(感谢前辈们的优秀书籍与博客)

1、中断控制器8259A

在中断控制过程中,中断源的识别和优先权的确定可以用硬件排队电路等实现,Intel 8259A可编程中断控制器就是为完成这些任务而设计的一种器件。(之前看中断总会看到这个控制器,现在总算知道踏实干什么的了)

它不是I/O接口,而是一种中断管理芯片,统称PIC(Programmable Interrupt Controller)。

8259A可编程中断控制器用来管理8级优先中断,并可将多个8259A级联起来,构成64级中断优先级管理系统,而无需外加电路;

它具有多种工作方式,CPU可以通过编程设定或改变它的工作方式;

CPU响应中断时,8259A能自动提供中断入口地址,而使CPU转向相应的中断处理程序。

中断入口地址可以由用户设定,且入口地址可以选定在任何存储单元。

8259A的主要功能为:

  • ① 具有8级优先权控制,通过芯片级联可扩展至64级优先权控制。
  • ② 每一级中断均可通过编程屏蔽或允许。
  • ③ 在中断响应周期可提供相应的中断类型号。
  • ④ 有多种工作方式,可通过编程选择。
  • ⑤ 可与CPU直接连接,不需外加硬件电路。

1 8259A的内部结构

8259A采用NMOS工艺,只需要单一的+5V电源,它的内部电路为静态电路,因此不需要时钟输入,其内部结构如图12所示。

image.png
8259A内部结构

1.数据总线缓冲器

数据总线缓冲器是三态、双向、8位的缓冲器,D7~D0用于和CPU的数据总线连接, CPU通过数据总线缓冲器向8259A传送命令码,或从8259A读取状态字。

在中断响应时, 8259A通过数据总线缓冲器向CPU提供CALL指令的操作码和调用子程序入口地址的低8位和高8位,以及中断类型码。

2.中断请求寄存器(IRR)

中断请求寄存器用来寄存所有IR输入线输入的中断请求信号,即保存正在请求服务的中断级。有一个请求输入线就有一个触发器来保存相应的状态,共有IR0~IR7 8条输入线,连接8个I/O设备的中断请求信号。

当IR0~IR7中的某一条请求线上升为高电平时,IRR中的相应位置“1”。

3.优先权电路

优先权电路的主要作用是确定中断请求寄存器IRR中各位的优先级,并确定能否向CPU申请中断。当IRR中有中断请求触发器置位时,优先权电路就选出其中的未被屏蔽的最高优先级,并对该优先级编码;然后再按照一定的优先级方式同中断服务寄存器(ISR)中的最高优先级相比较,以便确定最终有无向CPU申请中断的资格。若可以申请中断,则CPU响应中断请求;发来第一个INTA脉冲时,将级别最高者放入中断服务寄存器(ISR)中的相应位置。

4.中断服务寄存器(ISR)

中断服务寄存器(ISR)的主要作用是保存当前被CPU服务的中断级,也就是记录正在被处理的中断请求。当某一级中断被CPU响应,并执行它的中断服务程序时,中断服务寄存器ISR中的相应位置“1”,并一直保持该状态(非自动结束中断方式),直到CPU发出结束中断命令EOI为止。

在中断嵌套情况下,ISR中会有多个位被置“1”。在CPU响应中断,发出第一个INTA时,最高优先级的状态在ISR中相应位置“1”,同时该位的编码写入中断向量寄存器的低3位(高5位由初始化编程时写入),以备在第二个INTA到来时送出对应的中断类型号。

image.png
8259A内部结构

5.中断屏蔽寄存器(IMR)

中断屏蔽寄存器的主要作用是对各中断源的中断请求信号(IR0~IR7)实现开关控制。这个寄存器中保存对输入请求线上的屏蔽信息,这些信息是由CPU送给8259A的操作命令OCW1来设定的。当某位为“1”时,表示禁止相应的中断请求进入优先权电路。

6.控制逻辑

控制逻辑内部包括内部控制电路、中断控制电路、初始化命令寄存器组和操作命令寄存器组,它根据CPU对8259A编程设定的工作方式产生8259A内部控制信号,并根据中断请求寄存器(IRR)和优先权电路的判别结果,在适当时候向CPU发生中断请求信号,并接收CPU发来的中断响应信号INTA,控制提供中断类型号。

7.读/写逻辑

接收CPU来的控制信号,包括端口控制信号A0和CS、数据方向控制信号RD和WR。控制将CPU送来的初始化命令ICW和操作命令OCW存入8259A内部相应的寄存器,用以规定8259A的工作方式。

8.级联缓冲/比较器

一片8259A最多可构成八级中断(IR0~IR7),要想扩展中断源,必须多片连在一起,即采用级联方式。级联缓冲/比较器的功能有两个,一是提供级联控制,二是提供缓冲控制。CAS2~CAS0用于提供级联信号,主片输入,从片输出。

对于8088 CPU而言,8259A的工作过程是:

  • ① 某一条或某几条中断请求线(IR0~IR7)有中断申请,变为高电平,使中断请求寄存器(IRR)的相应位置“1”。
  • ② IMR对IRR屏蔽。未被屏蔽的请求信号经优先权电路判别最高优先级,再经由优先级方式确定没有更高级优先权的中断,则8259A的INT端输出为“1”,向CPU提出中断请求。
  • ③ CPU响应中断后发出中断响应信号。在中断响应过程中,CPU要发出两次INTA信号。当8259A收到第一个INTA信号后,ISR中当前被选中的最高优先级对应的那一位置“1”,同时IRR中的相应位被清“0”,表示该位上的中断请求已被CPU所接受。
  • ④ 8259A收到第二个INTA信号后,驱动数据总线将对应的中断类型码输出。
  • ⑤ 如果是自动结束中断方式(AEOI),则在第二个INTA脉冲结束时将ISR中置“1”的位复位,否则该位的“1”将一直保持,直到CPU发出EOI命令为止。

2 8259A的引脚功能

8259A是一个28引脚的双列直插式芯片,其引脚信号可参见图7-12。

  • ① D7~D0:双向三态数据总线,8位,用于传送控制和状态信息、中断向量、中断类型码等。
  • ② IR7~IR0:中断请求输入信号,8级中断源。一般情况下,IR7的中断优先级别最低,而IR0的中断优先级别最高。能够使IRR的相应位置“1”的IRi的有效状态有两种,可用命令来设定。

    • 其一是边沿触发,即IR必须由低变高产生一个跳变才能使IRR相应位的触发器置“1”,提出中断请求;
    • 其二是电平触发,即只要IR是一个高电平即可。边沿触发具有锁存中断源中断请求信号的能力,只要有一次跳变,IRR就能锁存中断请求状态,而与中断源无关。而在电平触发方式中,IRR不能锁存中断源的中断请求状态,即在中断响应之前,中断源必须有能力保持中断请求信号为高电平,否则将视为自行撤销中断请求。
  • ③ RD:读信号,输入。当RD=0时,8259A将状态信息送至数据总线供CPU使用。
  • ④ WR:写信号,输入。当WR=0时,8259A接收数据总线上CPU传来的数据。
  • ⑤ CS:片选信号,输入,低电平有效。当CS=0时8259A被选中,允许CPU对8259A进行读/写操作;CS=1时芯片未被选中。
  • ⑥ A0:地址线,输入。该信号与CS、RD、WR一起用来选择8259A的内部寄存器。该信号通常直接连到地址总线的A0,8259A用该信号控制接收CPU的命令字或向CPU发状态信息。

    • 8259A有4个初始化命令字和3个操作命令字,共需要7个寄存器,但却只有一条地址线A0,只能有2个端口地址,即一个奇地址和-个偶地址,所以7个寄存器只好公用2个地址,并以读/写顺序和命令字特征码加以区别。
  • ⑦ INT:中断请求信号,输出。只要8259A的中断逻辑判定中断请求信号有效,就在这个引脚上产生一个高电平,可接到CPU的中断输入端。
  • ⑧ INTA:中断响应信号,输入,是来自于CPU的响应脉冲,8259A根据ISR中的置位情况提供相应的中断类型码。8259A在第二个INTA时向CPU提供的中断类型码的高5位是用户在程序中规定的,而低3位则是由8259A自动产生的。
  • ⑨ VCC,GND:电源(+5V)和地。
  • ⑩ CAS0~CAS2:级联信号,双向,形成8259A的专用总线,以便构成多片8259A的级联结构。当8259A是主片时,CAS0~CAS2是输出线,在CPU响应中断时,输出被选中的从片代码。

    • 当8259A是从片时,CAS0~CAS2是输入线,在CPU响应中断时,接收主片送出的被选中的从片代码,然后在从片内将接收来的代码与本从片代码相比较,看是否一致,从而确定CPU响应的是不是本从片的中断请求。
  • [11] 非SP/非EN:从片编程/允许缓冲器信号,双向,低电平有效、双重功能引脚。当工作在缓冲器方式时,它是输出信号,用做允许缓冲器接收和发送的控制信号(非EN),即启动8259A至CPU之间的数据总线缓冲器。如图13所示,8259A通过总线缓冲器8286(或者用74245)与系统数据总线连接,控制8286的传送方向。当工作在非缓冲器方式时,它是输入信号,用来指明系统中的8259A究竟是作为主片工作(非SP/非EN=1)的,还是作为从片工作(非SP/非EN=0)的,要由程序命令来设定。缓冲器方式适合于8259A的级联。

image.png

3 8259A的工作方式

中断控制器8259A有四种主要的工作方式:

  • 全嵌套、
  • 循环优先级、
  • 特定屏蔽
  • 程序查询方式;

还有四种从属的工作方式:

  • 中断结束方式、
  • 读状态、
  • 中断请求触发方式
  • 缓冲器方式。

另外,它还被分为两大工作类型,即

  • 单片工作
  • 多片级联工作。

1.全嵌套方式

这是一种最普通的工作方式。8259A在初始化工作完成后若未设定其他的工作方式,就自动进入全嵌套方式。这种方式的特点是:

  • ① 中断请求的优先级固定,其顺序是IR0最高,依次降低,IR7最低。
  • ② 中断服务寄存器(ISR)保存优先权电路确定的优先级状态,相应位置“1”,并且一直保持这个服务“记录”状态,直到CPU发出中断结束命令为止。
  • ③ 在ISR置位期间,不再响应同级及较低级的中断请求,而高级的中断请求如果CPU开放中断的话仍能够得到中断服务。
  • ④ IR7~IR0的中断请求输入可分别由中断屏蔽寄存器(IMR)的相应位(D7~D0)屏蔽与允许,对某一位的屏蔽与允许操作不影响对其他位的中断请求操作。

全嵌套工作方式由ICW4的D4=0来确定。

2.循环优先级方式

循环优先级方式是8259A管理优先级相同的设备时所采用的中断管理方式,它包括自动循环优先级方式和特殊循环优先级方式。

  • (1)自动循环各 设备优先级相同,当某一个设备受到服务之后,它的优先级就自动地排到最后。所谓各设备优先级相同,是指它们的地位相同,受服务的机会均等,但是毕竟各中断源的优先级需要排出一个顺序,否则同时有多个中断源申请中断时计算机无法处理,于是排出的优先级由高到低的顺序为:

image.png

这是一个循环套,有一个最低优先权指针,哪一台设备刚被服务后,它就被赋予最低优先权指针。例如,IR7刚被服务,它就被赋予最低优先权指针,按照循环顺序,IR0的优先级就是最高优先级;如果IR4刚被服务,IR4就被赋予最低优先权指针,按照优先级循环顺序,IR5的优先级就最高。这样,当一台设备提出中断请求后,在最不利的情况下(此时它的优先级最低),待其他7台设备被轮流服务一次以后,它变为最高优先级,从而得到系统的服务。但是如果不是在循环优先级方式下(包括自动循环和特殊循环)工作,它可能永远得不到系统的服务。

自动循环优先级方式由OCW2的R=1、SL=0来确定。

  • (2)特殊循环

特殊循环优先级方式与自动循环优先级方式的不同之处在于:在自动循环优先级方式中,某一设备在被服务之后被确定为最低优先级;而在特殊循环优先级方式中,通过编程来确定某一设备为最低优先级。如IR5被指定为最低优先级,则IR6的优先级最高。特殊循环优先级方式由OCW2的R=1、SL=1来确定,L2L1L0用于指定最低优先级的二进制编码。

一般来说,在命令控制字中,凡是采用“L2L1L0”的都有“特殊”的含义。

3.特定屏蔽方式

8259A的每个中断请求输入信号都可由中断屏蔽寄存器(IMR)的相应位进行屏蔽, IMR的D0对应IR0,D1对应IR1…… D7对应IR7。相应位为“1”则屏蔽中断输入,相应位为“0”则允许中断输入。IMR寄存器由操作命令OCW1进行设置。对中断请求输入信号的屏蔽方式一般有两种:正常屏蔽方式和特定屏蔽方式。

在正常屏蔽方式中,每一个屏蔽位对应一个中断请求输入信号,屏蔽某一个中断请求输入信号对其他请求信号没有影响,未被屏蔽的中断请求输入信号仍然按照设定的优先级顺序进行工作,而且保证当某一级中断请求被响应服务时,同级和低级的中断请求将被禁止。如果CPU允许中断,则高级的中断请求还会被响应,实现中断嵌套。

特定屏蔽方式也叫特殊的中断屏蔽方式,当设定了特定屏蔽方式后,IMR中为“1”的位仍要屏蔽相应的中断请求输入信号,但所有未被屏蔽的位被全部开放,无论优先级别是低还是高,都可以申请中断,并且都可能得到CPU的响应并为之服务。也就是说,这种方式抛弃了同级或低级中断被禁止的原则,任何级别的未被屏蔽的中断请求都会得到响应,所以,可以有选择地设定IMR的状态,开启需要的中断输入。

特定屏蔽方式由OCW3的ESMM和SMM确定,设定时ESMM=1、SMM=1,复位时ESMM=1、SMM=0。

4.程序查询方式

程序查询方式不使用中断,是用软件寻找中断源并为之服务的工作方式。在这种方式下,8259A不向CPU发送INT信号(实际上是8259A的INT信号不连到CPU的INTR信号上),或者CPU关闭自己的中断允许触发器,使IF=0,禁止中断输入。申请中断的优先级不是由8259A提供的中断类型码而是由CPU发出查询命令得到的。

查询时,CPU先向8259A发出查询命令,8259A接到查询命令后,就把下一个IN指令(对偶地址端口的读指令)产生的RD脉冲作为中断响应信号,此时,若有中断请求信号,则在ISR中相应位置“1”,并把该优先级送至数据总线。在RD期间8259A送至数据总线供CPU读取查询的代码格式为:

image.png

其中,I是中断请求标志,I=1表示有中断请求,此时W2W1W0有效,W2W1W0就表示申请服务的最高中断优先级。I=0表示没有中断请求,此时W2W1W0无效。例如读入的查询代码是83H,则表示有中断请求,申请中断的优先级输入是IR3。

在查询方式下,CPU不需执行中断响应周期,不必安排中断向量表,8259A能自动提供最高优先级中断请求信号的二进制代码,供CPU查询。该方式使用方便,可扩充中断优先级数目,扩充数目超过64级以上(此时不是中断级联方式,而是一般的端口连接。在查询时,只涉及8259A端口地址。显然,在查询方式下,能够扩展的8259A的数目仅限于系统的I/O空间容量)。

查询方式是由OCW3的P=1来确定的。

5.中断结束方式

所谓中断结束方式是指中断如何结束的方法,这里的“结束”不是指中断服务程序的结束。中断服务程序的结束用IRET指令就可完成,这里的“结束”是指如何和何时使8259A中的ISR中的相应位清0。ISR中某位为“1”,表示CPU正在为之服务;某位为“0”表示CPU已经停止(结束)为之服务。而IRET指令主要是恢复程序的断点,它并不能使ISR的相应位清0。

8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI)。

  • (1)自动结束

在自动中断结束(AEOI)方式下,8259A自动地在最后一个INTA中断响应脉冲的后沿将中断服务寄存器ISR中的相应位清0。这种方式的过程是:中断请求,CPU响应,发第一个INTA,ISR相应位置“1”, CPU发第二个INTA,8259A提供中断类型码,ISR相应位清0,结束。显然,ISR的相应置“1”位在CPU中断响应周期内自生自灭,因此在ISR中不会有两个或两个以上的置“1”位。

自动中断结束方式(AEOI)的应用场合一般是,8259A单片系统,或不需要嵌套的多级中断系统。AEOI方式只能用于主片8259A,不能用于从片8259A。

自动中断结束方式由ICW4的AEOI=1确定。

  • (2)命令结束命令中断结束方式(EOI)是在中断服务程序返回之前,向8259A发中断结束命令(EOI),使ISR中的相应位清0。它包括两种情况:
  • ① 非特殊EOI命令:全嵌套方式下的中断结束命令称为非特殊EOI命令,该命令能自动地把当前ISR中的最高优先级的那一位清0。非特殊EOI命令是由OCW2的R=0、SL=0、EOI=1确定的。
  • ② 特殊EOI命令:非全嵌套方式下的中断结束命令称为特殊EOI命令。在非全嵌套方式下,由于无法确定最后响应的是哪一级中断(非全嵌套方式的各中断源没有固定的优先级别,因此也就不知道谁高谁低),所以应向8259A发出特殊EOI命令,即指定哪一级中断返回,使其ISR中的相应位清0。特殊EOI命令是由OCW2的R=0、SL=1、EOI=1确定的,由L2L1L0指定ISR中要复位的相应位的二进制编码。

6.读8259A状态

读8259A的状态是指读8259A内部的IRR、ISR和IMR的内容。

  • ① 读IRR:先发出OCW3命令(使RR=1, RIS=0,地址A0=0),在下一个RD脉冲到来时可读出IRR,其中包含尚未被响应的中断源情况。
  • ② 读ISR:先发出OCW3命令(使RR=1, RIS=1,地址A0=0),在下一个RD脉冲到来时可读出ISR,其中包含正在服务的中断源情况,从中也可看出中断嵌套情况。
  • ③ 读IMR:不必先发OCW3,只要读出奇地址端口(A0=l),即可读出IMR,其中包含设置的中断屏蔽情况。

7.中断请求触发方式

8259A的中断请求寄存器IRR中有8个中断请求触发器,分别对应8个中断请求信号的输入端IR0~IR7。这些触发器的触发方式有两种,即边沿触发和电平触发。

  • (1)边沿触发 当输入端有从低电平到高电平的正跳变时,则产生中断请求(IRR中相应位的触发器被触发置“1”,而不是直接向CPU申请中断)。此后,即使输入端仍然保持高电平也不会再产生中断。也就是说,只有正跳沿才能产生中断。

边沿触发方式由ICW1的LTIM=0确定。

  • (2)电平触发

当输入端为高电平时产生中断请求(只要为高电平就可以,不需要脉冲跳变)。但需要注意的是,在电平触发方式下,在发出EOI命令以前,或CPU开放中断以前,必须去掉中断请求信号(使其变为低电平),否则将产生第二次中断。

电平触发方式由ICW1的LTIM=1确定。

8.缓冲器方式

所谓缓冲器方式就是在8259A和数据总线之间挂接总线驱动器的方式。在缓冲器方式下,SP/EN引脚将使用EN功能,并使之输出一个有效低电平,开启缓冲器工作。该方式多用于级联的大系统中。

缓冲器方式由ICW4的BUF=1确定。

9.特殊的全嵌套方式

该方式适用于多片级联,且必须将优先级保存在各从片8259A中的大系统。该方式与普通的全嵌套方式的工作情况基本相同,有两点区别:

  • ① 当某从片的一个中断请求被CPU响应后,该从片的中断仍未被禁止(即没有被屏蔽),即该从片中的高级中断仍可提出申请。(全嵌套方式中这样的中断是被屏蔽的,因为这种中断对从片而言后者是高级中断,可以嵌套,但对主片而言,由于它们来自于同一个从片,故中断优先级相同,而在全嵌套方式中,同级和低级中断是被禁止的。)
  • ②在某个中断源退出中断服务程序之前,CPU要用软件检查它是否是这个从片中的唯一中断。检查的办法是:送一个非特殊的中断结束命令(EOI)给这个从片,然后读它的ISR,检查是否为0,若为0则唯一,即只有这一个中断在被服务,没有嵌套;若不为0则不唯一,说明还有其他的中断在被服务,该中断是嵌套在其他中断里的。只有唯一时,才能把另一个非特殊EOI命令送至主片,结束此从片的中断。否则,如果过早地结束主片的工作记载而从片尚有未处理完的嵌套中断的话,整个系统的中断嵌套环境就会混乱。特殊的全嵌套方式由ICW4的SFNM=1确定。

10.多片级联方式

在级联系统中,每个从片的中断请求输出线INT直接连到主片的某个中断请求输入线上,主片的CAS0~CAS2是输出线,输出被响应的从片代码,从片的CAS0~CAS2是输入线,接收主片发出的从片代码,以便与自身代码相比较。级联方式的要点如下:

  • ① 一个8259A主片至多带8个从片,可扩展至64级。
  • ② 缓冲方式下,主片和从片的设定由ICW4的M/S位确定,M/S=1是主片,M/S=0是从片。M/S的状态在BUF=l时有意义。
  • ③ 在非缓冲方式下,主片和从片由SP/EN引脚的SP功能确定,SP=1是主片,SP=0是从片。
  • ④在级联系统中,主片的三条级联线相当于从片的片选信号,从片的INT是主片的中断请求输入信号。
  • ⑤ 主片和从片需要分别进行初始化操作,可设定为不同的工作方式。

级联方式由ICW1的SNGL=0确定。

上述的各种工作方式中,全嵌套方式、自动中断结束方式、中断请求触发方式、缓冲器方式、特殊的全嵌套方式、级联方式等是由初始化命令字ICW来设定的

而循环优先级方式、特定屏蔽方式、查询方式、命令中断结束方式、读8259A状态等是由操作命令字OCW来设定的

4 8259A的编程

8259A是一个可编程器件。为了使8259A实现预定的中断管理功能,并按预定的方式工作,就必须对它进行初始化编程。所谓初始化编程是指系统在上电或复位后对可编程器件进行控制字设定的一段程序。8259A的命令控制字包括两个部分,即初始化命令字和操作命令字。

初始化命令字一般在系统复位后的初始化编程中设置,用于确定8259A的基本工作方式,设置以后一般保持不变。操作命令是在初始化以后的正常工作中写入的,它实现对8259A的状态、中断方式和过程的动态控制,在工作中可随时写入操作命令字以修改某些控制方式。

8259A内部有7个寄存器,分为两组:初始化命令寄存器组和操作命令寄存器组。初始化命令寄存器组包括4个寄存器:ICW1~ICW4对应的寄存器。操作命令寄存器组包括3个寄存器:OCW1~OCW3对应的寄存器。

由于8259A只有一条地址线A0,所以它只能有两个端口地址;而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施:第一,以端口地址区分;第二,把命令字中的某些位作为特征码来区分;第三,以命令字的写入顺序来区分。

在PC/XT中,8259A的两个端口地址分别为20H和21H。下面具体讨论8259A的命令字。

1.初始化命令字

初始化命令字有4个:ICW1~ICW4。8259A在进入正常工作之前,必须将系统中的每一个8259A进行初始化设置,以此建立8259A的基本工作条件。

写入的初始化命令字一般为2~4个(在某些条件下,4个初始化命令字并非必须全部写入),最多为4个,然而,ICW1使用偶地址,而ICW2、ICW3、ICW4 都使用奇地址。为了相互区别,初始化命令字的写入必须有一个固定的顺序,其顺序如图14所示。

image.png
8259A的ICW写入顺序

系统上电或复位以后,对8259A第一件要做的工作就是按图7-14的顺序写入初始化命令字。

初始化命令字格式如图7-15所示。初始化命令字ICW1的主要功能是:确定级联方式,触发方式。写入ICW1后,8259A内部自动复位,其复位功能为:

  • ① 初始化命令字顺序逻辑重新置位,准备接收ICW2~ICW4。
  • ② 清除IMR和ISR。
  • ③ IRR状态可读。
  • ④ 优先级排队,IR0最高,IR7最低。
  • ⑤ 特殊屏蔽方式复位。
  • ⑥ 设定中断请求信号由低变高的边沿触发有效。
  • ⑦ 自动EOI循环方式复位。

初始化命令字ICW2的主要功能是:

  • 确定中断向量,
  • 中断类型码。

初始化命令字ICW3的主要功能是:确定主片/从片的级联状态,即确定主片的连接位和从片的编码。

初始化命令字ICW4的主要功能是:选择CPU系统,确定中断结束方式,规定是主片还是从片,选择是否采用缓冲方式。

初始化命令字一定要在系统复位后首先写入8259A,写入时要严格按照图15的顺序,不允许颠倒。

image.png

写完初始化命令字后,8259A已经建立了基本的工作环境,可以接受中断请求,也可以写入操作命令字OCW来改变某些中断管理方式。

操作命令字可以随时写入、修改,但初始化命令字一经写入一般不再改动。

如果在写入初始化命令字后不写入操作命令字,则8259A便处于全嵌套工作方式,即中断优先级为IR0最高,IR7最低,禁止同级及低级中断,高级中断可嵌套处理。

2.操作命令字

在初始化命令字写入8259A之后,8259A就准备接收中断请求输入信号了。

在8259A工作期间,CPU可以随时通过操作命令字使8259A完成各种不同的工作方式。8259A有三种操作命令字:OCW1、OCW

5、总结

这个系列主要是学习中断的硬件结构,关于C语言怎么是实现一个中断的流程我这里就不涉及了,后续会写专门的来学习一下。

看完这篇文章,现在对于下面的两个问题你能回答出来吗?

  1. 试说明8259A芯片的主要功能。
  2. 8259A芯片是一种什么类型的芯片?
  3. 试说明8259A的体系结构。

6、参考内容

  • 《计算机硬件技术基础》
  • 《汇编语言与接口技术》
作者:Hcoco
文章来源:TrustZone

推荐阅读

更多IC设计干货请关注IC设计专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
19462
内容数
1300
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息