APP下载

浅议可编程中断控制器8259A的程序设计

2012-03-15

电子世界 2012年19期
关键词:级联寄存器中断

1.引言

最初,中断技术引入计算机系统,只是为了解决快速的CPU与慢速外设之间传送数据的矛盾,随着计算机技术的发展,越来越多的功能通过中断技术来实现,如计算机的故障检测与自动处理,实时信息处理,多道程序分时操作和人机交互等。中断承载越来越多的功能,具体实现相对复杂,能熟练掌握中断控制器的工作方式就尤为重要。

2.中断

中断是指CPU在执行程序过程中,由于某种外设请求或内部事件的作用,强迫CPU停止当前正在执行的程序,专去为该事件服务,待事件服务结束后,能自动的返回到被中断的程序继续执行。中断的智慧来源于生活,如我们在看DVD时,热水烧开了,我们便暂停去处理开水,回来继续。中断需要硬件和软件协同工作,构成中断系统。中断一般分为外部中断和内部中断,外部中断亦称硬件中断,又分为不可屏蔽和可屏蔽中断,分别通过CPU的NMI和INTR引脚提出请求;内部中断又称软件中断,是内部程序调试、程序异常和程序设计需要主动设置的必要中断,但对CPU来说,中断只有一种,处理过程都是去执行一个中断服务程序。

3.8259A及中断处理过程

3.1 8259A芯片

为了帮助CPU管理中断,Intel公司为80X86CPU专门设计了可编程中断控制器,该芯片有很强的中断管理功能,单片8259A可以管理8级外部中断,并对中断可以有效屏蔽、多个中断进行判优、嵌套、多种结束方式的管理,该芯片还提供级联,并且与CPU相连不需要任何额外电路。

3.2 中断处理过程

中断处理过程通常由中断请求、中断应答、判优,执行中断及返回多个环节构成,下面结合8259A的内部结构图来描述该过程:

8259A内部结构图如图1所示。

中断请求:外部中断请求通过电平或跳变触发时,通过IRi引脚记录,再通过IMR寄存器过滤,有允许的中断时通过INT引脚向CPU发出请求;

中断应答:当IF=1,且CPU执行完当前指令时检测INT引脚,如果有请求,给出请求应答信号;

判优:8259A收到应答信号之后,对IRi进行优先级的判断,将优先级最高的请求送ISR,8259A的优先级管理是众多工作方式的一种,通过OCW2进行设置;

执行中断:所有过程都为了执行中断做准备,中断服务程序可以是系统的,也可以是用户编写的,都需要妥善安排中断向量,这个过程也体现8259A管理中断的灵活性;

返回:中断服务程序执行完毕,返回原先被中断的程序上继续执行。

以上过程是连续的,需要软硬件协作完成,硬件依赖电路,软件依赖程序。

图1 8259A内部结构图

4.8259A程序设计要点

8259A的工作方式设定及运行中的控制,均由8086发来的命令字(1byte代码)决定。命令字分初始化命令字和操作命令字两种,系统向8259A两个端口之一写入,由于8259A受端口选择线A0的限制,片内寄存器只能使用两个端口地址,因此多个寄存器使用相同端口,为了区别不同寄存器,一些寄存器的设置了特征位,8259A根据接收命令字的端口号特征位及顺序决定命令字的属性,具体说来,ICW(Initialization Command Word)有严格的接收顺序的要求,OCW(Operation Command Word)有端口号的要求。

4.1 初始化过程

初始化命令字有四个:ICW1~ICW4,有接收顺序要求,关于每一个初始化命令字的具体含义本文不再赘述,以流程图的形式给出初始化过程:

8259A初始化过程如图2所示。

图2 8259A初始化过程

首先对芯片本身进行初始化,即触发方式,是否级联等,因涉及硬件设置需要提前安排,在第一步ICW1中完成设置,之后更换成奇地址,在ICW2中预置中断类型码,这里只给出高5位,D2~D0位取决于IR0~IR7中哪一个中断,组合以后的ICW2送CPU;ICW3用来设置多片级联,如果没有直接进入ICW4,如果有级联,需要在主从片初始化过程中分别写ICW3,并将二者级联位置对应;ICW4主要用来设置中断结束方式。

初始化过程涉及到中断系统的软硬件的诸多问题,一旦完成初始化,相应硬件和中断服务程序也会受其制约,所以需要对中断系统的全局有控制能力的程序员完成初始化工作,在80X86系统中,对系统的8259A的初始化编程在系统启动以后BIOS自动完成,用户在使用过程中不能对再对其进行初始化操作。

4.2 8259A命令字

操作命令字有三个,OCW1用于设置中断屏蔽,OCW2用于设置中断优先级和中断结束方式字,OCW3用于设置和清除特殊屏蔽方式和读取寄存器状态。

OCW1比较容易理解,用来设置中断屏蔽,写入IMR中,完成对外部中断信号屏蔽的作用;

OCW2相对复杂,具体格式如下:

该命令字涉及判优和结束中断两种工作方式,而且在特殊方式下需要和D2~D0位配合,情形相对复杂,大多数程序员需要参看R,SL,EOI的组合功能表来确定工作方式,我们从优先级和中断结束方式本身来看设计者在OCW2中体现出的智慧,深刻理解该命令字。

该控制字R位表示优先级的“循环”控制,EOI表示结束方式,单从控制的角度,只需要这两位配合有4种组合:00、01、10、11,分别表示优先级不循环且自动结束、优先级不循环但发结束命令、设置优先级循环但不发结束命令、优先级循环且发结束命令。从工作方式的角度,8259A优先级分为固定优先级和循环优先级,固定优先级还分为普通全嵌套方式和特殊全嵌套方式,循环优先级也分为自动循环和特殊循环,这样我们发现仅用一位R来设置只能表示两种情况,所以根据具体含义,设计者引入SL,即set level,凡是涉及“特殊方式”的都需要将SL位置1与D2~D0位配合,这样来表述这四种优先级方式;另外关于结束方式,分成两类:中断自动结束和中断非自动结束,其中非自动结束还包括普通和特殊两种,同前,特殊的含义是需要额外指定某一级中断的,这三种方式也不能用EOI一位就表示清楚,所以也需要SL配合,这里的SL就成了身兼二职,如果SL不生效,那么R和EOI都是常规方式,所以SL一旦生效,程序员一定要清楚和R配合还是和EOI配合,为了不混淆,R|SL|EOI为全1的状态被固定成“特殊优先级循环方式的初始队列最低优先级”,即SL指定的D2~D0位配合的是R,而不是EOI。

OCW3的ESMM是SMM的“使能”位,所以ESMM位为0,SMM无效;ESMM为1,SMM分两种情况,为0取消特殊屏蔽,为1设置特殊屏蔽。另外CPU可以通过读内部寄存器来了解8259的工作状态,RR为1表示读寄存器,具体读哪一个寄存器,由RIS指定,RIS取1,读ISR,RIS为0时,读IRR。

5.结语

通过以上对初始化过程和操作命令字的解析,将8259A的编程过程进行有效梳理,并且在程序设计中将中断的各个环节固化下来,通过深刻透彻的理解8259A的各种工作方式来了解如何通过程序来完成中断的软硬件的有效配合。

[1]马群生,温冬婵.微计算机技术[M].清华大学出版社,2011.

[2]张凡,盛珣华.微机原理与接口技术[M].清华大学出版社,2010.

[3]李相俭.浅谈可编程中断控制器[J].科技信息,2010,10:219.

[4]司海峰.中断控制器8259A操作命令字OCW2高三位组合细探[J].科技创新导报,2008(02):17-18.

猜你喜欢

级联寄存器中断
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
基于FPGA的中断控制器设计*
跟踪导练(二)(5)
千里移防,卫勤保障不中断
级联LDPC码的STBC-OFDM系统
基于级联MUSIC的面阵中的二维DOA估计算法
LCL滤波器在6kV级联STATCOM中的应用
H桥级联型STATCOM的控制策略研究
FPGA内嵌PowerPC的中断响应分析